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 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
}\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
}\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