last changes for #5325
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / dataimport / transientServices / TransientClassificationService.java
index b9890789b3c4bec4e24ba9341364708ff185519d..c708ca558b74c44378d2e7c0d3f8669603bea338 100644 (file)
@@ -15,23 +15,27 @@ import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
-import org.hibernate.LockMode;
+import org.hibernate.LockOptions;
 import org.hibernate.Session;
 import org.hibernate.criterion.Criterion;
 import org.hibernate.envers.query.criteria.AuditCriterion;
 
+import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.IClassificationService;
+import eu.etaxonomy.cdm.api.service.UpdateResult;
+import eu.etaxonomy.cdm.api.service.config.CreateHierarchyForClassificationConfigurator;
+import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
-import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
+import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.ISourceable;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.LSID;
 import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;
 import eu.etaxonomy.cdm.model.media.Rights;
 import eu.etaxonomy.cdm.model.name.Rank;
@@ -42,6 +46,8 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.model.view.AuditEvent;
 import eu.etaxonomy.cdm.model.view.AuditEventRecord;
 import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
+import eu.etaxonomy.cdm.persistence.dto.MergeResult;
+import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
 import eu.etaxonomy.cdm.persistence.query.Grouping;
 import eu.etaxonomy.cdm.persistence.query.MatchMode;
 import eu.etaxonomy.cdm.persistence.query.OrderHint;
