ref #6730: only media of descriptions and protologues can be deleted if referenced
authorKatja Luther <k.luther@bgbm.org>
Tue, 15 Mar 2022 08:36:02 +0000 (09:36 +0100)
committerKatja Luther <k.luther@bgbm.org>
Tue, 15 Mar 2022 08:36:02 +0000 (09:36 +0100)
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/MediaServiceImpl.java

index 6b9a17d79ee86f3ce17d99760040c6dfec471f87..d46cda6db7dd69259fc64449e1a2ff83269d34aa 100644 (file)
@@ -35,6 +35,7 @@ import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.ICdmBase;\r
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
 import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
 import eu.etaxonomy.cdm.model.description.IDescribable;\r
 import eu.etaxonomy.cdm.model.description.MediaKey;\r
@@ -169,6 +170,7 @@ public class MediaServiceImpl extends IdentifiableServiceBase<Media,IMediaDao> i
                         updatedObject = handleDeleteMedia(media, textData, description,\r
                                 (IDescribable)objectToUpdate);\r
                     } else {\r
+                       \r
                         // this should not be happen, because it is not deletable. see isDeletable\r
                         result.setAbort();\r
                     }\r
@@ -181,6 +183,7 @@ public class MediaServiceImpl extends IdentifiableServiceBase<Media,IMediaDao> i
                 }else if (ref instanceof MediaRepresentation){\r
                     continue;\r
                 }else {\r
+                       \r
                     result.setAbort();\r
                 }\r
 \r
@@ -222,9 +225,9 @@ public class MediaServiceImpl extends IdentifiableServiceBase<Media,IMediaDao> i
         MediaDeletionConfigurator mediaConfig = (MediaDeletionConfigurator)config;\r
         CdmBase deleteFrom = mediaConfig.getDeleteFrom();\r
 \r
-        if (mediaConfig.isDeleteFromEveryWhere()){\r
-           return result;\r
-        }\r
+//        if (mediaConfig.isDeleteFromEveryWhere()){\r
+//           return result;\r
+//        }\r
         for (CdmBase ref: references){\r
             String message = null;\r
             if (ref instanceof MediaRepresentation){\r
@@ -263,7 +266,10 @@ public class MediaServiceImpl extends IdentifiableServiceBase<Media,IMediaDao> i
                message = "The media can't be deleted from the database because it is referenced by a mediaspecimen. ("+((MediaSpecimen)ref).getTitleCache()+")";\r
                result.setAbort();\r
             }else {\r
-                message = "The media can't be completely deleted because it is referenced by another " + ref.getUserFriendlyTypeName() ;\r
+                message = "The media can't be completely deleted because it is referenced by a " + ref.getUserFriendlyTypeName();\r
+                if (ref instanceof IdentifiableEntity) {\r
+                       message += ": " + ((IdentifiableEntity)ref).getTitleCache();\r
+                }\r
                 result.setAbort();\r
             }\r
             if (message != null){\r