merge-update from trunk\nadded throws to delete methods of transient services
authorPatric Plitzner <p.plitzner@bgbm.org>
Mon, 2 Dec 2013 12:09:31 +0000 (12:09 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Mon, 2 Dec 2013 12:09:31 +0000 (12:09 +0000)
1  2 
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientAgentService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientClassificationService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientCollectionService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientDescriptionService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientNameService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientOccurenceService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientReferenceService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientTaxonService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientTermService.java

index 4257245110c0b00c00b54fc9b4a357318f499acd,0000000000000000000000000000000000000000..42396edbde7b2c225d0ceef02dabb945197c105d
mode 100644,000000..100644
--- /dev/null
@@@ -1,741 -1,0 +1,742 @@@
-     public UUID delete(AgentBase persistentObject) {
 +// $Id$
 +/**
 +* Copyright (C) 2013 EDIT
 +* European Distributed Institute of Taxonomy
 +* http://www.e-taxonomy.eu
 +*
 +* The contents of this file are subject to the Mozilla Public License Version 1.1
 +* See LICENSE.TXT at the top of this package for the full license terms.
 +*/
 +package eu.etaxonomy.taxeditor.dataimport.transientServices;
 +
 +import java.util.Collection;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Set;
 +import java.util.UUID;
 +
 +import org.hibernate.LockMode;
 +import org.hibernate.Session;
 +import org.hibernate.criterion.Criterion;
 +import org.hibernate.envers.query.criteria.AuditCriterion;
 +
 +import eu.etaxonomy.cdm.api.service.IAgentService;
 +import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
++import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 +import eu.etaxonomy.cdm.api.service.pager.Pager;
 +import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 +import eu.etaxonomy.cdm.model.agent.Address;
 +import eu.etaxonomy.cdm.model.agent.AgentBase;
 +import eu.etaxonomy.cdm.model.agent.Institution;
 +import eu.etaxonomy.cdm.model.agent.InstitutionalMembership;
 +import eu.etaxonomy.cdm.model.agent.Person;
 +import eu.etaxonomy.cdm.model.agent.Team;
 +import eu.etaxonomy.cdm.model.common.Annotation;
 +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.Rights;
 +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.query.Grouping;
 +import eu.etaxonomy.cdm.persistence.query.MatchMode;
 +import eu.etaxonomy.cdm.persistence.query.OrderHint;
 +import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 +import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 +import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
 +
 +/**
 + * @author pplitzner
 + * @date 27.09.2013
 + *
 + */
 +public class TransientAgentService implements IAgentService {
 +
 +    private IAgentService defaultAgentService;
 +
 +    /**
 +     * @param defaultAgentService
 +     */
 +    public TransientAgentService(IAgentService defaultAgentService) {
 +        this.defaultAgentService = defaultAgentService;
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<AgentBase>> pageAuditEvents(AgentBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultAgentService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param annotatedObj
 +     * @param status
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Annotation> getAnnotations(AgentBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultAgentService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param code
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAgentService#searchInstitutionByCode(java.lang.String)
 +     */
 +    @Override
 +    public List<Institution> searchInstitutionByCode(String code) {
 +        return defaultAgentService.searchInstitutionByCode(code);
 +    }
 +
 +    /**
 +     * @param person
 +     * @param pageSize
 +     * @param pageNumber
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAgentService#getInstitutionalMemberships(eu.etaxonomy.cdm.model.agent.Person, java.lang.Integer, java.lang.Integer)
 +     */
 +    @Override
 +    public Pager<InstitutionalMembership> getInstitutionalMemberships(Person person, Integer pageSize, Integer pageNumber) {
 +        return defaultAgentService.getInstitutionalMemberships(person, pageSize, pageNumber);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IService#clear()
 +     */
 +    @Override
 +    public void clear() {
 +        defaultAgentService.clear();
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
 +     */
 +    @Override
 +    public void lock(AgentBase t, LockMode lockMode) {
 +        defaultAgentService.lock(t, lockMode);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @param propertyPaths
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
 +     */
 +    @Override
 +    public void refresh(AgentBase t, LockMode lockMode, List<String> propertyPaths) {
 +        defaultAgentService.refresh(t, lockMode, propertyPaths);
 +    }
 +
 +    /**
 +     * @param team
 +     * @param pageSize
 +     * @param pageNumber
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAgentService#getMembers(eu.etaxonomy.cdm.model.agent.Team, java.lang.Integer, java.lang.Integer)
 +     */
 +    @Override
 +    public Pager<Person> getMembers(Team team, Integer pageSize, Integer pageNumber) {
 +        return defaultAgentService.getMembers(team, pageSize, pageNumber);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
 +     */
 +    @Override
 +    public void updateTitleCache() {
 +        defaultAgentService.updateTitleCache();
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<AgentBase> getNextAuditEvent(AgentBase t) {
 +        return defaultAgentService.getNextAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param annotatableEntity
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Marker> getMarkers(AgentBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultAgentService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param stepSize
 +     * @param cacheStrategy
 +     * @param monitor
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
 +     */
 +    @Override
 +    public void updateTitleCache(Class<? extends AgentBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<AgentBase> cacheStrategy, IProgressMonitor monitor) {
 +        defaultAgentService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
 +    }
 +
 +    /**
 +     * @param agent
 +     * @param pageSize
 +     * @param pageNumber
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAgentService#getAddresses(eu.etaxonomy.cdm.model.agent.AgentBase, java.lang.Integer, java.lang.Integer)
 +     */
 +    @Override
 +    public Pager<Address> getAddresses(AgentBase agent, Integer pageSize, Integer pageNumber) {
 +        return defaultAgentService.getAddresses(agent, pageSize, pageNumber);
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<AgentBase> getPreviousAuditEvent(AgentBase t) {
 +        return defaultAgentService.getPreviousAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
 +     */
 +    @Override
 +    public int count(Class<? extends AgentBase> clazz) {
 +        return defaultAgentService.count(clazz);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAgentService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<AgentBase> search(Class<? extends AgentBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultAgentService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param from
 +     * @param to
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageValue
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<AgentBase>> pageAuditEvents(Class<? extends AgentBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultAgentService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param lsid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
 +     */
 +    @Override
 +    public AgentBase find(LSID lsid) {
 +        return defaultAgentService.find(lsid);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
++    public UUID delete(AgentBase persistentObject) throws ReferencedObjectUndeletableException{
 +        return defaultAgentService.delete(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> groupMarkers(Class<? extends AgentBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultAgentService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
 +     */
 +    @Override
 +    public boolean exists(UUID uuid) {
 +        return defaultAgentService.exists(uuid);
 +    }
 +
 +    /**
 +     * @param x
 +     * @param y
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
 +     */
 +    @Override
 +    public AgentBase replace(AgentBase x, AgentBase y) {
 +        return defaultAgentService.replace(x, y);
 +    }
 +
 +    /**
 +     * @param uuidSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
 +     */
 +    @Override
 +    public List<AgentBase> find(Set<UUID> uuidSet) {
 +        return defaultAgentService.find(uuidSet);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<IdentifiableSource> getSources(AgentBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultAgentService.getSources(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
 +     */
 +    @Override
 +    public AgentBase find(UUID uuid) {
 +        return defaultAgentService.find(uuid);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAgentService#getPersonUuidAndTitleCache()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<Person>> getPersonUuidAndTitleCache() {
 +        return defaultAgentService.getPersonUuidAndTitleCache();
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAgentService#getTeamUuidAndTitleCache()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<Team>> getTeamUuidAndTitleCache() {
 +        return defaultAgentService.getTeamUuidAndTitleCache();
 +    }
 +
 +    /**
 +     * @param id
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
 +     */
 +    @Override
 +    public AgentBase find(int id) {
 +        return defaultAgentService.find(id);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<Rights> getRights(AgentBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultAgentService.getRights(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
 +     */
 +    @Override
 +    public int countMarkers(Class<? extends AgentBase> clazz, Boolean technical) {
 +        return defaultAgentService.countMarkers(clazz, technical);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAgentService#getTeamUuidAndNomenclaturalTitle()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<Team>> getTeamUuidAndNomenclaturalTitle() {
 +        return defaultAgentService.getTeamUuidAndNomenclaturalTitle();
 +    }
 +
 +    /**
 +     * @param idSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
 +     */
 +    @Override
 +    public List<AgentBase> findById(Set<Integer> idSet) {
 +        return defaultAgentService.findById(idSet);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAgentService#getInstitutionUuidAndTitleCache()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<Institution>> getInstitutionUuidAndTitleCache() {
 +        return defaultAgentService.getInstitutionUuidAndTitleCache();
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param idInSource
 +     * @param idNamespace
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
 +     */
 +    @Override
 +    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
 +        return defaultAgentService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
 +     */
 +    @Override
 +    public Session getSession() {
 +        return defaultAgentService.getSession();
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<AgentBase>> getUuidAndTitleCache() {
 +        return defaultAgentService.getUuidAndTitleCache();
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param limit
 +     * @param start
 +     * @param groups
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> group(Class<? extends AgentBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
 +        return defaultAgentService.group(clazz, limit, start, groups, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<AgentBase> findByTitle(Class<? extends AgentBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultAgentService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<AgentBase> list(Class<? extends AgentBase> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultAgentService.list(type, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Pager<AgentBase> findByTitle(IIdentifiableEntityServiceConfigurator<AgentBase> configurator) {
 +        return defaultAgentService.findByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
 +     */
 +    @Override
 +    public Integer countByTitle(Class<? extends AgentBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
 +        return defaultAgentService.countByTitle(clazz, queryString, matchmode, criteria);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
 +     */
 +    @Override
 +    public AgentBase load(UUID uuid) {
 +        return defaultAgentService.load(uuid);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
 +     */
 +    @Override
 +    public AgentBase load(UUID uuid, List<String> propertyPaths) {
 +        return defaultAgentService.load(uuid, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<AgentBase> configurator) {
 +        return defaultAgentService.countByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public AgentBase merge(AgentBase transientObject) {
 +        return defaultAgentService.merge(transientObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<AgentBase> listByTitle(Class<? extends AgentBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultAgentService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<AgentBase> page(Class<? extends AgentBase> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultAgentService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID refresh(AgentBase persistentObject) {
 +        return defaultAgentService.refresh(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<AgentBase> listByReferenceTitle(Class<? extends AgentBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultAgentService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param tableName
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
 +     */
 +    @Override
 +    public List<AgentBase> rows(String tableName, int limit, int start) {
 +        return defaultAgentService.rows(tableName, limit, start);
 +    }
 +
 +    /**
 +     * @param newInstances
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, AgentBase> save(Collection<AgentBase> newInstances) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param newInstance
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID save(AgentBase newInstance) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID saveOrUpdate(AgentBase transientObject) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObjects
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, AgentBase> saveOrUpdate(Collection<AgentBase> transientObjects) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID update(AgentBase transientObject) {
 +        return defaultAgentService.update(transientObject);
 +    }
 +
 +    /**
 +     * @param example
 +     * @param includeProperties
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<AgentBase> list(AgentBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultAgentService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param matchStrategy
 +     * @param mergeStrategy
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
 +     */
 +    @Override
 +    public int deduplicate(Class<? extends AgentBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
 +        return defaultAgentService.deduplicate(clazz, matchStrategy, mergeStrategy);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param matchMode
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
 +     */
 +    @Override
 +    public Pager<AgentBase> findTitleCache(Class<? extends AgentBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
 +        return defaultAgentService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
 +    };
 +
 +
 +
 +}
index c316e5e1b52ece992e701e22b71023db9b4692df,0000000000000000000000000000000000000000..856dc47dc9c443198a1ede03543e7d9d26ada5c9
mode 100644,000000..100644
--- /dev/null
@@@ -1,921 -1,0 +1,922 @@@
-     public UUID delete(Classification persistentObject) {
 +// $Id$
 +/**
 +* Copyright (C) 2013 EDIT
 +* European Distributed Institute of Taxonomy
 +* http://www.e-taxonomy.eu
 +*
 +* The contents of this file are subject to the Mozilla Public License Version 1.1
 +* See LICENSE.TXT at the top of this package for the full license terms.
 +*/
 +package eu.etaxonomy.taxeditor.dataimport.transientServices;
 +
 +import java.util.Collection;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Set;
 +import java.util.UUID;
 +
 +import org.hibernate.LockMode;
 +import org.hibernate.Session;
 +import org.hibernate.criterion.Criterion;
 +import org.hibernate.envers.query.criteria.AuditCriterion;
 +
 +import eu.etaxonomy.cdm.api.service.IClassificationService;
 +import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
++import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 +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.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;
 +import eu.etaxonomy.cdm.model.taxon.Classification;
 +import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 +import eu.etaxonomy.cdm.model.taxon.Taxon;
 +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.query.Grouping;
 +import eu.etaxonomy.cdm.persistence.query.MatchMode;
 +import eu.etaxonomy.cdm.persistence.query.OrderHint;
 +import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 +import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 +import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
 +
 +/**
 + * @author pplitzner
 + * @date 27.09.2013
 + *
 + */
 +public class TransientClassificationService implements IClassificationService {
 +
 +    private IClassificationService defaultClassificationService;
 +
 +    /**
 +     * @param defaultClassificationService
 +     */
 +    public TransientClassificationService(IClassificationService defaultClassificationService) {
 +        this.defaultClassificationService = defaultClassificationService;
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @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);
 +    }
 +
 +    /**
 +     * @param annotatedObj
 +     * @param status
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @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);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#getTaxonNodeByUuid(java.util.UUID)
 +     */
 +    @Override
 +    public TaxonNode getTaxonNodeByUuid(UUID uuid) {
 +        return defaultClassificationService.getTaxonNodeByUuid(uuid);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#getTreeNodeByUuid(java.util.UUID)
 +     */
 +    @Override
 +    public ITaxonTreeNode getTreeNodeByUuid(UUID uuid) {
 +        return defaultClassificationService.getTreeNodeByUuid(uuid);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IService#clear()
 +     */
 +    @Override
 +    public void clear() {
 +        defaultClassificationService.clear();
 +    }
 +
 +    /**
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#listClassifications(java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Classification> listClassifications(Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultClassificationService.listClassifications(limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @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);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @param propertyPaths
 +     * @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);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param classificationUuid
 +     * @param propertyPaths
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadTaxonNodeByTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.UUID, java.util.List)
 +     */
 +    @Deprecated
 +    @Override
 +    public TaxonNode loadTaxonNodeByTaxon(Taxon taxon, UUID classificationUuid, List<String> propertyPaths) {
 +        return defaultClassificationService.loadTaxonNodeByTaxon(taxon, classificationUuid, propertyPaths);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
 +     */
 +    @Override
 +    public void updateTitleCache() {
 +        defaultClassificationService.updateTitleCache();
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<Classification> getNextAuditEvent(Classification t) {
 +        return defaultClassificationService.getNextAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param annotatableEntity
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @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);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param stepSize
 +     * @param cacheStrategy
 +     * @param monitor
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
 +     */
 +    @Override
 +    public void updateTitleCache(Class<? extends Classification> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<Classification> cacheStrategy, IProgressMonitor monitor) {
 +        defaultClassificationService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
 +    }
 +
 +    /**
 +     * @param taxonNode
 +     * @param propertyPaths
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List)
 +     */
 +    @Deprecated
 +    @Override
 +    public TaxonNode loadTaxonNode(TaxonNode taxonNode, List<String> propertyPaths) {
 +        return defaultClassificationService.loadTaxonNode(taxonNode, propertyPaths);
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @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);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
 +     */
 +    @Override
 +    public int count(Class<? extends Classification> clazz) {
 +        return defaultClassificationService.count(clazz);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param from
 +     * @param to
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageValue
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @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);
 +    }
 +
 +    /**
 +     * @param lsid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
 +     */
 +    @Override
 +    public Classification find(LSID lsid) {
 +        return defaultClassificationService.find(lsid);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @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);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @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);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
 +     */
 +    @Override
 +    public boolean exists(UUID uuid) {
 +        return defaultClassificationService.exists(uuid);
 +    }
 +
 +    /**
 +     * @param x
 +     * @param y
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
 +     */
 +    @Override
 +    public Classification replace(Classification x, Classification y) {
 +        return defaultClassificationService.replace(x, y);
 +    }
 +
 +    /**
 +     * @param uuidSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
 +     */
 +    @Override
 +    public List<Classification> find(Set<UUID> uuidSet) {
 +        return defaultClassificationService.find(uuidSet);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<IdentifiableSource> getSources(Classification t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultClassificationService.getSources(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param classification
 +     * @param rank
 +     * @param pageSize
 +     * @param pageIndex
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#listRankSpecificRootNodes(eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonNode> listRankSpecificRootNodes(Classification classification, Rank rank, Integer pageSize, Integer pageIndex, List<String> propertyPaths) {
 +        return defaultClassificationService.listRankSpecificRootNodes(classification, rank, pageSize, pageIndex, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
 +     */
 +    @Override
 +    public Classification find(UUID uuid) {
 +        return defaultClassificationService.find(uuid);
 +    }
 +
 +    /**
 +     * @param id
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
 +     */
 +    @Override
 +    public Classification find(int id) {
 +        return defaultClassificationService.find(id);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<Rights> getRights(Classification t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultClassificationService.getRights(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
 +     */
 +    @Override
 +    public int countMarkers(Class<? extends Classification> clazz, Boolean technical) {
 +        return defaultClassificationService.countMarkers(clazz, technical);
 +    }
 +
 +    /**
 +     * @param idSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
 +     */
 +    @Override
 +    public List<Classification> findById(Set<Integer> idSet) {
 +        return defaultClassificationService.findById(idSet);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param idInSource
 +     * @param idNamespace
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
 +     */
 +    @Override
 +    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
 +        return defaultClassificationService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
 +    }
 +
 +    /**
 +     * @param classification
 +     * @param rank
 +     * @param pageSize
 +     * @param pageIndex
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#pageRankSpecificRootNodes(eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @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
 +     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
 +     */
 +    @Override
 +    public Session getSession() {
 +        return defaultClassificationService.getSession();
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<Classification>> getUuidAndTitleCache() {
 +        return defaultClassificationService.getUuidAndTitleCache();
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param limit
 +     * @param start
 +     * @param groups
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @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);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @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);
 +    }
 +
 +    /**
 +     * @param taxonNode
 +     * @param baseRank
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadTreeBranch(eu.etaxonomy.cdm.model.taxon.TaxonNode, eu.etaxonomy.cdm.model.name.Rank, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonNode> loadTreeBranch(TaxonNode taxonNode, Rank baseRank, List<String> propertyPaths) {
 +        return defaultClassificationService.loadTreeBranch(taxonNode, baseRank, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param classification
 +     * @param baseRank
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadTreeBranchToTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonNode> loadTreeBranchToTaxon(Taxon taxon, Classification classification, Rank baseRank, List<String> propertyPaths) {
 +        return defaultClassificationService.loadTreeBranchToTaxon(taxon, classification, baseRank, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Pager<Classification> findByTitle(IIdentifiableEntityServiceConfigurator<Classification> configurator) {
 +        return defaultClassificationService.findByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
 +     */
 +    @Override
 +    public Integer countByTitle(Class<? extends Classification> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
 +        return defaultClassificationService.countByTitle(clazz, queryString, matchmode, criteria);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
 +     */
 +    @Override
 +    public Classification load(UUID uuid) {
 +        return defaultClassificationService.load(uuid);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
 +     */
 +    @Override
 +    public Classification load(UUID uuid, List<String> propertyPaths) {
 +        return defaultClassificationService.load(uuid, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<Classification> configurator) {
 +        return defaultClassificationService.countByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param classification
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadChildNodesOfTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonNode> loadChildNodesOfTaxon(Taxon taxon, Classification classification, List<String> propertyPaths) {
 +        return defaultClassificationService.loadChildNodesOfTaxon(taxon, classification, propertyPaths);
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public Classification merge(Classification transientObject) {
 +        return defaultClassificationService.merge(transientObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @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);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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);
 +    }
 +
 +    /**
 +     * @param taxonNode
 +     * @param propertyPaths
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadChildNodesOfTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List)
 +     */
 +    @Deprecated
 +    @Override
 +    public List<TaxonNode> loadChildNodesOfTaxonNode(TaxonNode taxonNode, List<String> propertyPaths) {
 +        return defaultClassificationService.loadChildNodesOfTaxonNode(taxonNode, propertyPaths);
 +    }
 +
 +    /**
 +     * @param classification
 +     * @return
 +     * @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);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param taxTree
 +     * @param propertyPaths
 +     * @param size
 +     * @param height
 +     * @param widthOrDuration
 +     * @param mimeTypes
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#getAllMediaForChildNodes(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List, int, int, int, java.lang.String[])
 +     */
 +    @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);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID refresh(Classification persistentObject) {
 +        return defaultClassificationService.refresh(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @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);
 +    }
 +
 +    /**
 +     * @param taxonNode
 +     * @param propertyPaths
 +     * @param size
 +     * @param height
 +     * @param widthOrDuration
 +     * @param mimeTypes
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#getAllMediaForChildNodes(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List, int, int, int, java.lang.String[])
 +     */
 +    @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);
 +    }
 +
 +    /**
 +     * @param tableName
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
 +     */
 +    @Override
 +    public List<Classification> rows(String tableName, int limit, int start) {
 +        return defaultClassificationService.rows(tableName, limit, start);
 +    }
 +
 +    /**
 +     * @param newInstances
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, Classification> save(Collection<Classification> newInstances) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param taxonNode
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#removeTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode)
 +     */
 +    @Deprecated
 +    @Override
 +    public UUID removeTaxonNode(TaxonNode taxonNode) {
 +        return defaultClassificationService.removeTaxonNode(taxonNode);
 +    }
 +
 +    /**
 +     * @param taxonNode
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#saveTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode)
 +     */
 +    @Deprecated
 +    @Override
 +    public UUID saveTaxonNode(TaxonNode taxonNode) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param newInstance
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID save(Classification newInstance) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param taxonNodeCollection
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#saveTaxonNodeAll(java.util.Collection)
 +     */
 +    @Deprecated
 +    @Override
 +    public Map<UUID, TaxonNode> saveTaxonNodeAll(Collection<TaxonNode> taxonNodeCollection) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID saveOrUpdate(Classification transientObject) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param treeNode
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#removeTreeNode(eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode)
 +     */
 +    @Override
 +    public UUID removeTreeNode(ITaxonTreeNode treeNode) {
 +        return defaultClassificationService.removeTreeNode(treeNode);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @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);
 +    }
 +
 +    /**
 +     * @param treeNode
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#saveTreeNode(eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode)
 +     */
 +    @Override
 +    public UUID saveTreeNode(ITaxonTreeNode treeNode) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObjects
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, Classification> saveOrUpdate(Collection<Classification> transientObjects) {
 +        return null;
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IClassificationService#getAllNodes()
 +     */
 +    @Override
 +    public List<TaxonNode> getAllNodes() {
 +        return defaultClassificationService.getAllNodes();
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID update(Classification transientObject) {
 +        return defaultClassificationService.update(transientObject);
 +    }
 +
 +    /**
 +     * @param example
 +     * @param includeProperties
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @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);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param matchStrategy
 +     * @param mergeStrategy
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
 +     */
 +    @Override
 +    public int deduplicate(Class<? extends Classification> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
 +        return defaultClassificationService.deduplicate(clazz, matchStrategy, mergeStrategy);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param matchMode
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
 +     */
 +    @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);
 +    }
 +
 +
 +
 +}
index 33aa4228e92afd02a166279b4563ac9412c340c0,0000000000000000000000000000000000000000..41795641058ac46703b7e58cb0b28330c2e9c903
mode 100644,000000..100644
--- /dev/null
@@@ -1,659 -1,0 +1,660 @@@
-     public UUID delete(Collection persistentObject) {
 +// $Id$
 +/**
 +* Copyright (C) 2013 EDIT
 +* European Distributed Institute of Taxonomy
 +* http://www.e-taxonomy.eu
 +*
 +* The contents of this file are subject to the Mozilla Public License Version 1.1
 +* See LICENSE.TXT at the top of this package for the full license terms.
 +*/
 +package eu.etaxonomy.taxeditor.dataimport.transientServices;
 +
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Set;
 +import java.util.UUID;
 +
 +import org.hibernate.LockMode;
 +import org.hibernate.Session;
 +import org.hibernate.criterion.Criterion;
 +import org.hibernate.envers.query.criteria.AuditCriterion;
 +
 +import eu.etaxonomy.cdm.api.service.ICollectionService;
 +import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
++import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 +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.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.Rights;
 +import eu.etaxonomy.cdm.model.occurrence.Collection;
 +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.query.Grouping;
 +import eu.etaxonomy.cdm.persistence.query.MatchMode;
 +import eu.etaxonomy.cdm.persistence.query.OrderHint;
 +import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 +import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 +import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
 +
 +/**
 + * @author pplitzner
 + * @date 27.09.2013
 + *
 + */
 +public class TransientCollectionService implements ICollectionService {
 +
 +    private ICollectionService defaultCollectionService;
 +
 +    /**
 +     * @param defaultCollectionService
 +     */
 +    public TransientCollectionService(ICollectionService defaultCollectionService) {
 +        this.defaultCollectionService = defaultCollectionService;
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param query
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ICollectionService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Collection> search(Class<? extends Collection> clazz, String query, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultCollectionService.search(clazz, query, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<Collection>> pageAuditEvents(Collection t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultCollectionService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param annotatedObj
 +     * @param status
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Annotation> getAnnotations(Collection annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultCollectionService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IService#clear()
 +     */
 +    @Override
 +    public void clear() {
 +        defaultCollectionService.clear();
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
 +     */
 +    @Override
 +    public void lock(Collection t, LockMode lockMode) {
 +        defaultCollectionService.lock(t, lockMode);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @param propertyPaths
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
 +     */
 +    @Override
 +    public void refresh(Collection t, LockMode lockMode, List<String> propertyPaths) {
 +        defaultCollectionService.refresh(t, lockMode, propertyPaths);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
 +     */
 +    @Override
 +    public void updateTitleCache() {
 +        defaultCollectionService.updateTitleCache();
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<Collection> getNextAuditEvent(Collection t) {
 +        return defaultCollectionService.getNextAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param code
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ICollectionService#searchByCode(java.lang.String)
 +     */
 +    @Override
 +    public List<Collection> searchByCode(String code) {
 +        return defaultCollectionService.searchByCode(code);
 +    }
 +
 +    /**
 +     * @param annotatableEntity
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Marker> getMarkers(Collection annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultCollectionService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param stepSize
 +     * @param cacheStrategy
 +     * @param monitor
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
 +     */
 +    @Override
 +    public void updateTitleCache(Class<? extends Collection> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<Collection> cacheStrategy, IProgressMonitor monitor) {
 +        defaultCollectionService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<Collection> getPreviousAuditEvent(Collection t) {
 +        return defaultCollectionService.getPreviousAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
 +     */
 +    @Override
 +    public int count(Class<? extends Collection> clazz) {
 +        return defaultCollectionService.count(clazz);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param from
 +     * @param to
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageValue
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<Collection>> pageAuditEvents(Class<? extends Collection> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultCollectionService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param lsid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
 +     */
 +    @Override
 +    public Collection find(LSID lsid) {
 +        return defaultCollectionService.find(lsid);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
++    public UUID delete(Collection persistentObject) throws ReferencedObjectUndeletableException{
 +        return defaultCollectionService.delete(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> groupMarkers(Class<? extends Collection> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultCollectionService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
 +     */
 +    @Override
 +    public boolean exists(UUID uuid) {
 +        return defaultCollectionService.exists(uuid);
 +    }
 +
 +    /**
 +     * @param x
 +     * @param y
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
 +     */
 +    @Override
 +    public Collection replace(Collection x, Collection y) {
 +        return defaultCollectionService.replace(x, y);
 +    }
 +
 +    /**
 +     * @param uuidSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
 +     */
 +    @Override
 +    public List<Collection> find(Set<UUID> uuidSet) {
 +        return defaultCollectionService.find(uuidSet);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<IdentifiableSource> getSources(Collection t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultCollectionService.getSources(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
 +     */
 +    @Override
 +    public Collection find(UUID uuid) {
 +        return defaultCollectionService.find(uuid);
 +    }
 +
 +    /**
 +     * @param id
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
 +     */
 +    @Override
 +    public Collection find(int id) {
 +        return defaultCollectionService.find(id);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<Rights> getRights(Collection t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultCollectionService.getRights(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
 +     */
 +    @Override
 +    public int countMarkers(Class<? extends Collection> clazz, Boolean technical) {
 +        return defaultCollectionService.countMarkers(clazz, technical);
 +    }
 +
 +    /**
 +     * @param idSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
 +     */
 +    @Override
 +    public List<Collection> findById(Set<Integer> idSet) {
 +        return defaultCollectionService.findById(idSet);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param idInSource
 +     * @param idNamespace
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
 +     */
 +    @Override
 +    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
 +        return defaultCollectionService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
 +     */
 +    @Override
 +    public Session getSession() {
 +        return defaultCollectionService.getSession();
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<Collection>> getUuidAndTitleCache() {
 +        return defaultCollectionService.getUuidAndTitleCache();
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param limit
 +     * @param start
 +     * @param groups
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> group(Class<? extends Collection> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
 +        return defaultCollectionService.group(clazz, limit, start, groups, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Collection> findByTitle(Class<? extends Collection> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultCollectionService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<Collection> list(Class<? extends Collection> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultCollectionService.list(type, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Pager<Collection> findByTitle(IIdentifiableEntityServiceConfigurator<Collection> configurator) {
 +        return defaultCollectionService.findByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
 +     */
 +    @Override
 +    public Integer countByTitle(Class<? extends Collection> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
 +        return defaultCollectionService.countByTitle(clazz, queryString, matchmode, criteria);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
 +     */
 +    @Override
 +    public Collection load(UUID uuid) {
 +        return defaultCollectionService.load(uuid);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
 +     */
 +    @Override
 +    public Collection load(UUID uuid, List<String> propertyPaths) {
 +        return defaultCollectionService.load(uuid, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<Collection> configurator) {
 +        return defaultCollectionService.countByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public Collection merge(Collection transientObject) {
 +        return defaultCollectionService.merge(transientObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Collection> listByTitle(Class<? extends Collection> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultCollectionService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<Collection> page(Class<? extends Collection> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultCollectionService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID refresh(Collection persistentObject) {
 +        return defaultCollectionService.refresh(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Collection> listByReferenceTitle(Class<? extends Collection> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultCollectionService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param tableName
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
 +     */
 +    @Override
 +    public List<Collection> rows(String tableName, int limit, int start) {
 +        return defaultCollectionService.rows(tableName, limit, start);
 +    }
 +
 +    /**
 +     * @param newInstances
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, Collection> save(java.util.Collection<Collection> newInstances) {
 +        return null;
 +    }
 +
 +    /* (non-Javadoc)
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID save(Collection newInstance) {
 +        return null;
 +    }
 +
 +    /* (non-Javadoc)
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID saveOrUpdate(Collection transientObject) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObjects
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, Collection> saveOrUpdate(java.util.Collection<Collection> transientObjects) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID update(Collection transientObject) {
 +        return defaultCollectionService.update(transientObject);
 +    }
 +
 +    /**
 +     * @param example
 +     * @param includeProperties
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Collection> list(Collection example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultCollectionService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param matchStrategy
 +     * @param mergeStrategy
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
 +     */
 +    @Override
 +    public int deduplicate(Class<? extends Collection> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
 +        return defaultCollectionService.deduplicate(clazz, matchStrategy, mergeStrategy);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param matchMode
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
 +     */
 +    @Override
 +    public Pager<Collection> findTitleCache(Class<? extends Collection> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
 +        return defaultCollectionService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
 +    }
 +
 +
 +
 +}
index b4d519cb54db07774419a5585a6ed169a4eced8d,0000000000000000000000000000000000000000..b896316cca1e2971ea8eafacaf82214b53b41fd3
mode 100644,000000..100644
--- /dev/null
@@@ -1,1101 -1,0 +1,1102 @@@
-     public UUID delete(DescriptionBase persistentObject) {
 +// $Id$
 +/**
 +* Copyright (C) 2013 EDIT
 +* European Distributed Institute of Taxonomy
 +* http://www.e-taxonomy.eu
 +*
 +* The contents of this file are subject to the Mozilla Public License Version 1.1
 +* See LICENSE.TXT at the top of this package for the full license terms.
 +*/
 +package eu.etaxonomy.taxeditor.dataimport.transientServices;
 +
 +import java.util.Collection;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Set;
 +import java.util.UUID;
 +
 +import org.hibernate.LockMode;
 +import org.hibernate.Session;
 +import org.hibernate.criterion.Criterion;
 +import org.hibernate.envers.query.criteria.AuditCriterion;
 +
 +import eu.etaxonomy.cdm.api.service.DistributionTree;
 +import eu.etaxonomy.cdm.api.service.IDescriptionService;
 +import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
++import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 +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.Language;
 +import eu.etaxonomy.cdm.model.common.Marker;
 +import eu.etaxonomy.cdm.model.common.MarkerType;
 +import eu.etaxonomy.cdm.model.common.TermVocabulary;
 +import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
 +import eu.etaxonomy.cdm.model.description.DescriptionBase;
 +import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 +import eu.etaxonomy.cdm.model.description.Feature;
 +import eu.etaxonomy.cdm.model.description.FeatureTree;
 +import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
 +import eu.etaxonomy.cdm.model.description.TaxonDescription;
 +import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
 +import eu.etaxonomy.cdm.model.location.NamedArea;
 +import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
 +import eu.etaxonomy.cdm.model.media.Media;
 +import eu.etaxonomy.cdm.model.media.Rights;
 +import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 +import eu.etaxonomy.cdm.model.taxon.Taxon;
 +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.query.Grouping;
 +import eu.etaxonomy.cdm.persistence.query.MatchMode;
 +import eu.etaxonomy.cdm.persistence.query.OrderHint;
 +import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 +import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 +import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
 +
 +/**
 + * @author pplitzner
 + * @date 27.09.2013
 + *
 + */
 +public class TransientDescriptionService implements IDescriptionService {
 +
 +    private IDescriptionService defaultDescriptionService;
 +
 +    /**
 +     * @param defaultDescriptionService
 +     */
 +    public TransientDescriptionService(IDescriptionService defaultDescriptionService) {
 +        this.defaultDescriptionService = defaultDescriptionService;
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<DescriptionBase>> pageAuditEvents(DescriptionBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultDescriptionService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param annotatedObj
 +     * @param status
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Annotation> getAnnotations(DescriptionBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultDescriptionService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IService#clear()
 +     */
 +    @Override
 +    public void clear() {
 +        defaultDescriptionService.clear();
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
 +     */
 +    @Override
 +    public void lock(DescriptionBase t, LockMode lockMode) {
 +        defaultDescriptionService.lock(t, lockMode);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @param propertyPaths
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
 +     */
 +    @Override
 +    public void refresh(DescriptionBase t, LockMode lockMode, List<String> propertyPaths) {
 +        defaultDescriptionService.refresh(t, lockMode, propertyPaths);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
 +     */
 +    @Override
 +    public void updateTitleCache() {
 +        defaultDescriptionService.updateTitleCache();
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<DescriptionBase> getNextAuditEvent(DescriptionBase t) {
 +        return defaultDescriptionService.getNextAuditEvent(t);
 +    }
 +
 +    /**
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getDefaultFeatureVocabulary()
 +     */
 +    @Deprecated
 +    @Override
 +    public TermVocabulary<Feature> getDefaultFeatureVocabulary() {
 +        return defaultDescriptionService.getDefaultFeatureVocabulary();
 +    }
 +
 +    /**
 +     * @param annotatableEntity
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Marker> getMarkers(DescriptionBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultDescriptionService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getFeatureVocabulary(java.util.UUID)
 +     */
 +    @Deprecated
 +    @Override
 +    public TermVocabulary<Feature> getFeatureVocabulary(UUID uuid) {
 +        return defaultDescriptionService.getFeatureVocabulary(uuid);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param stepSize
 +     * @param cacheStrategy
 +     * @param monitor
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
 +     */
 +    @Override
 +    public void updateTitleCache(Class<? extends DescriptionBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<DescriptionBase> cacheStrategy, IProgressMonitor monitor) {
 +        defaultDescriptionService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<DescriptionBase> getPreviousAuditEvent(DescriptionBase t) {
 +        return defaultDescriptionService.getPreviousAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getDescriptionElementByUuid(java.util.UUID)
 +     */
 +    @Override
 +    public DescriptionElementBase getDescriptionElementByUuid(UUID uuid) {
 +        return defaultDescriptionService.getDescriptionElementByUuid(uuid);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
 +     */
 +    @Override
 +    public int count(Class<? extends DescriptionBase> clazz) {
 +        return defaultDescriptionService.count(clazz);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#loadDescriptionElement(java.util.UUID, java.util.List)
 +     */
 +    @Override
 +    public DescriptionElementBase loadDescriptionElement(UUID uuid, List<String> propertyPaths) {
 +        return defaultDescriptionService.loadDescriptionElement(uuid, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param from
 +     * @param to
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageValue
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<DescriptionBase>> pageAuditEvents(Class<? extends DescriptionBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultDescriptionService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param lsid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
 +     */
 +    @Override
 +    public DescriptionBase find(LSID lsid) {
 +        return defaultDescriptionService.find(lsid);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
++    public UUID delete(DescriptionBase persistentObject) throws ReferencedObjectUndeletableException{
 +        return defaultDescriptionService.delete(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> groupMarkers(Class<? extends DescriptionBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
 +     */
 +    @Override
 +    public boolean exists(UUID uuid) {
 +        return defaultDescriptionService.exists(uuid);
 +    }
 +
 +    /**
 +     * @param x
 +     * @param y
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
 +     */
 +    @Override
 +    public DescriptionBase replace(DescriptionBase x, DescriptionBase y) {
 +        return defaultDescriptionService.replace(x, y);
 +    }
 +
 +    /**
 +     * @param descriptionElement
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#saveDescriptionElement(eu.etaxonomy.cdm.model.description.DescriptionElementBase)
 +     */
 +    @Override
 +    public UUID saveDescriptionElement(DescriptionElementBase descriptionElement) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param uuidSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
 +     */
 +    @Override
 +    public List<DescriptionBase> find(Set<UUID> uuidSet) {
 +        return defaultDescriptionService.find(uuidSet);
 +    }
 +
 +    /**
 +     * @param descriptionElements
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#saveDescriptionElement(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, DescriptionElementBase> saveDescriptionElement(Collection<DescriptionElementBase> descriptionElements) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<IdentifiableSource> getSources(DescriptionBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.getSources(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param descriptionElement
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#deleteDescriptionElement(eu.etaxonomy.cdm.model.description.DescriptionElementBase)
 +     */
 +    @Override
 +    public UUID deleteDescriptionElement(DescriptionElementBase descriptionElement) {
 +        return defaultDescriptionService.deleteDescriptionElement(descriptionElement);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
 +     */
 +    @Override
 +    public DescriptionBase find(UUID uuid) {
 +        return defaultDescriptionService.find(uuid);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param hasMedia
 +     * @param hasText
 +     * @param feature
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#page(java.lang.Class, java.lang.Boolean, java.lang.Boolean, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<DescriptionBase> page(Class<? extends DescriptionBase> type, Boolean hasMedia, Boolean hasText, Set<Feature> feature, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultDescriptionService.page(type, hasMedia, hasText, feature, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param id
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
 +     */
 +    @Override
 +    public DescriptionBase find(int id) {
 +        return defaultDescriptionService.find(id);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<Rights> getRights(DescriptionBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.getRights(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
 +     */
 +    @Override
 +    public int countMarkers(Class<? extends DescriptionBase> clazz, Boolean technical) {
 +        return defaultDescriptionService.countMarkers(clazz, technical);
 +    }
 +
 +    /**
 +     * @param idSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
 +     */
 +    @Override
 +    public List<DescriptionBase> findById(Set<Integer> idSet) {
 +        return defaultDescriptionService.findById(idSet);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param idInSource
 +     * @param idNamespace
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
 +     */
 +    @Override
 +    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
 +        return defaultDescriptionService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
 +     */
 +    @Override
 +    public Session getSession() {
 +        return defaultDescriptionService.getSession();
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<DescriptionBase>> getUuidAndTitleCache() {
 +        return defaultDescriptionService.getUuidAndTitleCache();
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param limit
 +     * @param start
 +     * @param groups
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> group(Class<? extends DescriptionBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
 +        return defaultDescriptionService.group(clazz, limit, start, groups, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param hasImages
 +     * @param hasText
 +     * @param feature
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#count(java.lang.Class, java.lang.Boolean, java.lang.Boolean, java.util.Set)
 +     */
 +    @Override
 +    public int count(Class<? extends DescriptionBase> type, Boolean hasImages, Boolean hasText, Set<Feature> feature) {
 +        return defaultDescriptionService.count(type, hasImages, hasText, feature);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<DescriptionBase> findByTitle(Class<? extends DescriptionBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultDescriptionService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<DescriptionBase> list(Class<? extends DescriptionBase> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultDescriptionService.list(type, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param description
 +     * @param features
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getDescriptionElements(eu.etaxonomy.cdm.model.description.DescriptionBase, java.util.Set, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Deprecated
 +    @Override
 +    public Pager<DescriptionElementBase> getDescriptionElements(DescriptionBase description, Set<Feature> features, Class<? extends DescriptionElementBase> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.getDescriptionElements(description, features, type, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Pager<DescriptionBase> findByTitle(IIdentifiableEntityServiceConfigurator<DescriptionBase> configurator) {
 +        return defaultDescriptionService.findByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
 +     */
 +    @Override
 +    public Integer countByTitle(Class<? extends DescriptionBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
 +        return defaultDescriptionService.countByTitle(clazz, queryString, matchmode, criteria);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
 +     */
 +    @Override
 +    public DescriptionBase load(UUID uuid) {
 +        return defaultDescriptionService.load(uuid);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
 +     */
 +    @Override
 +    public DescriptionBase load(UUID uuid, List<String> propertyPaths) {
 +        return defaultDescriptionService.load(uuid, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<DescriptionBase> configurator) {
 +        return defaultDescriptionService.countByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public DescriptionBase merge(DescriptionBase transientObject) {
 +        return defaultDescriptionService.merge(transientObject);
 +    }
 +
 +    /**
 +     * @param description
 +     * @param descriptionType
 +     * @param features
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#pageDescriptionElements(eu.etaxonomy.cdm.model.description.DescriptionBase, java.lang.Class, java.util.Set, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<DescriptionElementBase> pageDescriptionElements(DescriptionBase description, Class<? extends DescriptionBase> descriptionType, Set<Feature> features, Class<? extends DescriptionElementBase> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.pageDescriptionElements(description, descriptionType, features, type, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<DescriptionBase> listByTitle(Class<? extends DescriptionBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultDescriptionService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<DescriptionBase> page(Class<? extends DescriptionBase> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultDescriptionService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID refresh(DescriptionBase persistentObject) {
 +        return defaultDescriptionService.refresh(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<DescriptionBase> listByReferenceTitle(Class<? extends DescriptionBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultDescriptionService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param description
 +     * @param features
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#listDescriptionElements(eu.etaxonomy.cdm.model.description.DescriptionBase, java.util.Set, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Deprecated
 +    @Override
 +    public List<DescriptionElementBase> listDescriptionElements(DescriptionBase description, Set<Feature> features, Class<? extends DescriptionElementBase> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.listDescriptionElements(description, features, type, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param tableName
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
 +     */
 +    @Override
 +    public List<DescriptionBase> rows(String tableName, int limit, int start) {
 +        return defaultDescriptionService.rows(tableName, limit, start);
 +    }
 +
 +    /**
 +     * @param newInstances
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, DescriptionBase> save(Collection<DescriptionBase> newInstances) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param newInstance
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID save(DescriptionBase newInstance) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID saveOrUpdate(DescriptionBase transientObject) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<DescriptionBase> search(Class<? extends DescriptionBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultDescriptionService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param transientObjects
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, DescriptionBase> saveOrUpdate(Collection<DescriptionBase> transientObjects) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID update(DescriptionBase transientObject) {
 +        return defaultDescriptionService.update(transientObject);
 +    }
 +
 +    /**
 +     * @param description
 +     * @param descriptionType
 +     * @param features
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#listDescriptionElements(eu.etaxonomy.cdm.model.description.DescriptionBase, java.lang.Class, java.util.Set, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public List<DescriptionElementBase> listDescriptionElements(DescriptionBase description, Class<? extends DescriptionBase> descriptionType, Set<Feature> features, Class<? extends DescriptionElementBase> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.listDescriptionElements(description, descriptionType, features, type, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param example
 +     * @param includeProperties
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<DescriptionBase> list(DescriptionBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultDescriptionService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param matchStrategy
 +     * @param mergeStrategy
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
 +     */
 +    @Override
 +    public int deduplicate(Class<? extends DescriptionBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
 +        return defaultDescriptionService.deduplicate(clazz, matchStrategy, mergeStrategy);
 +    }
 +
 +    /**
 +     * @param annotatedObj
 +     * @param status
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getDescriptionElementAnnotations(eu.etaxonomy.cdm.model.description.DescriptionElementBase, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Annotation> getDescriptionElementAnnotations(DescriptionElementBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultDescriptionService.getDescriptionElementAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param matchMode
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
 +     */
 +    @Override
 +    public Pager<DescriptionBase> findTitleCache(Class<? extends DescriptionBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
 +        return defaultDescriptionService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param scopes
 +     * @param geographicalScope
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#pageTaxonDescriptions(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<TaxonDescription> pageTaxonDescriptions(Taxon taxon, Set<DefinedTerm> scopes, Set<NamedArea> geographicalScope, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.pageTaxonDescriptions(taxon, scopes, geographicalScope, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param scopes
 +     * @param geographicalScope
 +     * @param markerTypes
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#pageTaxonDescriptions(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.util.Set, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<TaxonDescription> pageTaxonDescriptions(Taxon taxon, Set<DefinedTerm> scopes, Set<NamedArea> geographicalScope, Set<MarkerType> markerTypes, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.pageTaxonDescriptions(taxon, scopes, geographicalScope, markerTypes, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param scopes
 +     * @param geographicalScope
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#listTaxonDescriptions(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonDescription> listTaxonDescriptions(Taxon taxon, Set<DefinedTerm> scopes, Set<NamedArea> geographicalScope, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.listTaxonDescriptions(taxon, scopes, geographicalScope, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param scopes
 +     * @param geographicalScope
 +     * @param markerTypes
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#listTaxonDescriptions(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.util.Set, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonDescription> listTaxonDescriptions(Taxon taxon, Set<DefinedTerm> scopes, Set<NamedArea> geographicalScope, Set<MarkerType> markerTypes, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.listTaxonDescriptions(taxon, scopes, geographicalScope, markerTypes, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxonUuid
 +     * @param limitToGalleries
 +     * @param markerTypes
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#listTaxonDescriptionMedia(java.util.UUID, boolean, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public List<Media> listTaxonDescriptionMedia(UUID taxonUuid, boolean limitToGalleries, Set<MarkerType> markerTypes, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.listTaxonDescriptionMedia(taxonUuid, limitToGalleries, markerTypes, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxonUuid
 +     * @param limitToGalleries
 +     * @param markerTypes
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#countTaxonDescriptionMedia(java.util.UUID, boolean, java.util.Set)
 +     */
 +    @Override
 +    public int countTaxonDescriptionMedia(UUID taxonUuid, boolean limitToGalleries, Set<MarkerType> markerTypes) {
 +        return defaultDescriptionService.countTaxonDescriptionMedia(taxonUuid, limitToGalleries, markerTypes);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getTaxonNameDescriptions(eu.etaxonomy.cdm.model.name.TaxonNameBase, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<TaxonNameDescription> getTaxonNameDescriptions(TaxonNameBase name, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.getTaxonNameDescriptions(name, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param namedAreas
 +     * @param presence
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#searchDescriptionByDistribution(java.util.Set, eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<TaxonDescription> searchDescriptionByDistribution(Set<NamedArea> namedAreas, PresenceAbsenceTermBase presence, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultDescriptionService.searchDescriptionByDistribution(namedAreas, presence, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#searchElements(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<DescriptionElementBase> searchElements(Class<? extends DescriptionElementBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultDescriptionService.searchElements(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param descriptionElement
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getMedia(eu.etaxonomy.cdm.model.description.DescriptionElementBase, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<Media> getMedia(DescriptionElementBase descriptionElement, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.getMedia(descriptionElement, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param features
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getDescriptionElementsForTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Deprecated
 +    @Override
 +    public <T extends DescriptionElementBase> List<T> getDescriptionElementsForTaxon(Taxon taxon, Set<Feature> features, Class<T> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.getDescriptionElementsForTaxon(taxon, features, type, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param features
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#listDescriptionElementsForTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public <T extends DescriptionElementBase> List<T> listDescriptionElementsForTaxon(Taxon taxon, Set<Feature> features, Class<T> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.listDescriptionElementsForTaxon(taxon, features, type, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param features
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#pageDescriptionElementsForTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public <T extends DescriptionElementBase> Pager<T> pageDescriptionElementsForTaxon(Taxon taxon, Set<Feature> features, Class<T> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.pageDescriptionElementsForTaxon(taxon, features, type, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxonDescriptions
 +     * @param levels
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getOrderedDistributions(java.util.Set, java.util.Set, java.util.List)
 +     */
 +    @Override
 +    public DistributionTree getOrderedDistributions(Set<TaxonDescription> taxonDescriptions, Set<NamedAreaLevel> levels, List<String> propertyPaths) {
 +        return defaultDescriptionService.getOrderedDistributions(taxonDescriptions, levels, propertyPaths);
 +    }
 +
 +    /**
 +     * @param featureTree
 +     * @param description
 +     * @param preferredLanguages
 +     * @param separator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#generateNaturalLanguageDescription(eu.etaxonomy.cdm.model.description.FeatureTree, eu.etaxonomy.cdm.model.description.TaxonDescription, java.util.List, java.lang.String)
 +     */
 +    @Override
 +    public String generateNaturalLanguageDescription(FeatureTree featureTree, TaxonDescription description, List<Language> preferredLanguages, String separator) {
 +        return defaultDescriptionService.generateNaturalLanguageDescription(featureTree, description, preferredLanguages, separator);
 +    }
 +
 +    /**
 +     * @param description
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#hasStructuredData(eu.etaxonomy.cdm.model.description.DescriptionBase)
 +     */
 +    @Deprecated
 +    @Override
 +    public boolean hasStructuredData(DescriptionBase<?> description) {
 +        return defaultDescriptionService.hasStructuredData(description);
 +    }
 +
 +    /**
 +     * @param descriptionElements
 +     * @param targetDescription
 +     * @param isPaste
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#moveDescriptionElementsToDescription(java.util.Collection, eu.etaxonomy.cdm.model.description.DescriptionBase, boolean)
 +     */
 +    @Override
 +    public void moveDescriptionElementsToDescription(Collection<DescriptionElementBase> descriptionElements, DescriptionBase targetDescription, boolean isPaste) {
 +        defaultDescriptionService.moveDescriptionElementsToDescription(descriptionElements, targetDescription, isPaste);
 +    }
 +
 +    /* (non-Javadoc)
 +     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#pageNamedAreasInUse(java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<NamedArea> pageNamedAreasInUse(Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultDescriptionService.pageNamedAreasInUse(pageSize, pageNumber, propertyPaths);
 +    }
 +
 +
 +}
index 420c293c042a55bb7019e1dac1a79d58a35b5b3a,0000000000000000000000000000000000000000..13f889cc444a7949492435f57398242d886fdbd2
mode 100644,000000..100644
--- /dev/null
@@@ -1,1194 -1,0 +1,1194 @@@
-     public UUID delete(TaxonNameBase persistentObject) {
 +// $Id$
 +/**
 +* Copyright (C) 2013 EDIT
 +* European Distributed Institute of Taxonomy
 +* http://www.e-taxonomy.eu
 +*
 +* The contents of this file are subject to the Mozilla Public License Version 1.1
 +* See LICENSE.TXT at the top of this package for the full license terms.
 +*/
 +package eu.etaxonomy.taxeditor.dataimport.transientServices;
 +
 +import java.io.IOException;
 +import java.util.Collection;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Set;
 +import java.util.UUID;
 +
 +import org.apache.lucene.index.CorruptIndexException;
 +import org.apache.lucene.queryParser.ParseException;
 +import org.hibernate.LockMode;
 +import org.hibernate.Session;
 +import org.hibernate.criterion.Criterion;
 +import org.hibernate.envers.query.criteria.AuditCriterion;
 +
 +import eu.etaxonomy.cdm.api.service.INameService;
 +import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 +import eu.etaxonomy.cdm.api.service.config.NameDeletionConfigurator;
 +import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 +import eu.etaxonomy.cdm.api.service.pager.Pager;
 +import eu.etaxonomy.cdm.api.service.search.DocumentSearchResult;
 +import eu.etaxonomy.cdm.api.service.search.SearchResult;
 +import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 +import eu.etaxonomy.cdm.model.common.Annotation;
 +import eu.etaxonomy.cdm.model.common.CdmBase;
 +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.Language;
 +import eu.etaxonomy.cdm.model.common.Marker;
 +import eu.etaxonomy.cdm.model.common.MarkerType;
 +import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
 +import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;
 +import eu.etaxonomy.cdm.model.common.RelationshipBase;
 +import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction;
 +import eu.etaxonomy.cdm.model.common.TermVocabulary;
 +import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
 +import eu.etaxonomy.cdm.model.media.Rights;
 +import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 +import eu.etaxonomy.cdm.model.name.HybridRelationship;
 +import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
 +import eu.etaxonomy.cdm.model.name.NameRelationship;
 +import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 +import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
 +import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
 +import eu.etaxonomy.cdm.model.name.NonViralName;
 +import eu.etaxonomy.cdm.model.name.Rank;
 +import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
 +import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 +import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
 +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.query.Grouping;
 +import eu.etaxonomy.cdm.persistence.query.MatchMode;
 +import eu.etaxonomy.cdm.persistence.query.OrderHint;
 +import eu.etaxonomy.cdm.strategy.cache.TaggedText;
 +import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 +import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 +import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
 +
 +/**
 + * @author pplitzner
 + * @date 27.09.2013
 + *
 + */
 +public class TransientNameService implements INameService {
 +
 +    private INameService defaultNameService;
 +
 +    /**
 +     *
 +     */
 +    public TransientNameService(INameService defaultNameService) {
 +        this.defaultNameService = defaultNameService;
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<TaxonNameBase>> pageAuditEvents(TaxonNameBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultNameService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param annotatedObj
 +     * @param status
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Annotation> getAnnotations(TaxonNameBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IService#clear()
 +     */
 +    @Override
 +    public void clear() {
 +        defaultNameService.clear();
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
 +     */
 +    @Override
 +    public void lock(TaxonNameBase t, LockMode lockMode) {
 +        defaultNameService.lock(t, lockMode);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @param propertyPaths
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
 +     */
 +    @Override
 +    public void refresh(TaxonNameBase t, LockMode lockMode, List<String> propertyPaths) {
 +        defaultNameService.refresh(t, lockMode, propertyPaths);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
 +     */
 +    @Override
 +    public void updateTitleCache() {
 +        defaultNameService.updateTitleCache();
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<TaxonNameBase> getNextAuditEvent(TaxonNameBase t) {
 +        return defaultNameService.getNextAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param annotatableEntity
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Marker> getMarkers(TaxonNameBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param stepSize
 +     * @param cacheStrategy
 +     * @param monitor
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
 +     */
 +    @Override
 +    public void updateTitleCache(Class<? extends TaxonNameBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<TaxonNameBase> cacheStrategy, IProgressMonitor monitor) {
 +        defaultNameService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<TaxonNameBase> getPreviousAuditEvent(TaxonNameBase t) {
 +        return defaultNameService.getPreviousAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
 +     */
 +    @Override
 +    public int count(Class<? extends TaxonNameBase> clazz) {
 +        return defaultNameService.count(clazz);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param config
 +     * @return
 +     * @throws ReferencedObjectUndeletableException
 +     * @see eu.etaxonomy.cdm.api.service.INameService#delete(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.api.service.config.NameDeletionConfigurator)
 +     */
 +    @Override
 +    public UUID delete(TaxonNameBase name, NameDeletionConfigurator config) throws ReferencedObjectUndeletableException {
 +        return defaultNameService.delete(name, config);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param from
 +     * @param to
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageValue
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<TaxonNameBase>> pageAuditEvents(Class<? extends TaxonNameBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultNameService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param lsid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
 +     */
 +    @Override
 +    public TaxonNameBase find(LSID lsid) {
 +        return defaultNameService.find(lsid);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
++    public UUID delete(TaxonNameBase persistentObject) throws ReferencedObjectUndeletableException{
 +        return defaultNameService.delete(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> groupMarkers(Class<? extends TaxonNameBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultNameService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
 +     */
 +    @Override
 +    public boolean exists(UUID uuid) {
 +        return defaultNameService.exists(uuid);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param typeDesignation
 +     * @see eu.etaxonomy.cdm.api.service.INameService#deleteTypeDesignation(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.TypeDesignationBase)
 +     */
 +    @Override
 +    public void deleteTypeDesignation(TaxonNameBase name, TypeDesignationBase typeDesignation) {
 +        defaultNameService.deleteTypeDesignation(name, typeDesignation);
 +    }
 +
 +    /**
 +     * @param x
 +     * @param y
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
 +     */
 +    @Override
 +    public TaxonNameBase replace(TaxonNameBase x, TaxonNameBase y) {
 +        return defaultNameService.replace(x, y);
 +    }
 +
 +    /**
 +     * @param uuidSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
 +     */
 +    @Override
 +    public List<TaxonNameBase> find(Set<UUID> uuidSet) {
 +        return defaultNameService.find(uuidSet);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<IdentifiableSource> getSources(TaxonNameBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultNameService.getSources(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param typeDesignationCollection
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#saveTypeDesignationAll(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, TypeDesignationBase> saveTypeDesignationAll(Collection<TypeDesignationBase> typeDesignationCollection) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
 +     */
 +    @Override
 +    public TaxonNameBase find(UUID uuid) {
 +        return defaultNameService.find(uuid);
 +    }
 +
 +    /**
 +     * @param referencedEntityCollection
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#saveReferencedEntitiesAll(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, ReferencedEntityBase> saveReferencedEntitiesAll(Collection<ReferencedEntityBase> referencedEntityCollection) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param homotypicalGroups
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#saveAllHomotypicalGroups(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, HomotypicalGroup> saveAllHomotypicalGroups(Collection<HomotypicalGroup> homotypicalGroups) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param id
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
 +     */
 +    @Override
 +    public TaxonNameBase find(int id) {
 +        return defaultNameService.find(id);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<Rights> getRights(TaxonNameBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultNameService.getRights(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
 +     */
 +    @Override
 +    public int countMarkers(Class<? extends TaxonNameBase> clazz, Boolean technical) {
 +        return defaultNameService.countMarkers(clazz, technical);
 +    }
 +
 +    /**
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getAllNomenclaturalStatus(int, int)
 +     */
 +    @Override
 +    public List<NomenclaturalStatus> getAllNomenclaturalStatus(int limit, int start) {
 +        return defaultNameService.getAllNomenclaturalStatus(limit, start);
 +    }
 +
 +    /**
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getAllTypeDesignations(int, int)
 +     */
 +    @Override
 +    public List<TypeDesignationBase> getAllTypeDesignations(int limit, int start) {
 +        return defaultNameService.getAllTypeDesignations(limit, start);
 +    }
 +
 +    /**
 +     * @param idSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
 +     */
 +    @Override
 +    public List<TaxonNameBase> findById(Set<Integer> idSet) {
 +        return defaultNameService.findById(idSet);
 +    }
 +
 +    /**
 +     * @param name
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getNamesByName(java.lang.String)
 +     */
 +    @Override
 +    public List<TaxonNameBase> getNamesByName(String name) {
 +        return defaultNameService.getNamesByName(name);
 +    }
 +
 +    /**
 +     * @param nameCache
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getNamesByNameCache(java.lang.String)
 +     */
 +    @Override
 +    public List<NonViralName> getNamesByNameCache(String nameCache) {
 +        return defaultNameService.getNamesByNameCache(nameCache);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param idInSource
 +     * @param idNamespace
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
 +     */
 +    @Override
 +    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
 +        return defaultNameService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
 +     */
 +    @Override
 +    public Session getSession() {
 +        return defaultNameService.getSession();
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<TaxonNameBase>> getUuidAndTitleCache() {
 +        return defaultNameService.getUuidAndTitleCache();
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param limit
 +     * @param start
 +     * @param groups
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> group(Class<? extends TaxonNameBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
 +        return defaultNameService.group(clazz, limit, start, groups, propertyPaths);
 +    }
 +
 +    /**
 +     * @param titleCache
 +     * @param matchMode
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#findNamesByTitleCache(java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
 +     */
 +    @Override
 +    public List<NonViralName> findNamesByTitleCache(String titleCache, MatchMode matchMode, List<String> propertyPaths) {
 +        return defaultNameService.findNamesByTitleCache(titleCache, matchMode, propertyPaths);
 +    }
 +
 +    /**
 +     * @param nameCache
 +     * @param matchMode
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#findNamesByNameCache(java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
 +     */
 +    @Override
 +    public List<NonViralName> findNamesByNameCache(String nameCache, MatchMode matchMode, List<String> propertyPaths) {
 +        return defaultNameService.findNamesByNameCache(nameCache, matchMode, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<TaxonNameBase> findByTitle(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#findNameByUuid(java.util.UUID, java.util.List)
 +     */
 +    @Override
 +    public NonViralName findNameByUuid(UUID uuid, List<String> propertyPaths) {
 +        return defaultNameService.findNameByUuid(uuid, propertyPaths);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param sessionObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getNamesByName(java.lang.String, eu.etaxonomy.cdm.model.common.CdmBase)
 +     */
 +    @Override
 +    public List getNamesByName(String name, CdmBase sessionObject) {
 +        return defaultNameService.getNamesByName(name, sessionObject);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param accuracy
 +     * @param languages
 +     * @param highlightFragments
 +     * @param propertyPaths
 +     * @param maxNoOfResults
 +     * @return
 +     * @throws CorruptIndexException
 +     * @throws IOException
 +     * @throws ParseException
 +     * @see eu.etaxonomy.cdm.api.service.INameService#findByNameFuzzySearch(java.lang.String, float, java.util.List, boolean, java.util.List, int)
 +     */
 +    @Override
 +    public List<SearchResult<TaxonNameBase>> findByNameFuzzySearch(String name, float accuracy, List<Language> languages, boolean highlightFragments, List<String> propertyPaths, int maxNoOfResults) throws CorruptIndexException, IOException, ParseException {
 +        return defaultNameService.findByNameFuzzySearch(name, accuracy, languages, highlightFragments, propertyPaths, maxNoOfResults);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<TaxonNameBase> list(Class<? extends TaxonNameBase> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.list(type, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Pager<TaxonNameBase> findByTitle(IIdentifiableEntityServiceConfigurator<TaxonNameBase> configurator) {
 +        return defaultNameService.findByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
 +     */
 +    @Override
 +    public Integer countByTitle(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
 +        return defaultNameService.countByTitle(clazz, queryString, matchmode, criteria);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
 +     */
 +    @Override
 +    public TaxonNameBase load(UUID uuid) {
 +        return defaultNameService.load(uuid);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param accuracy
 +     * @param languages
 +     * @param highlightFragments
 +     * @param maxNoOfResults
 +     * @return
 +     * @throws CorruptIndexException
 +     * @throws IOException
 +     * @throws ParseException
 +     * @see eu.etaxonomy.cdm.api.service.INameService#findByNameFuzzySearch(java.lang.String, float, java.util.List, boolean, int)
 +     */
 +    @Override
 +    public List<DocumentSearchResult> findByNameFuzzySearch(String name, float accuracy, List<Language> languages, boolean highlightFragments, int maxNoOfResults) throws CorruptIndexException, IOException, ParseException {
 +        return defaultNameService.findByNameFuzzySearch(name, accuracy, languages, highlightFragments, maxNoOfResults);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
 +     */
 +    @Override
 +    public TaxonNameBase load(UUID uuid, List<String> propertyPaths) {
 +        return defaultNameService.load(uuid, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<TaxonNameBase> configurator) {
 +        return defaultNameService.countByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public TaxonNameBase merge(TaxonNameBase transientObject) {
 +        return defaultNameService.merge(transientObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonNameBase> listByTitle(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<TaxonNameBase> page(Class<? extends TaxonNameBase> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param accuracy
 +     * @param languages
 +     * @param highlightFragments
 +     * @param maxNoOfResults
 +     * @return
 +     * @throws CorruptIndexException
 +     * @throws IOException
 +     * @throws ParseException
 +     * @see eu.etaxonomy.cdm.api.service.INameService#findByFuzzyNameCacheSearch(java.lang.String, float, java.util.List, boolean, int)
 +     */
 +    @Override
 +    public List<DocumentSearchResult> findByFuzzyNameCacheSearch(String name, float accuracy, List<Language> languages, boolean highlightFragments, int maxNoOfResults) throws CorruptIndexException, IOException, ParseException {
 +        return defaultNameService.findByFuzzyNameCacheSearch(name, accuracy, languages, highlightFragments, maxNoOfResults);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param wildcard
 +     * @param languages
 +     * @param highlightFragments
 +     * @param maxNoOfResults
 +     * @return
 +     * @throws CorruptIndexException
 +     * @throws IOException
 +     * @throws ParseException
 +     * @see eu.etaxonomy.cdm.api.service.INameService#findByNameExactSearch(java.lang.String, boolean, java.util.List, boolean, int)
 +     */
 +    @Override
 +    public List<DocumentSearchResult> findByNameExactSearch(String name, boolean wildcard, List<Language> languages, boolean highlightFragments, int maxNoOfResults) throws CorruptIndexException, IOException, ParseException {
 +        return defaultNameService.findByNameExactSearch(name, wildcard, languages, highlightFragments, maxNoOfResults);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID refresh(TaxonNameBase persistentObject) {
 +        return defaultNameService.refresh(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonNameBase> listByReferenceTitle(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param tableName
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
 +     */
 +    @Override
 +    public List<TaxonNameBase> rows(String tableName, int limit, int start) {
 +        return defaultNameService.rows(tableName, limit, start);
 +    }
 +
 +    /**
 +     * @param newInstances
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, TaxonNameBase> save(Collection<TaxonNameBase> newInstances) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param newInstance
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID save(TaxonNameBase newInstance) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param title
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#findNamesByTitle(java.lang.String)
 +     */
 +    @Override
 +    public List findNamesByTitle(String title) {
 +        return defaultNameService.findNamesByTitle(title);
 +    }
 +
 +    /**
 +     * @param title
 +     * @param sessionObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#findNamesByTitle(java.lang.String, eu.etaxonomy.cdm.model.common.CdmBase)
 +     */
 +    @Override
 +    public List findNamesByTitle(String title, CdmBase sessionObject) {
 +        return defaultNameService.findNamesByTitle(title, sessionObject);
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID saveOrUpdate(TaxonNameBase transientObject) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getAllHomotypicalGroups(int, int)
 +     */
 +    @Override
 +    public List<HomotypicalGroup> getAllHomotypicalGroups(int limit, int start) {
 +        return defaultNameService.getAllHomotypicalGroups(limit, start);
 +    }
 +
 +    /**
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getAllRelationships(int, int)
 +     */
 +    @Deprecated
 +    @Override
 +    public List<RelationshipBase> getAllRelationships(int limit, int start) {
 +        return defaultNameService.getAllRelationships(limit, start);
 +    }
 +
 +    /**
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getRankVocabulary()
 +     */
 +    @Deprecated
 +    @Override
 +    public OrderedTermVocabulary<Rank> getRankVocabulary() {
 +        return defaultNameService.getRankVocabulary();
 +    }
 +
 +    /**
 +     * @param transientObjects
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, TaxonNameBase> saveOrUpdate(Collection<TaxonNameBase> transientObjects) {
 +        return null;
 +    }
 +
 +    /**
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getStatusTypeVocabulary()
 +     */
 +    @Deprecated
 +    @Override
 +    public TermVocabulary<NomenclaturalStatusType> getStatusTypeVocabulary() {
 +        return defaultNameService.getStatusTypeVocabulary();
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID update(TaxonNameBase transientObject) {
 +        return defaultNameService.update(transientObject);
 +    }
 +
 +    /**
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getSpecimenTypeDesignationStatusVocabulary()
 +     */
 +    @Deprecated
 +    @Override
 +    public TermVocabulary<SpecimenTypeDesignationStatus> getSpecimenTypeDesignationStatusVocabulary() {
 +        return defaultNameService.getSpecimenTypeDesignationStatusVocabulary();
 +    }
 +
 +    /**
 +     * @param example
 +     * @param includeProperties
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonNameBase> list(TaxonNameBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getSpecimenTypeDesignationVocabulary()
 +     */
 +    @Deprecated
 +    @Override
 +    public OrderedTermVocabulary<SpecimenTypeDesignationStatus> getSpecimenTypeDesignationVocabulary() {
 +        return defaultNameService.getSpecimenTypeDesignationVocabulary();
 +    }
 +
 +    /**
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getNameRelationshipTypeVocabulary()
 +     */
 +    @Deprecated
 +    @Override
 +    public TermVocabulary<NameRelationshipType> getNameRelationshipTypeVocabulary() {
 +        return defaultNameService.getNameRelationshipTypeVocabulary();
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param matchStrategy
 +     * @param mergeStrategy
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
 +     */
 +    @Override
 +    public int deduplicate(Class<? extends TaxonNameBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
 +        return defaultNameService.deduplicate(clazz, matchStrategy, mergeStrategy);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param direction
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#listNameRelationships(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.common.RelationshipBase.Direction, eu.etaxonomy.cdm.model.name.NameRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<NameRelationship> listNameRelationships(TaxonNameBase name, Direction direction, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.listNameRelationships(name, direction, type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param matchMode
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
 +     */
 +    @Override
 +    public Pager<TaxonNameBase> findTitleCache(Class<? extends TaxonNameBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
 +        return defaultNameService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param direction
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#pageNameRelationships(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.common.RelationshipBase.Direction, eu.etaxonomy.cdm.model.name.NameRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<NameRelationship> pageNameRelationships(TaxonNameBase name, Direction direction, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.pageNameRelationships(name, direction, type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.INameService#listFromNameRelationships(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.NameRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Deprecated
 +    @Override
 +    public List<NameRelationship> listFromNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.listFromNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.INameService#pageFromNameRelationships(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.NameRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Deprecated
 +    @Override
 +    public Pager<NameRelationship> pageFromNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.pageFromNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.INameService#listToNameRelationships(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.NameRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Deprecated
 +    @Override
 +    public List<NameRelationship> listToNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.listToNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.INameService#pageToNameRelationships(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.NameRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Deprecated
 +    @Override
 +    public Pager<NameRelationship> pageToNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.pageToNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getHybridNames(eu.etaxonomy.cdm.model.name.NonViralName, eu.etaxonomy.cdm.model.name.HybridRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<HybridRelationship> getHybridNames(NonViralName name, HybridRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.getHybridNames(name, type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param status
 +     * @param pageSize
 +     * @param pageNumber
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getTypeDesignations(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus, java.lang.Integer, java.lang.Integer)
 +     */
 +    @Override
 +    public Pager<TypeDesignationBase> getTypeDesignations(TaxonNameBase name, SpecimenTypeDesignationStatus status, Integer pageSize, Integer pageNumber) {
 +        return defaultNameService.getTypeDesignations(name, status, pageSize, pageNumber);
 +    }
 +
 +    /**
 +     * @param name
 +     * @param status
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getTypeDesignations(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<TypeDesignationBase> getTypeDesignations(TaxonNameBase name, SpecimenTypeDesignationStatus status, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultNameService.getTypeDesignations(name, status, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uninomial
 +     * @param infraGenericEpithet
 +     * @param specificEpithet
 +     * @param infraspecificEpithet
 +     * @param rank
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#searchNames(java.lang.String, java.lang.String, java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.name.Rank, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<TaxonNameBase> searchNames(String uninomial, String infraGenericEpithet, String specificEpithet, String infraspecificEpithet, Rank rank, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.searchNames(uninomial, infraGenericEpithet, specificEpithet, infraspecificEpithet, rank, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<TaxonNameBase> search(Class<? extends TaxonNameBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getUuidAndTitleCacheOfNames()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache> getUuidAndTitleCacheOfNames() {
 +        return defaultNameService.getUuidAndTitleCacheOfNames();
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#findByName(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<TaxonNameBase> findByName(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultNameService.findByName(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#findHomotypicalGroup(java.util.UUID)
 +     */
 +    @Override
 +    public HomotypicalGroup findHomotypicalGroup(UUID uuid) {
 +        return defaultNameService.findHomotypicalGroup(uuid);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.INameService#getTaggedName(java.util.UUID)
 +     */
 +    @Override
 +    public List<TaggedText> getTaggedName(UUID uuid) {
 +        return defaultNameService.getTaggedName(uuid);
 +    }
 +
 +
 +}
index c42ae7f578b3ab95126fae79a3c6a2545c4c9726,0000000000000000000000000000000000000000..83f1f6619edec7d0ec6d59173774ce0e0b745557
mode 100644,000000..100644
--- /dev/null
@@@ -1,859 -1,0 +1,860 @@@
-     public UUID delete(SpecimenOrObservationBase persistentObject) {
 +// $Id$
 +/**
 +* Copyright (C) 2013 EDIT
 +* European Distributed Institute of Taxonomy
 +* http://www.e-taxonomy.eu
 +*
 +* The contents of this file are subject to the Mozilla Public License Version 1.1
 +* See LICENSE.TXT at the top of this package for the full license terms.
 +*/
 +package eu.etaxonomy.taxeditor.dataimport.transientServices;
 +
 +import java.io.IOException;
 +import java.util.ArrayList;
 +import java.util.Collection;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Set;
 +import java.util.UUID;
 +
 +import org.apache.lucene.index.CorruptIndexException;
 +import org.apache.lucene.queryParser.ParseException;
 +import org.hibernate.LockMode;
 +import org.hibernate.Session;
 +import org.hibernate.criterion.Criterion;
 +import org.hibernate.envers.query.criteria.AuditCriterion;
 +import org.hibernate.search.spatial.impl.Rectangle;
 +
 +import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 +import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
 +import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 +import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
++import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 +import eu.etaxonomy.cdm.api.service.pager.Pager;
 +import eu.etaxonomy.cdm.api.service.search.SearchResult;
 +import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge;
 +import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 +import eu.etaxonomy.cdm.model.common.Annotation;
 +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.Language;
 +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.description.DescriptionBase;
 +import eu.etaxonomy.cdm.model.location.Country;
 +import eu.etaxonomy.cdm.model.media.Media;
 +import eu.etaxonomy.cdm.model.media.Rights;
 +import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
 +import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 +import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
 +import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 +import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 +import eu.etaxonomy.cdm.model.taxon.Taxon;
 +import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 +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.query.Grouping;
 +import eu.etaxonomy.cdm.persistence.query.MatchMode;
 +import eu.etaxonomy.cdm.persistence.query.OrderHint;
 +import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 +import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 +import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
 +
 +/**
 + * @author pplitzner
 + * @date 26.09.2013
 + *
 + */
 +public class TransientOccurenceService implements IOccurrenceService {
 +
 +    private IOccurrenceService defaultService;
 +    private List<SpecimenOrObservationBase> units;
 +
 +    /**
 +     * @param defaultService
 +     */
 +    public TransientOccurenceService(IOccurrenceService defaultService) {
 +        this.defaultService = defaultService;
 +        this.units = new ArrayList<SpecimenOrObservationBase>();
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<SpecimenOrObservationBase>> pageAuditEvents(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param annotatedObj
 +     * @param status
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Annotation> getAnnotations(SpecimenOrObservationBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IService#clear()
 +     */
 +    @Override
 +    public void clear() {
 +        defaultService.clear();
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
 +     */
 +    @Override
 +    public void lock(SpecimenOrObservationBase t, LockMode lockMode) {
 +        defaultService.lock(t, lockMode);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @param propertyPaths
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
 +     */
 +    @Override
 +    public void refresh(SpecimenOrObservationBase t, LockMode lockMode, List<String> propertyPaths) {
 +        defaultService.refresh(t, lockMode, propertyPaths);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
 +     */
 +    @Override
 +    public void updateTitleCache() {
 +        defaultService.updateTitleCache();
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<SpecimenOrObservationBase> getNextAuditEvent(SpecimenOrObservationBase t) {
 +        return defaultService.getNextAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param annotatableEntity
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Marker> getMarkers(SpecimenOrObservationBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param stepSize
 +     * @param cacheStrategy
 +     * @param monitor
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
 +     */
 +    @Override
 +    public void updateTitleCache(Class<? extends SpecimenOrObservationBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<SpecimenOrObservationBase> cacheStrategy, IProgressMonitor monitor) {
 +        defaultService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<SpecimenOrObservationBase> getPreviousAuditEvent(SpecimenOrObservationBase t) {
 +        return defaultService.getPreviousAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param iso639
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getCountryByIso(java.lang.String)
 +     */
 +    @Override
 +    public Country getCountryByIso(String iso639) {
 +        return defaultService.getCountryByIso(iso639);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
 +     */
 +    @Override
 +    public int count(Class<? extends SpecimenOrObservationBase> clazz) {
 +        return defaultService.count(clazz);
 +    }
 +
 +    /**
 +     * @param name
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getCountryByName(java.lang.String)
 +     */
 +    @Override
 +    public List<Country> getCountryByName(String name) {
 +        return defaultService.getCountryByName(name);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param determinedAs
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#list(java.lang.Class, eu.etaxonomy.cdm.model.taxon.TaxonBase, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<SpecimenOrObservationBase> list(Class<? extends SpecimenOrObservationBase> type, TaxonBase determinedAs, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultService.list(type, determinedAs, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param from
 +     * @param to
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageValue
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<SpecimenOrObservationBase>> pageAuditEvents(Class<? extends SpecimenOrObservationBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param lsid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
 +     */
 +    @Override
 +    public SpecimenOrObservationBase find(LSID lsid) {
 +        return defaultService.find(lsid);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
++    public UUID delete(SpecimenOrObservationBase persistentObject) throws ReferencedObjectUndeletableException{
 +        return defaultService.delete(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> groupMarkers(Class<? extends SpecimenOrObservationBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
 +     */
 +    @Override
 +    public boolean exists(UUID uuid) {
 +        return defaultService.exists(uuid);
 +    }
 +
 +    /**
 +     * @param x
 +     * @param y
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
 +     */
 +    @Override
 +    public SpecimenOrObservationBase replace(SpecimenOrObservationBase x, SpecimenOrObservationBase y) {
 +        return defaultService.replace(x, y);
 +    }
 +
 +    /**
 +     * @param uuidSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
 +     */
 +    @Override
 +    public List<SpecimenOrObservationBase> find(Set<UUID> uuidSet) {
 +        return defaultService.find(uuidSet);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<IdentifiableSource> getSources(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultService.getSources(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
 +     */
 +    @Override
 +    public SpecimenOrObservationBase find(UUID uuid) {
 +        return defaultService.find(uuid);
 +    }
 +
 +    /**
 +     * @param id
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
 +     */
 +    @Override
 +    public SpecimenOrObservationBase find(int id) {
 +        return defaultService.find(id);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<Rights> getRights(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultService.getRights(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
 +     */
 +    @Override
 +    public int countMarkers(Class<? extends SpecimenOrObservationBase> clazz, Boolean technical) {
 +        return defaultService.countMarkers(clazz, technical);
 +    }
 +
 +    /**
 +     * @param occurence
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getMedia(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<Media> getMedia(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultService.getMedia(occurence, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param idSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
 +     */
 +    @Override
 +    public List<SpecimenOrObservationBase> findById(Set<Integer> idSet) {
 +        return defaultService.findById(idSet);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param idInSource
 +     * @param idNamespace
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
 +     */
 +    @Override
 +    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
 +        return defaultService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
 +     */
 +    @Override
 +    public Session getSession() {
 +        return defaultService.getSession();
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<SpecimenOrObservationBase>> getUuidAndTitleCache() {
 +        return defaultService.getUuidAndTitleCache();
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param limit
 +     * @param start
 +     * @param groups
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> group(Class<? extends SpecimenOrObservationBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
 +        return defaultService.group(clazz, limit, start, groups, propertyPaths);
 +    }
 +
 +    /**
 +     * @param occurence
 +     * @param taxonBase
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDeterminations(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.model.taxon.TaxonBase, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<DeterminationEvent> getDeterminations(SpecimenOrObservationBase occurence, TaxonBase taxonBase, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultService.getDeterminations(occurence, taxonBase, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<SpecimenOrObservationBase> findByTitle(Class<? extends SpecimenOrObservationBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param occurence
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivationEvents(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<DerivationEvent> getDerivationEvents(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultService.getDerivationEvents(occurence, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<SpecimenOrObservationBase> list(Class<? extends SpecimenOrObservationBase> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultService.list(type, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param query
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<SpecimenOrObservationBase> search(Class<? extends SpecimenOrObservationBase> clazz, String query, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultService.search(clazz, query, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Pager<SpecimenOrObservationBase> findByTitle(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> configurator) {
 +        return defaultService.findByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
 +     */
 +    @Override
 +    public Integer countByTitle(Class<? extends SpecimenOrObservationBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
 +        return defaultService.countByTitle(clazz, queryString, matchmode, criteria);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
 +     */
 +    @Override
 +    public SpecimenOrObservationBase load(UUID uuid) {
 +        return defaultService.load(uuid);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
 +     */
 +    @Override
 +    public SpecimenOrObservationBase load(UUID uuid, List<String> propertyPaths) {
 +        return defaultService.load(uuid, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> configurator) {
 +        return defaultService.countByTitle(configurator);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getFieldUnitUuidAndTitleCache()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<FieldUnit>> getFieldUnitUuidAndTitleCache() {
 +        return defaultService.getFieldUnitUuidAndTitleCache();
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivedUnitUuidAndTitleCache()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<DerivedUnit>> getDerivedUnitUuidAndTitleCache() {
 +        return defaultService.getDerivedUnitUuidAndTitleCache();
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public SpecimenOrObservationBase merge(SpecimenOrObservationBase transientObject) {
 +        return defaultService.merge(transientObject);
 +    }
 +
 +    /**
 +     * @param derivedUnit
 +     * @param propertyPaths
 +     * @return
 +     * @throws DerivedUnitFacadeNotSupportedException
 +     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivedUnitFacade(eu.etaxonomy.cdm.model.occurrence.DerivedUnit, java.util.List)
 +     */
 +    @Override
 +    public DerivedUnitFacade getDerivedUnitFacade(DerivedUnit derivedUnit, List<String> propertyPaths) throws DerivedUnitFacadeNotSupportedException {
 +        return defaultService.getDerivedUnitFacade(derivedUnit, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<SpecimenOrObservationBase> listByTitle(Class<? extends SpecimenOrObservationBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param description
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listDerivedUnitFacades(eu.etaxonomy.cdm.model.description.DescriptionBase, java.util.List)
 +     */
 +    @Override
 +    public List<DerivedUnitFacade> listDerivedUnitFacades(DescriptionBase description, List<String> propertyPaths) {
 +        return defaultService.listDerivedUnitFacades(description, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<SpecimenOrObservationBase> page(Class<? extends SpecimenOrObservationBase> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param includeRelationships
 +     * @param associatedTaxon
 +     * @param maxDepth
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listByAssociatedTaxon(java.lang.Class, java.util.Set, eu.etaxonomy.cdm.model.taxon.Taxon, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public <T extends SpecimenOrObservationBase> List<T> listByAssociatedTaxon(Class<T> type, Set<TaxonRelationshipEdge> includeRelationships, Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultService.listByAssociatedTaxon(type, includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID refresh(SpecimenOrObservationBase persistentObject) {
 +        return defaultService.refresh(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<SpecimenOrObservationBase> listByReferenceTitle(Class<? extends SpecimenOrObservationBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param tableName
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
 +     */
 +    @Override
 +    public List<SpecimenOrObservationBase> rows(String tableName, int limit, int start) {
 +        return defaultService.rows(tableName, limit, start);
 +    }
 +
 +    /**
 +     * @param newInstances
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, SpecimenOrObservationBase> save(Collection<SpecimenOrObservationBase> newInstances) {
 +        for(SpecimenOrObservationBase unit:newInstances){
 +            save(unit);
 +        }
 +        return null;
 +    }
 +
 +    /**
 +     * @param type
 +     * @param includeRelationships
 +     * @param associatedTaxon
 +     * @param maxDepth
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#pageByAssociatedTaxon(java.lang.Class, java.util.Set, eu.etaxonomy.cdm.model.taxon.Taxon, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public <T extends SpecimenOrObservationBase> Pager<T> pageByAssociatedTaxon(Class<T> type, Set<TaxonRelationshipEdge> includeRelationships, Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultService.pageByAssociatedTaxon(type, includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param newInstance
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID save(SpecimenOrObservationBase newInstance) {
 +        units.add(newInstance);
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID saveOrUpdate(SpecimenOrObservationBase transientObject) {
 +        units.add(transientObject);
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObjects
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, SpecimenOrObservationBase> saveOrUpdate(Collection<SpecimenOrObservationBase> transientObjects) {
 +        for(SpecimenOrObservationBase unit:transientObjects){
 +            saveOrUpdate(unit);
 +        }
 +        return null;
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param boundingBox
 +     * @param languages
 +     * @param highlightFragments
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @throws CorruptIndexException
 +     * @throws IOException
 +     * @throws ParseException
 +     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#findByFullText(java.lang.Class, java.lang.String, org.hibernate.search.spatial.impl.Rectangle, java.util.List, boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<SearchResult<SpecimenOrObservationBase>> findByFullText(Class<? extends SpecimenOrObservationBase> clazz, String queryString, Rectangle boundingBox, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException {
 +        return defaultService.findByFullText(clazz, queryString, boundingBox, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID update(SpecimenOrObservationBase transientObject) {
 +        return defaultService.update(transientObject);
 +    }
 +
 +    /**
 +     * @param example
 +     * @param includeProperties
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<SpecimenOrObservationBase> list(SpecimenOrObservationBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param matchStrategy
 +     * @param mergeStrategy
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
 +     */
 +    @Override
 +    public int deduplicate(Class<? extends SpecimenOrObservationBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
 +        return defaultService.deduplicate(clazz, matchStrategy, mergeStrategy);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param matchMode
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
 +     */
 +    @Override
 +    public Pager<SpecimenOrObservationBase> findTitleCache(Class<? extends SpecimenOrObservationBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
 +        return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
 +    }
 +
 +    /**
 +     * @return
 +     */
 +    public List<SpecimenOrObservationBase> getUnits() {
 +        return units;
 +    }
 +
 +}
index cfcaca5e1c82a788355bcedaf7249f2d48203fcd,0000000000000000000000000000000000000000..c38e0f42efaed692676e682ba82c02823514ffce
mode 100644,000000..100644
--- /dev/null
@@@ -1,693 -1,0 +1,694 @@@
-     public UUID delete(Reference persistentObject) {
 +// $Id$
 +/**
 +* Copyright (C) 2013 EDIT
 +* European Distributed Institute of Taxonomy
 +* http://www.e-taxonomy.eu
 +*
 +* The contents of this file are subject to the Mozilla Public License Version 1.1
 +* See LICENSE.TXT at the top of this package for the full license terms.
 +*/
 +package eu.etaxonomy.taxeditor.dataimport.transientServices;
 +
 +import java.util.Collection;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Set;
 +import java.util.UUID;
 +
 +import org.hibernate.LockMode;
 +import org.hibernate.Session;
 +import org.hibernate.criterion.Criterion;
 +import org.hibernate.envers.query.criteria.AuditCriterion;
 +
 +import eu.etaxonomy.cdm.api.service.IReferenceService;
 +import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
++import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 +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.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.Rights;
 +import eu.etaxonomy.cdm.model.reference.Reference;
 +import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 +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.query.Grouping;
 +import eu.etaxonomy.cdm.persistence.query.MatchMode;
 +import eu.etaxonomy.cdm.persistence.query.OrderHint;
 +import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 +import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 +import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
 +
 +/**
 + * @author pplitzner
 + * @date 27.09.2013
 + *
 + */
 +public class TransientReferenceService implements IReferenceService {
 +
 +    private IReferenceService defaultReferenceService;
 +
 +    /**
 +     * @param defaultReferenceService
 +     */
 +    public TransientReferenceService(IReferenceService defaultReferenceService) {
 +        this.defaultReferenceService = defaultReferenceService;
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IReferenceService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Reference> search(Class<? extends Reference> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultReferenceService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<Reference>> pageAuditEvents(Reference t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultReferenceService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param annotatedObj
 +     * @param status
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Annotation> getAnnotations(Reference annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultReferenceService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IService#clear()
 +     */
 +    @Override
 +    public void clear() {
 +        defaultReferenceService.clear();
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
 +     */
 +    @Override
 +    public void lock(Reference t, LockMode lockMode) {
 +        defaultReferenceService.lock(t, lockMode);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @param propertyPaths
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
 +     */
 +    @Override
 +    public void refresh(Reference t, LockMode lockMode, List<String> propertyPaths) {
 +        defaultReferenceService.refresh(t, lockMode, propertyPaths);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
 +     */
 +    @Override
 +    public void updateTitleCache() {
 +        defaultReferenceService.updateTitleCache();
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<Reference> getNextAuditEvent(Reference t) {
 +        return defaultReferenceService.getNextAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param annotatableEntity
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Marker> getMarkers(Reference annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultReferenceService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IReferenceService#getUuidAndTitle()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<Reference>> getUuidAndTitle() {
 +        return defaultReferenceService.getUuidAndTitle();
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param stepSize
 +     * @param cacheStrategy
 +     * @param monitor
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
 +     */
 +    @Override
 +    public void updateTitleCache(Class<? extends Reference> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<Reference> cacheStrategy, IProgressMonitor monitor) {
 +        defaultReferenceService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<Reference> getPreviousAuditEvent(Reference t) {
 +        return defaultReferenceService.getPreviousAuditEvent(t);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IReferenceService#getAllReferencesForPublishing()
 +     */
 +    @Override
 +    public List<Reference> getAllReferencesForPublishing() {
 +        return defaultReferenceService.getAllReferencesForPublishing();
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
 +     */
 +    @Override
 +    public int count(Class<? extends Reference> clazz) {
 +        return defaultReferenceService.count(clazz);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IReferenceService#getAllNomenclaturalReferences()
 +     */
 +    @Override
 +    public List<Reference> getAllNomenclaturalReferences() {
 +        return defaultReferenceService.getAllNomenclaturalReferences();
 +    }
 +
 +    /**
 +     * @param reference
 +     * @param includeSubordinateReferences
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IReferenceService#listCoveredTaxa(eu.etaxonomy.cdm.model.reference.Reference, boolean, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonBase> listCoveredTaxa(Reference reference, boolean includeSubordinateReferences, List<String> propertyPaths) {
 +        return defaultReferenceService.listCoveredTaxa(reference, includeSubordinateReferences, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param from
 +     * @param to
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageValue
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<Reference>> pageAuditEvents(Class<? extends Reference> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultReferenceService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param lsid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
 +     */
 +    @Override
 +    public Reference find(LSID lsid) {
 +        return defaultReferenceService.find(lsid);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
++    public UUID delete(Reference persistentObject) throws ReferencedObjectUndeletableException{
 +        return defaultReferenceService.delete(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> groupMarkers(Class<? extends Reference> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultReferenceService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
 +     */
 +    @Override
 +    public boolean exists(UUID uuid) {
 +        return defaultReferenceService.exists(uuid);
 +    }
 +
 +    /**
 +     * @param x
 +     * @param y
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
 +     */
 +    @Override
 +    public Reference replace(Reference x, Reference y) {
 +        return defaultReferenceService.replace(x, y);
 +    }
 +
 +    /**
 +     * @param uuidSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
 +     */
 +    @Override
 +    public List<Reference> find(Set<UUID> uuidSet) {
 +        return defaultReferenceService.find(uuidSet);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<IdentifiableSource> getSources(Reference t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultReferenceService.getSources(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
 +     */
 +    @Override
 +    public Reference find(UUID uuid) {
 +        return defaultReferenceService.find(uuid);
 +    }
 +
 +    /**
 +     * @param id
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
 +     */
 +    @Override
 +    public Reference find(int id) {
 +        return defaultReferenceService.find(id);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<Rights> getRights(Reference t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultReferenceService.getRights(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
 +     */
 +    @Override
 +    public int countMarkers(Class<? extends Reference> clazz, Boolean technical) {
 +        return defaultReferenceService.countMarkers(clazz, technical);
 +    }
 +
 +    /**
 +     * @param idSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
 +     */
 +    @Override
 +    public List<Reference> findById(Set<Integer> idSet) {
 +        return defaultReferenceService.findById(idSet);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param idInSource
 +     * @param idNamespace
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
 +     */
 +    @Override
 +    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
 +        return defaultReferenceService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
 +     */
 +    @Override
 +    public Session getSession() {
 +        return defaultReferenceService.getSession();
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<Reference>> getUuidAndTitleCache() {
 +        return defaultReferenceService.getUuidAndTitleCache();
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param limit
 +     * @param start
 +     * @param groups
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> group(Class<? extends Reference> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
 +        return defaultReferenceService.group(clazz, limit, start, groups, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Reference> findByTitle(Class<? extends Reference> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultReferenceService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<Reference> list(Class<? extends Reference> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultReferenceService.list(type, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Pager<Reference> findByTitle(IIdentifiableEntityServiceConfigurator<Reference> configurator) {
 +        return defaultReferenceService.findByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
 +     */
 +    @Override
 +    public Integer countByTitle(Class<? extends Reference> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
 +        return defaultReferenceService.countByTitle(clazz, queryString, matchmode, criteria);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
 +     */
 +    @Override
 +    public Reference load(UUID uuid) {
 +        return defaultReferenceService.load(uuid);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
 +     */
 +    @Override
 +    public Reference load(UUID uuid, List<String> propertyPaths) {
 +        return defaultReferenceService.load(uuid, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<Reference> configurator) {
 +        return defaultReferenceService.countByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public Reference merge(Reference transientObject) {
 +        return defaultReferenceService.merge(transientObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Reference> listByTitle(Class<? extends Reference> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultReferenceService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<Reference> page(Class<? extends Reference> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultReferenceService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID refresh(Reference persistentObject) {
 +        return defaultReferenceService.refresh(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Reference> listByReferenceTitle(Class<? extends Reference> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultReferenceService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param tableName
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
 +     */
 +    @Override
 +    public List<Reference> rows(String tableName, int limit, int start) {
 +        return defaultReferenceService.rows(tableName, limit, start);
 +    }
 +
 +    /**
 +     * @param newInstances
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, Reference> save(Collection<Reference> newInstances) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param newInstance
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID save(Reference newInstance) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID saveOrUpdate(Reference transientObject) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObjects
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, Reference> saveOrUpdate(Collection<Reference> transientObjects) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID update(Reference transientObject) {
 +        return defaultReferenceService.update(transientObject);
 +    }
 +
 +    /**
 +     * @param example
 +     * @param includeProperties
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Reference> list(Reference example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultReferenceService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param matchStrategy
 +     * @param mergeStrategy
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
 +     */
 +    @Override
 +    public int deduplicate(Class<? extends Reference> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
 +        return defaultReferenceService.deduplicate(clazz, matchStrategy, mergeStrategy);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param matchMode
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
 +     */
 +    @Override
 +    public Pager<Reference> findTitleCache(Class<? extends Reference> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
 +        return defaultReferenceService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
 +    }
 +
 +
 +}
index 628fc1389a63bdae7a909b263edf5bfe8f111e38,0000000000000000000000000000000000000000..587b20bbbbabc06d99bf1d7100d2b9329808a18e
mode 100644,000000..100644
--- /dev/null
@@@ -1,1398 -1,0 +1,1399 @@@
-     public UUID delete(TaxonBase persistentObject) {
 +// $Id$
 +/**
 +* Copyright (C) 2013 EDIT
 +* European Distributed Institute of Taxonomy
 +* http://www.e-taxonomy.eu
 +*
 +* The contents of this file are subject to the Mozilla Public License Version 1.1
 +* See LICENSE.TXT at the top of this package for the full license terms.
 +*/
 +package eu.etaxonomy.taxeditor.dataimport.transientServices;
 +
 +import java.io.IOException;
 +import java.util.Collection;
 +import java.util.EnumSet;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Set;
 +import java.util.UUID;
 +
 +import org.apache.lucene.index.CorruptIndexException;
 +import org.apache.lucene.queryParser.ParseException;
 +import org.hibernate.LockMode;
 +import org.hibernate.Session;
 +import org.hibernate.criterion.Criterion;
 +import org.hibernate.envers.query.criteria.AuditCriterion;
 +
 +import eu.etaxonomy.cdm.api.service.ITaxonService;
 +import eu.etaxonomy.cdm.api.service.TaxaAndNamesSearchMode;
 +import eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator;
 +import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 +import eu.etaxonomy.cdm.api.service.config.MatchingTaxonConfigurator;
 +import eu.etaxonomy.cdm.api.service.config.SynonymDeletionConfigurator;
 +import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
 +import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;
 +import eu.etaxonomy.cdm.api.service.exception.HomotypicalGroupChangeException;
++import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 +import eu.etaxonomy.cdm.api.service.pager.Pager;
 +import eu.etaxonomy.cdm.api.service.search.LuceneMultiSearchException;
 +import eu.etaxonomy.cdm.api.service.search.SearchResult;
 +import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge;
 +import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 +import eu.etaxonomy.cdm.model.common.Annotation;
 +import eu.etaxonomy.cdm.model.common.ISourceable;
 +import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 +import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 +import eu.etaxonomy.cdm.model.common.LSID;
 +import eu.etaxonomy.cdm.model.common.Language;
 +import eu.etaxonomy.cdm.model.common.Marker;
 +import eu.etaxonomy.cdm.model.common.MarkerType;
 +import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
 +import eu.etaxonomy.cdm.model.common.RelationshipBase;
 +import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction;
 +import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
 +import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 +import eu.etaxonomy.cdm.model.description.Feature;
 +import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
 +import eu.etaxonomy.cdm.model.location.NamedArea;
 +import eu.etaxonomy.cdm.model.media.Media;
 +import eu.etaxonomy.cdm.model.media.MediaRepresentation;
 +import eu.etaxonomy.cdm.model.media.Rights;
 +import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 +import eu.etaxonomy.cdm.model.name.Rank;
 +import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 +import eu.etaxonomy.cdm.model.reference.Reference;
 +import eu.etaxonomy.cdm.model.taxon.Classification;
 +import eu.etaxonomy.cdm.model.taxon.Synonym;
 +import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
 +import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
 +import eu.etaxonomy.cdm.model.taxon.Taxon;
 +import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 +import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 +import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 +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.fetch.CdmFetch;
 +import eu.etaxonomy.cdm.persistence.query.Grouping;
 +import eu.etaxonomy.cdm.persistence.query.MatchMode;
 +import eu.etaxonomy.cdm.persistence.query.OrderHint;
 +import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 +import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 +import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
 +
 +/**
 + * @author pplitzner
 + * @date 27.09.2013
 + *
 + */
 +public class TransientTaxonService implements ITaxonService {
 +
 +    private final ITaxonService defaultTaxonService;
 +
 +    /**
 +     * @param defaultTaxonService
 +     */
 +    public TransientTaxonService(ITaxonService defaultTaxonService) {
 +        this.defaultTaxonService = defaultTaxonService;
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<TaxonBase>> pageAuditEvents(TaxonBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultTaxonService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param annotatedObj
 +     * @param status
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Annotation> getAnnotations(TaxonBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IService#clear()
 +     */
 +    @Override
 +    public void clear() {
 +        defaultTaxonService.clear();
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
 +     */
 +    @Override
 +    public void lock(TaxonBase t, LockMode lockMode) {
 +        defaultTaxonService.lock(t, lockMode);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @param propertyPaths
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
 +     */
 +    @Override
 +    public void refresh(TaxonBase t, LockMode lockMode, List<String> propertyPaths) {
 +        defaultTaxonService.refresh(t, lockMode, propertyPaths);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
 +     */
 +    @Override
 +    public void updateTitleCache() {
 +        defaultTaxonService.updateTitleCache();
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<TaxonBase> getNextAuditEvent(TaxonBase t) {
 +        return defaultTaxonService.getNextAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param annotatableEntity
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Marker> getMarkers(TaxonBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param stepSize
 +     * @param cacheStrategy
 +     * @param monitor
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
 +     */
 +    @Override
 +    public void updateTitleCache(Class<? extends TaxonBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<TaxonBase> cacheStrategy, IProgressMonitor monitor) {
 +        defaultTaxonService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<TaxonBase> getPreviousAuditEvent(TaxonBase t) {
 +        return defaultTaxonService.getPreviousAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
 +     */
 +    @Override
 +    public int count(Class<? extends TaxonBase> clazz) {
 +        return defaultTaxonService.count(clazz);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param from
 +     * @param to
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageValue
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<TaxonBase>> pageAuditEvents(Class<? extends TaxonBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultTaxonService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param lsid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
 +     */
 +    @Override
 +    public TaxonBase find(LSID lsid) {
 +        return defaultTaxonService.find(lsid);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
++    public UUID delete(TaxonBase persistentObject) throws ReferencedObjectUndeletableException{
 +        return defaultTaxonService.delete(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> groupMarkers(Class<? extends TaxonBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultTaxonService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
 +     */
 +    @Override
 +    public boolean exists(UUID uuid) {
 +        return defaultTaxonService.exists(uuid);
 +    }
 +
 +    /**
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getAllSynonyms(int, int)
 +     */
 +    @Override
 +    public List<Synonym> getAllSynonyms(int limit, int start) {
 +        return defaultTaxonService.getAllSynonyms(limit, start);
 +    }
 +
 +    /**
 +     * @param x
 +     * @param y
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
 +     */
 +    @Override
 +    public TaxonBase replace(TaxonBase x, TaxonBase y) {
 +        return defaultTaxonService.replace(x, y);
 +    }
 +
 +    /**
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getAllTaxa(int, int)
 +     */
 +    @Override
 +    public List<Taxon> getAllTaxa(int limit, int start) {
 +        return defaultTaxonService.getAllTaxa(limit, start);
 +    }
 +
 +    /**
 +     * @param uuidSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
 +     */
 +    @Override
 +    public List<TaxonBase> find(Set<UUID> uuidSet) {
 +        return defaultTaxonService.find(uuidSet);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<IdentifiableSource> getSources(TaxonBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultTaxonService.getSources(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param sec
 +     * @param cdmFetch
 +     * @param onlyWithChildren
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getRootTaxa(eu.etaxonomy.cdm.model.reference.Reference, eu.etaxonomy.cdm.persistence.fetch.CdmFetch, boolean)
 +     */
 +    @Deprecated
 +    @Override
 +    public List<Taxon> getRootTaxa(Reference sec, CdmFetch cdmFetch, boolean onlyWithChildren) {
 +        return defaultTaxonService.getRootTaxa(sec, cdmFetch, onlyWithChildren);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
 +     */
 +    @Override
 +    public TaxonBase find(UUID uuid) {
 +        return defaultTaxonService.find(uuid);
 +    }
 +
 +    /**
 +     * @param rank
 +     * @param sec
 +     * @param onlyWithChildren
 +     * @param withMisapplications
 +     * @param propertyPaths
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getRootTaxa(eu.etaxonomy.cdm.model.name.Rank, eu.etaxonomy.cdm.model.reference.Reference, boolean, boolean, java.util.List)
 +     */
 +    @Deprecated
 +    @Override
 +    public List<Taxon> getRootTaxa(Rank rank, Reference sec, boolean onlyWithChildren, boolean withMisapplications, List<String> propertyPaths) {
 +        return defaultTaxonService.getRootTaxa(rank, sec, onlyWithChildren, withMisapplications, propertyPaths);
 +    }
 +
 +    /**
 +     * @param id
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
 +     */
 +    @Override
 +    public TaxonBase find(int id) {
 +        return defaultTaxonService.find(id);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<Rights> getRights(TaxonBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultTaxonService.getRights(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
 +     */
 +    @Override
 +    public int countMarkers(Class<? extends TaxonBase> clazz, Boolean technical) {
 +        return defaultTaxonService.countMarkers(clazz, technical);
 +    }
 +
 +    /**
 +     * @param idSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
 +     */
 +    @Override
 +    public List<TaxonBase> findById(Set<Integer> idSet) {
 +        return defaultTaxonService.findById(idSet);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param idInSource
 +     * @param idNamespace
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
 +     */
 +    @Override
 +    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
 +        return defaultTaxonService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
 +     */
 +    @Override
 +    public Session getSession() {
 +        return defaultTaxonService.getSession();
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCache() {
 +        return defaultTaxonService.getUuidAndTitleCache();
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param limit
 +     * @param start
 +     * @param groups
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> group(Class<? extends TaxonBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
 +        return defaultTaxonService.group(clazz, limit, start, groups, propertyPaths);
 +    }
 +
 +    /**
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getAllRelationships(int, int)
 +     */
 +    @Override
 +    public List<RelationshipBase> getAllRelationships(int limit, int start) {
 +        return defaultTaxonService.getAllRelationships(limit, start);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<TaxonBase> findByTitle(Class<? extends TaxonBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getTaxonRelationshipTypeVocabulary()
 +     */
 +    @Deprecated
 +    @Override
 +    public OrderedTermVocabulary<TaxonRelationshipType> getTaxonRelationshipTypeVocabulary() {
 +        return defaultTaxonService.getTaxonRelationshipTypeVocabulary();
 +    }
 +
 +    /**
 +     * @param name
 +     * @param sec
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#searchTaxaByName(java.lang.String, eu.etaxonomy.cdm.model.reference.Reference)
 +     */
 +    @Override
 +    public List<TaxonBase> searchTaxaByName(String name, Reference sec) {
 +        return defaultTaxonService.searchTaxaByName(name, sec);
 +    }
 +
 +    /**
 +     * @param synonym
 +     * @param acceptedTaxon
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#swapSynonymAndAcceptedTaxon(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.Taxon)
 +     */
 +    @Override
 +    public void swapSynonymAndAcceptedTaxon(Synonym synonym, Taxon acceptedTaxon) {
 +        defaultTaxonService.swapSynonymAndAcceptedTaxon(synonym, acceptedTaxon);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<TaxonBase> list(Class<? extends TaxonBase> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.list(type, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Pager<TaxonBase> findByTitle(IIdentifiableEntityServiceConfigurator<TaxonBase> configurator) {
 +        return defaultTaxonService.findByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param synonym
 +     * @param acceptedTaxon
 +     * @param deleteSynonym
 +     * @param copyCitationInfo
 +     * @param citation
 +     * @param microCitation
 +     * @return
 +     * @throws HomotypicalGroupChangeException
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#changeSynonymToAcceptedTaxon(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.Taxon, boolean, boolean, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String)
 +     */
 +    @Override
 +    public Taxon changeSynonymToAcceptedTaxon(Synonym synonym, Taxon acceptedTaxon, boolean deleteSynonym, boolean copyCitationInfo, Reference citation, String microCitation) throws HomotypicalGroupChangeException {
 +        return defaultTaxonService.changeSynonymToAcceptedTaxon(synonym, acceptedTaxon, deleteSynonym, copyCitationInfo, citation, microCitation);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
 +     */
 +    @Override
 +    public Integer countByTitle(Class<? extends TaxonBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
 +        return defaultTaxonService.countByTitle(clazz, queryString, matchmode, criteria);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
 +     */
 +    @Override
 +    public TaxonBase load(UUID uuid) {
 +        return defaultTaxonService.load(uuid);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
 +     */
 +    @Override
 +    public TaxonBase load(UUID uuid, List<String> propertyPaths) {
 +        return defaultTaxonService.load(uuid, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<TaxonBase> configurator) {
 +        return defaultTaxonService.countByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public TaxonBase merge(TaxonBase transientObject) {
 +        return defaultTaxonService.merge(transientObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonBase> listByTitle(Class<? extends TaxonBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<TaxonBase> page(Class<? extends TaxonBase> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID refresh(TaxonBase persistentObject) {
 +        return defaultTaxonService.refresh(persistentObject);
 +    }
 +
 +    /**
 +     * @param synonym
 +     * @param toTaxon
 +     * @param taxonRelationshipType
 +     * @param reference
 +     * @param microReference
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#changeSynonymToRelatedTaxon(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String)
 +     */
 +    @Override
 +    public Taxon changeSynonymToRelatedTaxon(Synonym synonym, Taxon toTaxon, TaxonRelationshipType taxonRelationshipType, Reference reference, String microReference) {
 +        return defaultTaxonService.changeSynonymToRelatedTaxon(synonym, toTaxon, taxonRelationshipType, reference, microReference);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonBase> listByReferenceTitle(Class<? extends TaxonBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param tableName
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
 +     */
 +    @Override
 +    public List<TaxonBase> rows(String tableName, int limit, int start) {
 +        return defaultTaxonService.rows(tableName, limit, start);
 +    }
 +
 +    /**
 +     * @param newInstances
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, TaxonBase> save(Collection<TaxonBase> newInstances) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param syn
 +     * @param taxon
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteSynonymRelationships(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.Taxon)
 +     */
 +    @Override
 +    public long deleteSynonymRelationships(Synonym syn, Taxon taxon) {
 +        return defaultTaxonService.deleteSynonymRelationships(syn, taxon);
 +    }
 +
 +    /**
 +     * @param newInstance
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID save(TaxonBase newInstance) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID saveOrUpdate(TaxonBase transientObject) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param synonym
 +     * @param newHomotypicalGroup
 +     * @param targetTaxon
 +     * @param removeFromOtherTaxa
 +     * @param setBasionymRelationIfApplicable
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#changeHomotypicalGroupOfSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.name.HomotypicalGroup, eu.etaxonomy.cdm.model.taxon.Taxon, boolean, boolean)
 +     */
 +    @Override
 +    public void changeHomotypicalGroupOfSynonym(Synonym synonym, HomotypicalGroup newHomotypicalGroup, Taxon targetTaxon, boolean removeFromOtherTaxa, boolean setBasionymRelationIfApplicable) {
 +        defaultTaxonService.changeHomotypicalGroupOfSynonym(synonym, newHomotypicalGroup, targetTaxon, removeFromOtherTaxa, setBasionymRelationIfApplicable);
 +    }
 +
 +    /**
 +     * @param transientObjects
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, TaxonBase> saveOrUpdate(Collection<TaxonBase> transientObjects) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID update(TaxonBase transientObject) {
 +        return defaultTaxonService.update(transientObject);
 +    }
 +
 +    /**
 +     * @param example
 +     * @param includeProperties
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonBase> list(TaxonBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param oldSynonymRelation
 +     * @param newTaxon
 +     * @param moveHomotypicGroup
 +     * @param newSynonymRelationshipType
 +     * @param newReference
 +     * @param newReferenceDetail
 +     * @param keepReference
 +     * @return
 +     * @throws HomotypicalGroupChangeException
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#moveSynonymToAnotherTaxon(eu.etaxonomy.cdm.model.taxon.SynonymRelationship, eu.etaxonomy.cdm.model.taxon.Taxon, boolean, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String, boolean)
 +     */
 +    @Override
 +    public SynonymRelationship moveSynonymToAnotherTaxon(SynonymRelationship oldSynonymRelation, Taxon newTaxon, boolean moveHomotypicGroup, SynonymRelationshipType newSynonymRelationshipType, Reference newReference, String newReferenceDetail, boolean keepReference) throws HomotypicalGroupChangeException {
 +        return defaultTaxonService.moveSynonymToAnotherTaxon(oldSynonymRelation, newTaxon, moveHomotypicGroup, newSynonymRelationshipType, newReference, newReferenceDetail, keepReference);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param matchStrategy
 +     * @param mergeStrategy
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
 +     */
 +    @Override
 +    public int deduplicate(Class<? extends TaxonBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
 +        return defaultTaxonService.deduplicate(clazz, matchStrategy, mergeStrategy);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param matchMode
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
 +     */
 +    @Override
 +    public Pager<TaxonBase> findTitleCache(Class<? extends TaxonBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
 +        return defaultTaxonService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listToTaxonRelationships(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonRelationship> listToTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.listToTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#pageToTaxonRelationships(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<TaxonRelationship> pageToTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.pageToTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listFromTaxonRelationships(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<TaxonRelationship> listFromTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.listFromTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#pageFromTaxonRelationships(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<TaxonRelationship> pageFromTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.pageFromTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param includeRelationships
 +     * @param maxDepth
 +     * @param limit
 +     * @param start
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listRelatedTaxa(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Set<Taxon> listRelatedTaxa(Taxon taxon, Set<TaxonRelationshipEdge> includeRelationships, Integer maxDepth, Integer limit, Integer start, List<String> propertyPaths) {
 +        return defaultTaxonService.listRelatedTaxa(taxon, includeRelationships, maxDepth, limit, start, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxonBase
 +     * @param limit
 +     * @param start
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listClassifications(eu.etaxonomy.cdm.model.taxon.TaxonBase, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public List<Classification> listClassifications(TaxonBase taxonBase, Integer limit, Integer start, List<String> propertyPaths) {
 +        return defaultTaxonService.listClassifications(taxonBase, limit, start, propertyPaths);
 +    }
 +
 +    /**
 +     * @param synonym
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getSynonyms(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<SynonymRelationship> getSynonyms(Synonym synonym, SynonymRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.getSynonyms(synonym, type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getSynonyms(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<SynonymRelationship> getSynonyms(Taxon taxon, SynonymRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.getSynonyms(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getHomotypicSynonymsByHomotypicGroup(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.List)
 +     */
 +    @Override
 +    public List<Synonym> getHomotypicSynonymsByHomotypicGroup(Taxon taxon, List<String> propertyPaths) {
 +        return defaultTaxonService.getHomotypicSynonymsByHomotypicGroup(taxon, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getHeterotypicSynonymyGroups(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.List)
 +     */
 +    @Override
 +    public List<List<Synonym>> getHeterotypicSynonymyGroups(Taxon taxon, List<String> propertyPaths) {
 +        return defaultTaxonService.getHeterotypicSynonymyGroups(taxon, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<TaxonBase> search(Class<? extends TaxonBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTaxonService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param uninomial
 +     * @param infragenericEpithet
 +     * @param specificEpithet
 +     * @param infraspecificEpithet
 +     * @param rank
 +     * @param pageSize
 +     * @param pageNumber
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findTaxaByName(java.lang.Class, java.lang.String, java.lang.String, java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.name.Rank, java.lang.Integer, java.lang.Integer)
 +     */
 +    @Override
 +    public Pager<TaxonBase> findTaxaByName(Class<? extends TaxonBase> clazz, String uninomial, String infragenericEpithet, String specificEpithet, String infraspecificEpithet, Rank rank, Integer pageSize, Integer pageNumber) {
 +        return defaultTaxonService.findTaxaByName(clazz, uninomial, infragenericEpithet, specificEpithet, infraspecificEpithet, rank, pageSize, pageNumber);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param uninomial
 +     * @param infragenericEpithet
 +     * @param specificEpithet
 +     * @param infraspecificEpithet
 +     * @param rank
 +     * @param pageSize
 +     * @param pageNumber
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listTaxaByName(java.lang.Class, java.lang.String, java.lang.String, java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.name.Rank, java.lang.Integer, java.lang.Integer)
 +     */
 +    @Override
 +    public List<TaxonBase> listTaxaByName(Class<? extends TaxonBase> clazz, String uninomial, String infragenericEpithet, String specificEpithet, String infraspecificEpithet, Rank rank, Integer pageSize, Integer pageNumber) {
 +        return defaultTaxonService.listTaxaByName(clazz, uninomial, infragenericEpithet, specificEpithet, infraspecificEpithet, rank, pageSize, pageNumber);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findTaxaAndNames(eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator)
 +     */
 +    @Override
 +    public Pager<IdentifiableEntity> findTaxaAndNames(IFindTaxaAndNamesConfigurator configurator) {
 +        return defaultTaxonService.findTaxaAndNames(configurator);
 +    }
 +
 +    /**
 +     * @param queryString
 +     * @param classification
 +     * @param languages
 +     * @param highlightFragments
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @throws CorruptIndexException
 +     * @throws IOException
 +     * @throws ParseException
 +     * @throws LuceneMultiSearchException
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findByEverythingFullText(java.lang.String, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List, boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Deprecated
 +    @Override
 +    public Pager<SearchResult<TaxonBase>> findByEverythingFullText(String queryString, Classification classification, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException, LuceneMultiSearchException {
 +        return defaultTaxonService.findByEverythingFullText(queryString, classification, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param classification
 +     * @param languages
 +     * @param highlightFragments
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @throws CorruptIndexException
 +     * @throws IOException
 +     * @throws ParseException
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findByFullText(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List, boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<SearchResult<TaxonBase>> findByFullText(Class<? extends TaxonBase> clazz, String queryString, Classification classification, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException {
 +        return defaultTaxonService.findByFullText(clazz, queryString, classification, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param areaFilter
 +     * @param statusFilter
 +     * @param classification
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @throws IOException
 +     * @throws ParseException
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findByDistribution(java.util.List, java.util.List, eu.etaxonomy.cdm.model.taxon.Classification, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<SearchResult<TaxonBase>> findByDistribution(List<NamedArea> areaFilter, List<PresenceAbsenceTermBase<?>> statusFilter, Classification classification, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws IOException, ParseException {
 +        return defaultTaxonService.findByDistribution(areaFilter, statusFilter, classification, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param searchModes
 +     * @param queryString
 +     * @param classification
 +     * @param namedAreas
 +     * @param distributionStatus
 +     * @param languages
 +     * @param highlightFragments
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @throws CorruptIndexException
 +     * @throws IOException
 +     * @throws ParseException
 +     * @throws LuceneMultiSearchException
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findTaxaAndNamesByFullText(java.util.EnumSet, java.lang.String, eu.etaxonomy.cdm.model.taxon.Classification, java.util.Set, java.util.Set, java.util.List, boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<SearchResult<TaxonBase>> findTaxaAndNamesByFullText(EnumSet<TaxaAndNamesSearchMode> searchModes, String queryString, Classification classification, Set<NamedArea> namedAreas, Set<PresenceAbsenceTermBase<?>> distributionStatus, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException, LuceneMultiSearchException {
 +        return defaultTaxonService.findTaxaAndNamesByFullText(searchModes, queryString, classification, namedAreas, distributionStatus, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param classification
 +     * @param features
 +     * @param languages
 +     * @param highlightFragments
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @throws CorruptIndexException
 +     * @throws IOException
 +     * @throws ParseException
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findByDescriptionElementFullText(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List, java.util.List, boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<SearchResult<TaxonBase>> findByDescriptionElementFullText(Class<? extends DescriptionElementBase> clazz, String queryString, Classification classification, List<Feature> features, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException {
 +        return defaultTaxonService.findByDescriptionElementFullText(clazz, queryString, classification, features, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param size
 +     * @param height
 +     * @param widthOrDuration
 +     * @param mimeTypes
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getAllMedia(eu.etaxonomy.cdm.model.taxon.Taxon, int, int, int, java.lang.String[])
 +     */
 +    @Deprecated
 +    @Override
 +    public List<MediaRepresentation> getAllMedia(Taxon taxon, int size, int height, int widthOrDuration, String[] mimeTypes) {
 +        return defaultTaxonService.getAllMedia(taxon, size, height, widthOrDuration, mimeTypes);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param includeRelationships
 +     * @param limitToGalleries
 +     * @param propertyPath
 +     * @return
 +     * @deprecated
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listTaxonDescriptionMedia(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, boolean, java.util.List)
 +     */
 +    @Deprecated
 +    @Override
 +    public List<Media> listTaxonDescriptionMedia(Taxon taxon, Set<TaxonRelationshipEdge> includeRelationships, boolean limitToGalleries, List<String> propertyPath) {
 +        return defaultTaxonService.listTaxonDescriptionMedia(taxon, includeRelationships, limitToGalleries, propertyPath);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param includeRelationships
 +     * @param limitToGalleries
 +     * @param includeTaxonDescriptions
 +     * @param includeOccurrences
 +     * @param includeTaxonNameDescriptions
 +     * @param propertyPath
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listMedia(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.lang.Boolean, java.lang.Boolean, java.lang.Boolean, java.lang.Boolean, java.util.List)
 +     */
 +    @Override
 +    public List<Media> listMedia(Taxon taxon, Set<TaxonRelationshipEdge> includeRelationships, Boolean limitToGalleries, Boolean includeTaxonDescriptions, Boolean includeOccurrences, Boolean includeTaxonNameDescriptions, List<String> propertyPath) {
 +        return defaultTaxonService.listMedia(taxon, includeRelationships, limitToGalleries, includeTaxonDescriptions, includeOccurrences, includeTaxonNameDescriptions, propertyPath);
 +    }
 +
 +    /**
 +     * @param listOfIDs
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findTaxaByID(java.util.Set)
 +     */
 +    @Override
 +    public List<TaxonBase> findTaxaByID(Set<Integer> listOfIDs) {
 +        return defaultTaxonService.findTaxaByID(listOfIDs);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findTaxonByUuid(java.util.UUID, java.util.List)
 +     */
 +    @Override
 +    public TaxonBase findTaxonByUuid(UUID uuid, List<String> propertyPaths) {
 +        return defaultTaxonService.findTaxonByUuid(uuid, propertyPaths);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#countAllRelationships()
 +     */
 +    @Override
 +    public int countAllRelationships() {
 +        return defaultTaxonService.countAllRelationships();
 +    }
 +
 +    /**
 +     * @param propertyPath
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findIdenticalTaxonNames(java.util.List)
 +     */
 +    @Override
 +    public List<TaxonNameBase> findIdenticalTaxonNames(List<String> propertyPath) {
 +        return defaultTaxonService.findIdenticalTaxonNames(propertyPath);
 +    }
 +
 +    /**
 +     * @param propertyPath
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findIdenticalTaxonNameIds(java.util.List)
 +     */
 +    @Override
 +    public List<TaxonNameBase> findIdenticalTaxonNameIds(List<String> propertyPath) {
 +        return defaultTaxonService.findIdenticalTaxonNameIds(propertyPath);
 +    }
 +
 +    /**
 +     * @param name
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getPhylumName(eu.etaxonomy.cdm.model.name.TaxonNameBase)
 +     */
 +    @Override
 +    public String getPhylumName(TaxonNameBase name) {
 +        return defaultTaxonService.getPhylumName(name);
 +    }
 +
 +    /**
 +     * @param syn
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteSynonymRelationships(eu.etaxonomy.cdm.model.taxon.Synonym)
 +     */
 +    @Override
 +    public long deleteSynonymRelationships(Synonym syn) {
 +        return defaultTaxonService.deleteSynonymRelationships(syn);
 +    }
 +
 +    /**
 +     * @param taxonBase
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @param direction
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listSynonymRelationships(eu.etaxonomy.cdm.model.taxon.TaxonBase, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List, eu.etaxonomy.cdm.model.common.RelationshipBase.Direction)
 +     */
 +    @Override
 +    public List<SynonymRelationship> listSynonymRelationships(TaxonBase taxonBase, SynonymRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths, Direction direction) {
 +        return defaultTaxonService.listSynonymRelationships(taxonBase, type, pageSize, pageNumber, orderHints, propertyPaths, direction);
 +    }
 +
 +    /**
 +     * @param taxonName
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findBestMatchingTaxon(java.lang.String)
 +     */
 +    @Override
 +    public Taxon findBestMatchingTaxon(String taxonName) {
 +        return defaultTaxonService.findBestMatchingTaxon(taxonName);
 +    }
 +
 +    /**
 +     * @param config
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findBestMatchingTaxon(eu.etaxonomy.cdm.api.service.config.MatchingTaxonConfigurator)
 +     */
 +    @Override
 +    public Taxon findBestMatchingTaxon(MatchingTaxonConfigurator config) {
 +        return defaultTaxonService.findBestMatchingTaxon(config);
 +    }
 +
 +    /**
 +     * @param taxonName
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findBestMatchingSynonym(java.lang.String)
 +     */
 +    @Override
 +    public Synonym findBestMatchingSynonym(String taxonName) {
 +        return defaultTaxonService.findBestMatchingSynonym(taxonName);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getUuidAndTitleCacheTaxon()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCacheTaxon() {
 +        return defaultTaxonService.getUuidAndTitleCacheTaxon();
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getUuidAndTitleCacheSynonym()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCacheSynonym() {
 +        return defaultTaxonService.getUuidAndTitleCacheSynonym();
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findTaxaAndNamesForEditor(eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator)
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<TaxonBase>> findTaxaAndNamesForEditor(IFindTaxaAndNamesConfigurator configurator) {
 +        return defaultTaxonService.findTaxaAndNamesForEditor(configurator);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param tree
 +     * @param type
 +     * @param doWithMisappliedNames
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#createInferredSynonyms(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, boolean)
 +     */
 +    @Override
 +    public List<Synonym> createInferredSynonyms(Taxon taxon, Classification tree, SynonymRelationshipType type, boolean doWithMisappliedNames) {
 +        return defaultTaxonService.createInferredSynonyms(taxon, tree, type, doWithMisappliedNames);
 +    }
 +
 +    /**
 +     * @param taxon
 +     * @param tree
 +     * @param doWithMisappliedNames
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#createAllInferredSynonyms(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, boolean)
 +     */
 +    @Override
 +    public List<Synonym> createAllInferredSynonyms(Taxon taxon, Classification tree, boolean doWithMisappliedNames) {
 +        return defaultTaxonService.createAllInferredSynonyms(taxon, tree, doWithMisappliedNames);
 +    }
 +
 +    /* (non-Javadoc)
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.api.service.config.SynonymDeletionConfigurator)
 +     */
 +    @Override
 +    public void deleteSynonym(Synonym arg0, SynonymDeletionConfigurator arg1) {
 +        defaultTaxonService.deleteSynonym(arg0, arg1);
 +    }
 +
 +    /* (non-Javadoc)
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.api.service.config.SynonymDeletionConfigurator)
 +     */
 +    @Override
 +    public void deleteSynonym(Synonym arg0, Taxon arg1, SynonymDeletionConfigurator arg2) {
 +        defaultTaxonService.deleteSynonym(arg0, arg1, arg2);
 +    }
 +
 +    /* (non-Javadoc)
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator, eu.etaxonomy.cdm.model.taxon.Classification)
 +     */
 +    @Override
 +    public UUID deleteTaxon(Taxon arg0, TaxonDeletionConfigurator arg1, Classification arg2)
 +            throws DataChangeNoRollbackException {
 +        return defaultTaxonService.deleteTaxon(arg0, arg1, arg2);
 +    }
 +
 +    /* (non-Javadoc)
 +     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getSynonymsByHomotypicGroup(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.List)
 +     */
 +    @Override
 +    public List<List<Synonym>> getSynonymsByHomotypicGroup(Taxon taxon, List<String> propertyPaths) {
 +        return defaultTaxonService.getSynonymsByHomotypicGroup(taxon, propertyPaths);
 +    }
 +
 +
 +
 +}
index 1dfb05d4956ddc2c64816326be72f3341e1096d4,0000000000000000000000000000000000000000..d8b1269ba9cdc97c6e758b9dfc97ea70956ea72d
mode 100644,000000..100644
--- /dev/null
@@@ -1,856 -1,0 +1,857 @@@
-     public UUID delete(DefinedTermBase persistentObject) {
 +// $Id$
 +/**
 +* Copyright (C) 2013 EDIT
 +* European Distributed Institute of Taxonomy
 +* http://www.e-taxonomy.eu
 +*
 +* The contents of this file are subject to the Mozilla Public License Version 1.1
 +* See LICENSE.TXT at the top of this package for the full license terms.
 +*/
 +package eu.etaxonomy.taxeditor.dataimport.transientServices;
 +
 +import java.net.URI;
 +import java.util.Collection;
 +import java.util.Enumeration;
 +import java.util.List;
 +import java.util.Locale;
 +import java.util.Map;
 +import java.util.Set;
 +import java.util.UUID;
 +
 +import org.hibernate.LockMode;
 +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.ITermService;
 +import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 +import eu.etaxonomy.cdm.api.service.config.TermDeletionConfigurator;
++import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 +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.DefinedTermBase;
 +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.Language;
 +import eu.etaxonomy.cdm.model.common.LanguageString;
 +import eu.etaxonomy.cdm.model.common.LanguageStringBase;
 +import eu.etaxonomy.cdm.model.common.Marker;
 +import eu.etaxonomy.cdm.model.common.MarkerType;
 +import eu.etaxonomy.cdm.model.common.Representation;
 +import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
 +import eu.etaxonomy.cdm.model.location.NamedArea;
 +import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
 +import eu.etaxonomy.cdm.model.location.NamedAreaType;
 +import eu.etaxonomy.cdm.model.media.Media;
 +import eu.etaxonomy.cdm.model.media.Rights;
 +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.query.Grouping;
 +import eu.etaxonomy.cdm.persistence.query.MatchMode;
 +import eu.etaxonomy.cdm.persistence.query.OrderHint;
 +import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 +import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 +import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
 +
 +/**
 + * @author pplitzner
 + * @date 27.09.2013
 + *
 + */
 +public class TransientTermService implements ITermService {
 +
 +    private ITermService defaultTermService;
 +
 +    /**
 +     * @param defaultTermService
 +     */
 +    public TransientTermService(ITermService defaultTermService) {
 +        this.defaultTermService = defaultTermService;
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<DefinedTermBase>> pageAuditEvents(DefinedTermBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultTermService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param annotatedObj
 +     * @param status
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Annotation> getAnnotations(DefinedTermBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTermService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IService#clear()
 +     */
 +    @Override
 +    public void clear() {
 +        defaultTermService.clear();
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
 +     */
 +    @Override
 +    public void lock(DefinedTermBase t, LockMode lockMode) {
 +        defaultTermService.lock(t, lockMode);
 +    }
 +
 +    /**
 +     * @param uri
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#getByUri(java.net.URI)
 +     */
 +    @Override
 +    public DefinedTermBase getByUri(URI uri) {
 +        return defaultTermService.getByUri(uri);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param lockMode
 +     * @param propertyPaths
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
 +     */
 +    @Override
 +    public void refresh(DefinedTermBase t, LockMode lockMode, List<String> propertyPaths) {
 +        defaultTermService.refresh(t, lockMode, propertyPaths);
 +    }
 +
 +    /**
 +     * @param languageData
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#saveLanguageData(eu.etaxonomy.cdm.model.common.LanguageStringBase)
 +     */
 +    @Override
 +    public UUID saveLanguageData(LanguageStringBase languageData) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#getAllLanguageStrings(int, int)
 +     */
 +    @Override
 +    public List<LanguageString> getAllLanguageStrings(int limit, int start) {
 +        return defaultTermService.getAllLanguageStrings(limit, start);
 +    }
 +
 +    /**
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#getAllRepresentations(int, int)
 +     */
 +    @Override
 +    public List<Representation> getAllRepresentations(int limit, int start) {
 +        return defaultTermService.getAllRepresentations(limit, start);
 +    }
 +
 +    /**
 +     *
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
 +     */
 +    @Override
 +    public void updateTitleCache() {
 +        defaultTermService.updateTitleCache();
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<DefinedTermBase> getNextAuditEvent(DefinedTermBase t) {
 +        return defaultTermService.getNextAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param iso639
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#getLanguageByIso(java.lang.String)
 +     */
 +    @Override
 +    public Language getLanguageByIso(String iso639) {
 +        return defaultTermService.getLanguageByIso(iso639);
 +    }
 +
 +    /**
 +     * @param locales
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#getLanguagesByLocale(java.util.Enumeration)
 +     */
 +    @Override
 +    public List<Language> getLanguagesByLocale(Enumeration<Locale> locales) {
 +        return defaultTermService.getLanguagesByLocale(locales);
 +    }
 +
 +    /**
 +     * @param tdwgAbbreviation
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#getAreaByTdwgAbbreviation(java.lang.String)
 +     */
 +    @Override
 +    public NamedArea getAreaByTdwgAbbreviation(String tdwgAbbreviation) {
 +        return defaultTermService.getAreaByTdwgAbbreviation(tdwgAbbreviation);
 +    }
 +
 +    /**
 +     * @param annotatableEntity
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<Marker> getMarkers(DefinedTermBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTermService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param definedTerm
 +     * @param pageSize
 +     * @param pageNumber
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#getMedia(eu.etaxonomy.cdm.model.common.DefinedTermBase, java.lang.Integer, java.lang.Integer)
 +     */
 +    @Override
 +    public Pager<Media> getMedia(DefinedTermBase definedTerm, Integer pageSize, Integer pageNumber) {
 +        return defaultTermService.getMedia(definedTerm, pageSize, pageNumber);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param stepSize
 +     * @param cacheStrategy
 +     * @param monitor
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
 +     */
 +    @Override
 +    public void updateTitleCache(Class<? extends DefinedTermBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<DefinedTermBase> cacheStrategy, IProgressMonitor monitor) {
 +        defaultTermService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
 +    }
 +
 +    /**
 +     * @param t
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
 +     */
 +    @Override
 +    public AuditEventRecord<DefinedTermBase> getPreviousAuditEvent(DefinedTermBase t) {
 +        return defaultTermService.getPreviousAuditEvent(t);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
 +     */
 +    @Override
 +    public int count(Class<? extends DefinedTermBase> clazz) {
 +        return defaultTermService.count(clazz);
 +    }
 +
 +    /**
 +     * @param level
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#list(eu.etaxonomy.cdm.model.location.NamedAreaLevel, eu.etaxonomy.cdm.model.location.NamedAreaType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<NamedArea> list(NamedAreaLevel level, NamedAreaType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTermService.list(level, type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param from
 +     * @param to
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageValue
 +     * @param sort
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
 +     */
 +    @Override
 +    public Pager<AuditEventRecord<DefinedTermBase>> pageAuditEvents(Class<? extends DefinedTermBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
 +        return defaultTermService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
 +    }
 +
 +    /**
 +     * @param lsid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
 +     */
 +    @Override
 +    public DefinedTermBase find(LSID lsid) {
 +        return defaultTermService.find(lsid);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
++    public UUID delete(DefinedTermBase persistentObject) throws ReferencedObjectUndeletableException{
 +        return defaultTermService.delete(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> groupMarkers(Class<? extends DefinedTermBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultTermService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
 +     */
 +    @Override
 +    public boolean exists(UUID uuid) {
 +        return defaultTermService.exists(uuid);
 +    }
 +
 +    /**
 +     * @param x
 +     * @param y
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
 +     */
 +    @Override
 +    public DefinedTermBase replace(DefinedTermBase x, DefinedTermBase y) {
 +        return defaultTermService.replace(x, y);
 +    }
 +
 +    /**
 +     * @param definedTerm
 +     * @param pageSize
 +     * @param pageNumber
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#getGeneralizationOf(eu.etaxonomy.cdm.model.common.DefinedTermBase, java.lang.Integer, java.lang.Integer)
 +     */
 +    @Override
 +    public <T extends DefinedTermBase> Pager<T> getGeneralizationOf(T definedTerm, Integer pageSize, Integer pageNumber) {
 +        return defaultTermService.getGeneralizationOf(definedTerm, pageSize, pageNumber);
 +    }
 +
 +    /**
 +     * @param uuidSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
 +     */
 +    @Override
 +    public List<DefinedTermBase> find(Set<UUID> uuidSet) {
 +        return defaultTermService.find(uuidSet);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<IdentifiableSource> getSources(DefinedTermBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultTermService.getSources(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
 +     */
 +    @Override
 +    public DefinedTermBase find(UUID uuid) {
 +        return defaultTermService.find(uuid);
 +    }
 +
 +    /**
 +     * @param definedTerms
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#getPartOf(java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public <T extends DefinedTermBase> Pager<T> getPartOf(Set<T> definedTerms, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultTermService.getPartOf(definedTerms, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param id
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
 +     */
 +    @Override
 +    public DefinedTermBase find(int id) {
 +        return defaultTermService.find(id);
 +    }
 +
 +    /**
 +     * @param t
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public Pager<Rights> getRights(DefinedTermBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultTermService.getRights(t, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param technical
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
 +     */
 +    @Override
 +    public int countMarkers(Class<? extends DefinedTermBase> clazz, Boolean technical) {
 +        return defaultTermService.countMarkers(clazz, technical);
 +    }
 +
 +    /**
 +     * @param idSet
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
 +     */
 +    @Override
 +    public List<DefinedTermBase> findById(Set<Integer> idSet) {
 +        return defaultTermService.findById(idSet);
 +    }
 +
 +    /**
 +     * @param definedTerms
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#getIncludes(java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)
 +     */
 +    @Override
 +    public <T extends DefinedTermBase> Pager<T> getIncludes(Set<T> definedTerms, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
 +        return defaultTermService.getIncludes(definedTerms, pageSize, pageNumber, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param idInSource
 +     * @param idNamespace
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
 +     */
 +    @Override
 +    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
 +        return defaultTermService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
 +     */
 +    @Override
 +    public Session getSession() {
 +        return defaultTermService.getSession();
 +    }
 +
 +    /**
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
 +     */
 +    @Override
 +    public List<UuidAndTitleCache<DefinedTermBase>> getUuidAndTitleCache() {
 +        return defaultTermService.getUuidAndTitleCache();
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param limit
 +     * @param start
 +     * @param groups
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<Object[]> group(Class<? extends DefinedTermBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
 +        return defaultTermService.group(clazz, limit, start, groups, propertyPaths);
 +    }
 +
 +    /**
 +     * @param label
 +     * @param clazz
 +     * @param pageSize
 +     * @param pageNumber
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#findByRepresentationText(java.lang.String, java.lang.Class, java.lang.Integer, java.lang.Integer)
 +     */
 +    @Override
 +    public <T extends DefinedTermBase> Pager<T> findByRepresentationText(String label, Class<T> clazz, Integer pageSize, Integer pageNumber) {
 +        return defaultTermService.findByRepresentationText(label, clazz, pageSize, pageNumber);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<DefinedTermBase> findByTitle(Class<? extends DefinedTermBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTermService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param abbrev
 +     * @param clazz
 +     * @param pageSize
 +     * @param pageNumber
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#findByRepresentationAbbreviation(java.lang.String, java.lang.Class, java.lang.Integer, java.lang.Integer)
 +     */
 +    @Override
 +    public <T extends DefinedTermBase> Pager<T> findByRepresentationAbbreviation(String abbrev, Class<T> clazz, Integer pageSize, Integer pageNumber) {
 +        return defaultTermService.findByRepresentationAbbreviation(abbrev, clazz, pageSize, pageNumber);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<DefinedTermBase> list(Class<? extends DefinedTermBase> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTermService.list(type, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#listByTermClass(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public <TERM extends DefinedTermBase> List<TERM> listByTermClass(Class<TERM> clazz, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTermService.listByTermClass(clazz, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param term
 +     * @param config
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.ITermService#delete(eu.etaxonomy.cdm.model.common.DefinedTermBase, eu.etaxonomy.cdm.api.service.config.TermDeletionConfigurator)
 +     */
 +    @Override
 +    public DeleteResult delete(DefinedTermBase term, TermDeletionConfigurator config) {
 +        return defaultTermService.delete(term, config);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Pager<DefinedTermBase> findByTitle(IIdentifiableEntityServiceConfigurator<DefinedTermBase> configurator) {
 +        return defaultTermService.findByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
 +     */
 +    @Override
 +    public Integer countByTitle(Class<? extends DefinedTermBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
 +        return defaultTermService.countByTitle(clazz, queryString, matchmode, criteria);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
 +     */
 +    @Override
 +    public DefinedTermBase load(UUID uuid) {
 +        return defaultTermService.load(uuid);
 +    }
 +
 +    /**
 +     * @param uuid
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
 +     */
 +    @Override
 +    public DefinedTermBase load(UUID uuid, List<String> propertyPaths) {
 +        return defaultTermService.load(uuid, propertyPaths);
 +    }
 +
 +    /**
 +     * @param configurator
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
 +     */
 +    @Override
 +    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<DefinedTermBase> configurator) {
 +        return defaultTermService.countByTitle(configurator);
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public DefinedTermBase merge(DefinedTermBase transientObject) {
 +        return defaultTermService.merge(transientObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<DefinedTermBase> listByTitle(Class<? extends DefinedTermBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTermService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param type
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @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<DefinedTermBase> page(Class<? extends DefinedTermBase> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTermService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param persistentObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID refresh(DefinedTermBase persistentObject) {
 +        return defaultTermService.refresh(persistentObject);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param matchmode
 +     * @param criteria
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<DefinedTermBase> listByReferenceTitle(Class<? extends DefinedTermBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTermService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param tableName
 +     * @param limit
 +     * @param start
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
 +     */
 +    @Override
 +    public List<DefinedTermBase> rows(String tableName, int limit, int start) {
 +        return defaultTermService.rows(tableName, limit, start);
 +    }
 +
 +    /**
 +     * @param newInstances
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, DefinedTermBase> save(Collection<DefinedTermBase> newInstances) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param newInstance
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID save(DefinedTermBase newInstance) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID saveOrUpdate(DefinedTermBase transientObject) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public Pager<DefinedTermBase> search(Class<? extends DefinedTermBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTermService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param transientObjects
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
 +     */
 +    @Override
 +    public Map<UUID, DefinedTermBase> saveOrUpdate(Collection<DefinedTermBase> transientObjects) {
 +        return null;
 +    }
 +
 +    /**
 +     * @param transientObject
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
 +     */
 +    @Override
 +    public UUID update(DefinedTermBase transientObject) {
 +        return defaultTermService.update(transientObject);
 +    }
 +
 +    /**
 +     * @param example
 +     * @param includeProperties
 +     * @param limit
 +     * @param start
 +     * @param orderHints
 +     * @param propertyPaths
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
 +     */
 +    @Override
 +    public List<DefinedTermBase> list(DefinedTermBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
 +        return defaultTermService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param matchStrategy
 +     * @param mergeStrategy
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
 +     */
 +    @Override
 +    public int deduplicate(Class<? extends DefinedTermBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
 +        return defaultTermService.deduplicate(clazz, matchStrategy, mergeStrategy);
 +    }
 +
 +    /**
 +     * @param clazz
 +     * @param queryString
 +     * @param pageSize
 +     * @param pageNumber
 +     * @param orderHints
 +     * @param matchMode
 +     * @return
 +     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
 +     */
 +    @Override
 +    public Pager<DefinedTermBase> findTitleCache(Class<? extends DefinedTermBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
 +        return defaultTermService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
 +    }
 +
 +
 +
 +
 +}