@@ -56,13 +62,13 @@ import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
  */
 public class TransientClassificationService implements IClassificationService {
 
-    private final IClassificationService defaultClassificationService;
+    private final IClassificationService defaultService;
 
     /**
      * @param defaultClassificationService
      */
     public TransientClassificationService(IClassificationService defaultClassificationService) {
-        this.defaultClassificationService = defaultClassificationService;
+        this.defaultService = defaultClassificationService;
     }
 
     /**
@@ -76,7 +82,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<AuditEventRecord<Classification>> pageAuditEvents(Classification t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultClassificationService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+        return defaultService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
     }
 
     /**
@@ -91,7 +97,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<Annotation> getAnnotations(Classification annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -101,7 +107,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public TaxonNode getTaxonNodeByUuid(UUID uuid) {
-        return defaultClassificationService.getTaxonNodeByUuid(uuid);
+        return defaultService.getTaxonNodeByUuid(uuid);
     }
 
     /**
@@ -111,7 +117,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public ITaxonTreeNode getTreeNodeByUuid(UUID uuid) {
-        return defaultClassificationService.getTreeNodeByUuid(uuid);
+        return defaultService.getTreeNodeByUuid(uuid);
     }
 
     /**
@@ -120,7 +126,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public void clear() {
-        defaultClassificationService.clear();
+        defaultService.clear();
     }
 
     /**
@@ -133,7 +139,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Classification> listClassifications(Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.listClassifications(limit, start, orderHints, propertyPaths);
+        return defaultService.listClassifications(limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -142,8 +148,8 @@ public class TransientClassificationService implements IClassificationService {
      * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
      */
     @Override
-    public void lock(Classification t, LockMode lockMode) {
-        defaultClassificationService.lock(t, lockMode);
+    public void lock(Classification t, LockOptions lockOptions) {
+        defaultService.lock(t, lockOptions);
     }
 
     /**
@@ -153,8 +159,8 @@ public class TransientClassificationService implements IClassificationService {
      * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
      */
     @Override
-    public void refresh(Classification t, LockMode lockMode, List<String> propertyPaths) {
-        defaultClassificationService.refresh(t, lockMode, propertyPaths);
+    public void refresh(Classification t, LockOptions lockOptions, List<String> propertyPaths) {
+        defaultService.refresh(t, lockOptions, propertyPaths);
     }
 
     /**
@@ -168,7 +174,7 @@ public class TransientClassificationService implements IClassificationService {
     @Deprecated
     @Override
     public TaxonNode loadTaxonNodeByTaxon(Taxon taxon, UUID classificationUuid, List<String> propertyPaths) {
-        return defaultClassificationService.loadTaxonNodeByTaxon(taxon, classificationUuid, propertyPaths);
+        return defaultService.loadTaxonNodeByTaxon(taxon, classificationUuid, propertyPaths);
     }
 
     /**
@@ -177,7 +183,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public void updateTitleCache() {
-        defaultClassificationService.updateTitleCache();
+        defaultService.updateTitleCache();
     }
 
     /**
@@ -187,7 +193,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public AuditEventRecord<Classification> getNextAuditEvent(Classification t) {
-        return defaultClassificationService.getNextAuditEvent(t);
+        return defaultService.getNextAuditEvent(t);
     }
 
     /**
@@ -202,7 +208,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<Marker> getMarkers(Classification annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -214,7 +220,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public void updateTitleCache(Class<? extends Classification> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<Classification> cacheStrategy, IProgressMonitor monitor) {
-        defaultClassificationService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+        defaultService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
     }
 
     /**
@@ -227,7 +233,7 @@ public class TransientClassificationService implements IClassificationService {
     @Deprecated
     @Override
     public TaxonNode loadTaxonNode(TaxonNode taxonNode, List<String> propertyPaths) {
-        return defaultClassificationService.loadTaxonNode(taxonNode, propertyPaths);
+        return defaultService.loadTaxonNode(taxonNode, propertyPaths);
     }
 
     /**
@@ -237,23 +243,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public AuditEventRecord<Classification> getPreviousAuditEvent(Classification t) {
-        return defaultClassificationService.getPreviousAuditEvent(t);
-    }
-
-    /**
-     * @param classification
-     * @param rank
-     * @param limit
-     * @param start
-     * @param propertyPaths
-     * @return
-     * @deprecated
-     * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadRankSpecificRootNodes(eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.lang.Integer, java.lang.Integer, java.util.List)
-     */
-    @Deprecated
-    @Override
-    public List<TaxonNode> loadRankSpecificRootNodes(Classification classification, Rank rank, Integer limit, Integer start, List<String> propertyPaths) {
-        return defaultClassificationService.loadRankSpecificRootNodes(classification, rank, limit, start, propertyPaths);
+        return defaultService.getPreviousAuditEvent(t);
     }
 
     /**
@@ -263,7 +253,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public int count(Class<? extends Classification> clazz) {
-        return defaultClassificationService.count(clazz);
+        return defaultService.count(clazz);
     }
 
     /**
@@ -280,7 +270,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<AuditEventRecord<Classification>> pageAuditEvents(Class<? extends Classification> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultClassificationService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+        return defaultService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
     }
 
     /**
@@ -290,7 +280,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Classification find(LSID lsid) {
-        return defaultClassificationService.find(lsid);
+        return defaultService.find(lsid);
     }
 
     /**
@@ -299,8 +289,8 @@ public class TransientClassificationService implements IClassificationService {
      * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
      */
     @Override
-    public UUID delete(Classification persistentObject) throws ReferencedObjectUndeletableException{
-        return defaultClassificationService.delete(persistentObject);
+    public DeleteResult delete(Classification persistentObject) {
+        return defaultService.delete(persistentObject);
     }
 
     /**
@@ -314,7 +304,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Object[]> groupMarkers(Class<? extends Classification> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultClassificationService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+        return defaultService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -324,7 +314,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public boolean exists(UUID uuid) {
-        return defaultClassificationService.exists(uuid);
+        return defaultService.exists(uuid);
     }
 
     /**
@@ -335,7 +325,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Classification replace(Classification x, Classification y) {
-        return defaultClassificationService.replace(x, y);
+        return defaultService.replace(x, y);
     }
 
     /**
@@ -345,7 +335,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Classification> find(Set<UUID> uuidSet) {
-        return defaultClassificationService.find(uuidSet);
+        return defaultService.find(uuidSet);
     }
 
     /**
@@ -358,7 +348,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<IdentifiableSource> getSources(Classification t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultClassificationService.getSources(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getSources(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -372,7 +362,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<TaxonNode> listRankSpecificRootNodes(Classification classification, Rank rank, Integer pageSize, Integer pageIndex, List<String> propertyPaths) {
-        return defaultClassificationService.listRankSpecificRootNodes(classification, rank, pageSize, pageIndex, propertyPaths);
+        return defaultService.listRankSpecificRootNodes(classification, rank, pageSize, pageIndex, propertyPaths);
     }
 
     /**
@@ -382,7 +372,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Classification find(UUID uuid) {
-        return defaultClassificationService.find(uuid);
+        return defaultService.find(uuid);
     }
 
     /**
@@ -392,7 +382,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Classification find(int id) {
-        return defaultClassificationService.find(id);
+        return defaultService.find(id);
     }
 
     /**
@@ -405,7 +395,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<Rights> getRights(Classification t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultClassificationService.getRights(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getRights(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -416,7 +406,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public int countMarkers(Class<? extends Classification> clazz, Boolean technical) {
-        return defaultClassificationService.countMarkers(clazz, technical);
+        return defaultService.countMarkers(clazz, technical);
     }
 
     /**
@@ -426,7 +416,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Classification> findById(Set<Integer> idSet) {
-        return defaultClassificationService.findById(idSet);
+        return defaultService.findById(idSet);
     }
 
     /**
@@ -438,7 +428,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
-        return defaultClassificationService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+        return defaultService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
     }
 
     /**
@@ -452,7 +442,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<TaxonNode> pageRankSpecificRootNodes(Classification classification, Rank rank, Integer pageSize, Integer pageIndex, List<String> propertyPaths) {
-        return defaultClassificationService.pageRankSpecificRootNodes(classification, rank, pageSize, pageIndex, propertyPaths);
+        return defaultService.pageRankSpecificRootNodes(classification, rank, pageSize, pageIndex, propertyPaths);
     }
 
     /**
@@ -461,7 +451,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Session getSession() {
-        return defaultClassificationService.getSession();
+        return defaultService.getSession();
     }
 
     /**
@@ -470,7 +460,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<UuidAndTitleCache<Classification>> getUuidAndTitleCache() {
-        return defaultClassificationService.getUuidAndTitleCache();
+        return defaultService.getUuidAndTitleCache();
     }
 
     /**
@@ -484,7 +474,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Object[]> group(Class<? extends Classification> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
-        return defaultClassificationService.group(clazz, limit, start, groups, propertyPaths);
+        return defaultService.group(clazz, limit, start, groups, propertyPaths);
     }
 
     /**
@@ -501,7 +491,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<Classification> findByTitle(Class<? extends Classification> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -513,7 +503,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<TaxonNode> loadTreeBranch(TaxonNode taxonNode, Rank baseRank, List<String> propertyPaths) {
-        return defaultClassificationService.loadTreeBranch(taxonNode, baseRank, propertyPaths);
+        return defaultService.loadTreeBranch(taxonNode, baseRank, propertyPaths);
     }
 
     /**
@@ -526,8 +516,8 @@ public class TransientClassificationService implements IClassificationService {
      * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
      */
     @Override
-    public List<Classification> list(Class<? extends Classification> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.list(type, limit, start, orderHints, propertyPaths);
+    public <S extends Classification> List<S> list(Class<S> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.list(type, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -540,7 +530,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<TaxonNode> loadTreeBranchToTaxon(Taxon taxon, Classification classification, Rank baseRank, List<String> propertyPaths) {
-        return defaultClassificationService.loadTreeBranchToTaxon(taxon, classification, baseRank, propertyPaths);
+        return defaultService.loadTreeBranchToTaxon(taxon, classification, baseRank, propertyPaths);
     }
 
     /**
@@ -550,7 +540,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<Classification> findByTitle(IIdentifiableEntityServiceConfigurator<Classification> configurator) {
-        return defaultClassificationService.findByTitle(configurator);
+        return defaultService.findByTitle(configurator);
     }
 
     /**
@@ -563,7 +553,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Integer countByTitle(Class<? extends Classification> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
-        return defaultClassificationService.countByTitle(clazz, queryString, matchmode, criteria);
+        return defaultService.countByTitle(clazz, queryString, matchmode, criteria);
     }
 
     /**
@@ -573,7 +563,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Classification load(UUID uuid) {
-        return defaultClassificationService.load(uuid);
+        return defaultService.load(uuid);
     }
 
     /**
@@ -584,7 +574,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Classification load(UUID uuid, List<String> propertyPaths) {
-        return defaultClassificationService.load(uuid, propertyPaths);
+        return defaultService.load(uuid, propertyPaths);
     }
 
     /**
@@ -594,7 +584,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Integer countByTitle(IIdentifiableEntityServiceConfigurator<Classification> configurator) {
-        return defaultClassificationService.countByTitle(configurator);
+        return defaultService.countByTitle(configurator);
     }
 
     /**
@@ -604,7 +594,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Classification merge(Classification transientObject) {
-        return defaultClassificationService.merge(transientObject);
+        return defaultService.merge(transientObject);
     }
 
     /**
@@ -621,7 +611,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Classification> listByTitle(Class<? extends Classification> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -634,8 +624,8 @@ public class TransientClassificationService implements IClassificationService {
      * @see eu.etaxonomy.cdm.api.service.IService#page(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
      */
     @Override
-    public Pager<Classification> page(Class<? extends Classification> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+    public <S extends Classification> Pager<S> page(Class<S> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -648,7 +638,7 @@ public class TransientClassificationService implements IClassificationService {
     @Deprecated
     @Override
     public List<TaxonNode> loadChildNodesOfTaxonNode(TaxonNode taxonNode, List<String> propertyPaths) {
-        return defaultClassificationService.loadChildNodesOfTaxonNode(taxonNode, propertyPaths);
+        return defaultService.loadChildNodesOfTaxonNode(taxonNode, propertyPaths);
     }
 
     /**
@@ -657,8 +647,8 @@ public class TransientClassificationService implements IClassificationService {
      * @see eu.etaxonomy.cdm.api.service.IClassificationService#getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(eu.etaxonomy.cdm.model.taxon.Classification)
      */
     @Override
-    public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(Classification classification) {
-        return defaultClassificationService.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classification);
+    public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(Classification classification, List<UUID> excludeTaxa) {
+        return defaultService.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classification, excludeTaxa);
     }
 
     /**
@@ -676,7 +666,7 @@ public class TransientClassificationService implements IClassificationService {
     @Deprecated
     @Override
     public Map<UUID, List<MediaRepresentation>> getAllMediaForChildNodes(Taxon taxon, Classification taxTree, List<String> propertyPaths, int size, int height, int widthOrDuration, String[] mimeTypes) {
-        return defaultClassificationService.getAllMediaForChildNodes(taxon, taxTree, propertyPaths, size, height, widthOrDuration, mimeTypes);
+        return defaultService.getAllMediaForChildNodes(taxon, taxTree, propertyPaths, size, height, widthOrDuration, mimeTypes);
     }
 
     /**
@@ -686,7 +676,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public UUID refresh(Classification persistentObject) {
-        return defaultClassificationService.refresh(persistentObject);
+        return defaultService.refresh(persistentObject);
     }
 
     /**
@@ -703,7 +693,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Classification> listByReferenceTitle(Class<? extends Classification> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -718,7 +708,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Map<UUID, List<MediaRepresentation>> getAllMediaForChildNodes(TaxonNode taxonNode, List<String> propertyPaths, int size, int height, int widthOrDuration, String[] mimeTypes) {
-        return defaultClassificationService.getAllMediaForChildNodes(taxonNode, propertyPaths, size, height, widthOrDuration, mimeTypes);
+        return defaultService.getAllMediaForChildNodes(taxonNode, propertyPaths, size, height, widthOrDuration, mimeTypes);
     }
 
     /**
@@ -730,7 +720,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Classification> rows(String tableName, int limit, int start) {
-        return defaultClassificationService.rows(tableName, limit, start);
+        return defaultService.rows(tableName, limit, start);
     }
 
     /**
@@ -752,7 +742,7 @@ public class TransientClassificationService implements IClassificationService {
     @Deprecated
     @Override
     public UUID removeTaxonNode(TaxonNode taxonNode) {
-        return defaultClassificationService.removeTaxonNode(taxonNode);
+        return defaultService.removeTaxonNode(taxonNode);
     }
 
     /**
@@ -773,7 +763,7 @@ public class TransientClassificationService implements IClassificationService {
      * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
      */
     @Override
-    public UUID save(Classification newInstance) {
+    public Classification save(Classification newInstance) {
         return null;
     }
 
@@ -806,7 +796,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public UUID removeTreeNode(ITaxonTreeNode treeNode) {
-        return defaultClassificationService.removeTreeNode(treeNode);
+        return defaultService.removeTreeNode(treeNode);
     }
 
     /**
@@ -821,7 +811,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<Classification> search(Class<? extends Classification> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -850,7 +840,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<TaxonNode> getAllNodes() {
-        return defaultClassificationService.getAllNodes();
+        return defaultService.getAllNodes();
     }
 
     /**
@@ -860,7 +850,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public UUID update(Classification transientObject) {
-        return defaultClassificationService.update(transientObject);
+        return defaultService.update(transientObject);
     }
 
     /**
@@ -875,7 +865,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Classification> list(Classification example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+        return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -887,7 +877,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public int deduplicate(Class<? extends Classification> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
-        return defaultClassificationService.deduplicate(clazz, matchStrategy, mergeStrategy);
+        return defaultService.deduplicate(clazz, matchStrategy, mergeStrategy);
     }
 
     /**
@@ -902,7 +892,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<Classification> findTitleCache(Class<? extends Classification> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
-        return defaultClassificationService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+        return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
     }
 
     /* (non-Javadoc)
@@ -911,9 +901,86 @@ public class TransientClassificationService implements IClassificationService {
     @Override
     public List<TaxonNode> listChildNodesOfTaxon(UUID taxonUuid, UUID classificationUuid, Integer pageSize,
             Integer pageIndex, List<String> propertyPaths) {
-        return defaultClassificationService.listChildNodesOfTaxon(taxonUuid, classificationUuid, pageSize, pageIndex, propertyPaths);
+        return defaultService.listChildNodesOfTaxon(taxonUuid, classificationUuid, pageSize, pageIndex, propertyPaths);
+    }
+
+       @Override
+       public DeleteResult isDeletable(Classification object,
+                       DeleteConfiguratorBase config) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public Classification findWithoutFlush(UUID uuid) {
+               return defaultService.findWithoutFlush(uuid);
+       }
+
+
+       @Override
+       public <S extends Classification>  Pager<FindByIdentifierDTO<S>> findByIdentifier(Class<S> clazz, String identifier, DefinedTerm identifierType, MatchMode matchmode, boolean includeEntity, Integer pageSize, Integer pageNumber, List<String> propertyPaths){
+               return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
+       }
+
+    @Override
+    public UpdateResult createHierarchyInClassification(Classification arg1, CreateHierarchyForClassificationConfigurator arg2) {
+       return defaultService.createHierarchyInClassification(arg1, arg2);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.IService#delete(java.util.UUID)
+     */
+    @Override
+    public DeleteResult delete(UUID arg0) {
+        return defaultService.delete(arg0);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.IService#delete(java.util.Collection)
+     */
+    @Override
+    public DeleteResult delete(Collection<UUID> arg0) {
+        return defaultService.delete(arg0);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List)
+     */
+    @Override
+    public List<Classification> merge(List<Classification> arg0) {
+        return defaultService.merge(arg0);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List, boolean)
+     */
+    @Override
+    public List<MergeResult<Classification>> merge(List<Classification> arg0, boolean arg1) {
+        return defaultService.merge(arg0, arg1);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean)
+     */
+    @Override
+    public MergeResult<Classification> merge(Classification arg0, boolean arg1) {
+        return defaultService.merge(arg0, arg1);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.IService#loadWithUpdate(java.util.UUID)
+     */
+    @Override
+    public Classification loadWithUpdate(UUID arg0) {
+        return defaultService.loadWithUpdate(arg0);
     }
 
+       @Override
+       public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(
+                       UUID classificationUuid, List<UUID> excludeTaxa) {
+               
+               return defaultService.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classificationUuid, excludeTaxa);
+       }
 
 
 }