latest changes for findByIdentifier service
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / ReferenceServiceImpl.java
index ec888cbd0b767f8e186ccc21ffdb4f6c12d1ac7b..fc922fb0a6b4cda48ef9f33f83f136ba464128a0 100644 (file)
@@ -15,6 +15,7 @@ import java.util.Set;
 import java.util.UUID;\r
 \r
 import org.apache.log4j.Logger;\r
+import org.hibernate.ObjectDeletedException;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
 import org.springframework.stereotype.Service;\r
 import org.springframework.transaction.annotation.Propagation;\r
@@ -25,6 +26,7 @@ import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;\r
 import eu.etaxonomy.cdm.model.description.PolytomousKey;\r
+import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
@@ -59,6 +61,14 @@ private ICdmGenericDao genericDao;
                }\r
                super.updateTitleCacheImpl(clazz, stepSize, cacheStrategy, monitor);\r
        }\r
+       \r
+\r
+    @Override\r
+    protected void setOtherCachesNull(Reference ref) {\r
+        if (! ref.isProtectedAbbrevTitleCache()){\r
+            ref.setAbbrevTitleCache(null, false);\r
+        }\r
+    }\r
 \r
 \r
        @Autowired\r
@@ -89,15 +99,14 @@ private ICdmGenericDao genericDao;
        }\r
        \r
        @Override\r
-       public UUID delete(Reference reference) throws ReferencedObjectUndeletableException{\r
+       public DeleteResult delete(Reference reference) {\r
                //check whether the reference is used somewhere\r
-               Set<CdmBase> referencingObjects = genericDao.getReferencingObjects(reference);\r
+               DeleteResult result = isDeletable(reference, null);\r
                \r
-               if (referencingObjects.size()>0){\r
-                       \r
-                       throw new ReferencedObjectUndeletableException();\r
+               if (result.isOk()){\r
+                       dao.delete(reference);\r
                }\r
                \r
-               return reference.getUuid();\r
+               return result;\r
        }\r
 }\r