X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/blobdiff_plain/ff2ef28d0805d1175c5064928e78364344bf7ef7..ca3c7088bd59b1444a83b581eb37919b1b73fe24:/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TermServiceImpl.java diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TermServiceImpl.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TermServiceImpl.java index a2324dda0f..ab79534fd3 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TermServiceImpl.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TermServiceImpl.java @@ -15,6 +15,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Set; @@ -28,8 +29,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import eu.etaxonomy.cdm.api.service.UpdateResult.Status; +import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase; import eu.etaxonomy.cdm.api.service.config.TermDeletionConfigurator; import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException; +import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException; import eu.etaxonomy.cdm.api.service.pager.Pager; import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl; import eu.etaxonomy.cdm.common.monitor.IProgressMonitor; @@ -85,7 +88,7 @@ public class TermServiceImpl extends IdentifiableServiceBase> listByTermType(TermType termType, Integer limit, Integer start, + public List listByTermType(TermType termType, Integer limit, Integer start, List orderHints, List propertyPaths) { return dao.listByTermType(termType, limit, start, orderHints, propertyPaths); } @@ -97,7 +100,12 @@ public class TermServiceImpl extends IdentifiableServiceBase termsToSave = new HashSet(); - CdmBase.deproxy(dao.merge(term), DefinedTermBase.class); + DeleteResult result = isDeletable(term, config); + //CdmBase.deproxy(dao.merge(term), DefinedTermBase.class); try { //generalization of Set specificTerms = term.getGeneralizationOf(); @@ -381,6 +401,12 @@ public class TermServiceImpl extends IdentifiableServiceBase clazz, Integer stepSize, IIdentifiableEntityCacheStrategy cacheStrategy, IProgressMonitor monitor) { @@ -391,4 +417,28 @@ public class TermServiceImpl extends IdentifiableServiceBase references = commonService.getReferencingObjectsForDeletion(term); + if (references != null){ + result.addRelatedObjects(references); + Iterator iterator = references.iterator(); + CdmBase ref; + while (iterator.hasNext()){ + ref = iterator.next(); + if (ref instanceof TermVocabulary){ + result.getRelatedObjects().remove(ref); + }else{ + + String message = "An object of " + ref.getClass().getName() + " with ID " + ref.getId() + " is referencing the object" ; + result.addException(new ReferencedObjectUndeletableException(message)); + result.setAbort(); + } + + } + } + return result; + } + }