latest changes for findByIdentifier service
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / ReferenceServiceImpl.java
index a12a916025f561bfd0eb3d3f4e6d33743cab6191..fc922fb0a6b4cda48ef9f33f83f136ba464128a0 100644 (file)
 package eu.etaxonomy.cdm.api.service;\r
 \r
 import java.util.List;\r
+import java.util.Set;\r
+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
 import org.springframework.transaction.annotation.Transactional;\r
 \r
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;\r
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
+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
+import eu.etaxonomy.cdm.persistence.dao.common.ICdmGenericDao;\r
 import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao;\r
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;\r
 \r
@@ -33,7 +40,9 @@ import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 public class ReferenceServiceImpl extends IdentifiableServiceBase<Reference,IReferenceDao> implements IReferenceService {\r
        \r
        static Logger logger = Logger.getLogger(ReferenceServiceImpl.class);\r
-\r
+         \r
+       @Autowired\r
+private ICdmGenericDao genericDao;\r
        /**\r
         * Constructor\r
         */\r
@@ -52,6 +61,14 @@ public class ReferenceServiceImpl extends IdentifiableServiceBase<Reference,IRef
                }\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
@@ -80,5 +97,16 @@ public class ReferenceServiceImpl extends IdentifiableServiceBase<Reference,IRef
                \r
                return taxonList;\r
        }\r
-\r
+       \r
+       @Override\r
+       public DeleteResult delete(Reference reference) {\r
+               //check whether the reference is used somewhere\r
+               DeleteResult result = isDeletable(reference, null);\r
+               \r
+               if (result.isOk()){\r
+                       dao.delete(reference);\r
+               }\r
+               \r
+               return result;\r
+       }\r
 }\r