fix #6120 Cleanup uuidAndTitleCache methods
authorAndreas Müller <a.mueller@bgbm.org>
Thu, 6 Oct 2016 10:36:53 +0000 (12:36 +0200)
committerAndreas Müller <a.mueller@bgbm.org>
Thu, 6 Oct 2016 10:36:53 +0000 (12:36 +0200)
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IIdentifiableDao.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBase.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImpl.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/taxon/ITaxonDao.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IIdentifiableEntityService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IdentifiableServiceBase.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java

index c0f1eef8372455bfd0feddeb83f4893bc7c0af79..f9426ef97f8bc9e715d2502da88494dbe47f6e28 100644 (file)
@@ -91,8 +91,23 @@ public interface IIdentifiableDao <T extends IdentifiableEntity> extends IAnnota
         * a selection has been made.
         *
         * @return a list of <code>UuidAndTitleCache</code> instances
+        * @see #getUuidAndTitleCache(Class, Integer, String)
         */
        public List<UuidAndTitleCache<T>> getUuidAndTitleCache(Integer limit, String pattern);
+
+       /**
+        * Like {@link #getUuidAndTitleCache(Integer, String)} but searching only on a subclass
+        * of the type handled by the DAO.
+        *
+        * @param clazz the (sub)class
+        * @param limit max number of results
+        * @param pattern search pattern
+
+        * @see #getUuidAndTitleCache(Integer, String)
+        */
+       public <S extends T> List<UuidAndTitleCache<S>> getUuidAndTitleCache(Class<S> clazz, Integer limit, String pattern);
+
+
        /**
      * Return a list of all uuids mapped to titleCache in the convenient <code>UuidAndTitleCache</code> object.
      * Retrieving this list is considered to be significantly faster than initializing the fully fledged buiseness
index c21f988159e87dac6972ec488d7e7a5290ae5417..988e81fdcafae8d7a5dda4757da9748033417e44 100644 (file)
@@ -284,16 +284,22 @@ public class IdentifiableDaoBase<T extends IdentifiableEntity> extends Annotatab
 
     @Override
     public List<UuidAndTitleCache<T>> getUuidAndTitleCache(Integer limit, String pattern){
+        return getUuidAndTitleCache(type, limit, pattern);
+    }
+
+
+    @Override
+    public <S extends T> List<UuidAndTitleCache<S>> getUuidAndTitleCache(Class<S> clazz, Integer limit, String pattern){
         Session session = getSession();
         Query query = null;
         if (pattern != null){
-            query = session.createQuery("select uuid, id, titleCache from " + type.getSimpleName() +" where titleCache like :pattern");
+            query = session.createQuery("select uuid, id, titleCache from " + clazz.getSimpleName() +" where titleCache like :pattern");
             pattern = pattern.replace("*", "%");
             pattern = pattern.replace("?", "_");
             pattern = pattern + "%";
             query.setParameter("pattern", pattern);
         } else {
-            query = session.createQuery("select uuid, id, titleCache from " + type.getSimpleName() );
+            query = session.createQuery("select uuid, id, titleCache from " + clazz.getSimpleName() );
         }
         if (limit != null){
            query.setMaxResults(limit);
@@ -304,7 +310,7 @@ public class IdentifiableDaoBase<T extends IdentifiableEntity> extends Annotatab
 
     @Override
     public List<UuidAndTitleCache<T>> getUuidAndTitleCache(){
-        return getUuidAndTitleCache(null, null);
+        return getUuidAndTitleCache(type, null, null);
     }
 
     protected <E extends IIdentifiableEntity> List<UuidAndTitleCache<E>> getUuidAndAbbrevTitleCache(Query query){
index 6a63b26d42b22a35fb7f87f89d5c94bff6f2a6dc..ae3395f8a9b9264e528469b641e87af4f02e883f 100644 (file)
@@ -1890,48 +1890,6 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
     }
 
 
-    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCache(Integer limit, String pattern, boolean isTaxon) {
-        String className;
-        if (isTaxon){
-            className = Taxon.class.getSimpleName();
-        } else{
-            className = Synonym.class.getSimpleName();
-        }
-        String queryString;
-
-        if(pattern == null){
-            queryString = String.format("select uuid, id, titleCache from %s where DTYPE = '%s' ", type.getSimpleName(), className );
-       } else{
-           queryString = String.format("select uuid, id, titleCache from %s where DTYPE = '%s' and titleCache like :pattern", type.getSimpleName(), className);
-       }
-        Query query = getSession().createQuery(queryString);
-        if (pattern != null){
-            pattern = pattern.replace("*", "%");
-            pattern = pattern.replace("?", "_");
-            pattern = pattern + "%";
-            pattern = pattern.replace("?", "_");
-            query.setParameter("pattern", pattern);
-        }
-        if (limit  != null){
-            query.setMaxResults(limit);
-        }
-
-        List<UuidAndTitleCache<TaxonBase>> result = getUuidAndTitleCache(query);
-
-        return result;
-    }
-    @Override
-    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCacheSynonym(Integer limit, String pattern){
-
-        return getUuidAndTitleCache(limit, pattern, false);
-    }
-
-    @Override
-    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCacheTaxon(Integer limit, String pattern){
-
-        return getUuidAndTitleCache(limit, pattern, true);
-    }
-
     private String[] createHQLString(boolean doTaxa, boolean doSynonyms, boolean doIncludeMisappliedNames, Classification classification,  Set<NamedArea> areasExpanded, MatchMode matchMode, String searchField){
 
            boolean doAreaRestriction = areasExpanded.size() > 0;
index 57c050e3bd76cc35b9376fb6d08235e3da89e9ac..9c648757d7a6d68decbc48eb8c0483284326daae 100644 (file)
@@ -412,16 +412,6 @@ public interface ITaxonDao extends IIdentifiableDao<TaxonBase>, ITitledDao<Taxon
             List<OrderHint> orderHints, List<String> propertyPaths,
             Direction relatedfrom);
 
-    /**
-     * @return
-     */
-    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCacheTaxon(Integer limit, String pattern);
-
-    /**
-     * @return
-     */
-    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCacheSynonym(Integer limit, String pattern);
-
     public List<UuidAndTitleCache<IdentifiableEntity>> getTaxaByNameForEditor(boolean doTaxa, boolean doSynonyms, boolean doNamesWithoutTaxa, boolean doMisappliedNames, String queryString, Classification classification,
             MatchMode matchMode, Set<NamedArea> namedAreas);
 
index cecc2ba1732307e006092c8e5d54ba660733fbc1..5ff5bb5544c801f8260fe727f6b516219c1cef1c 100644 (file)
@@ -99,12 +99,6 @@ public interface IIdentifiableEntityService<T extends IdentifiableEntity> extend
      */
     public Pager<Rights> getRights(T t, Integer pageSize, Integer pageNumber, List<String> propertyPaths);
 
-//    /**
-//     * Return a list of all uuids mapped to titleCache in the convenient <code>UuidAndTitleCache</code> object.
-//     * @see #getUuidAndTitleCache(Integer, String)
-//     */
-//    public List<UuidAndTitleCache<T>> getUuidAndTitleCache();
-
     /**
      * Return a list of all uuids mapped to titleCache in the convenient <code>UuidAndTitleCache</code> object.
      * Retrieving this list is considered to be significantly faster than initializing the fully fledged business
@@ -112,9 +106,23 @@ public interface IIdentifiableEntityService<T extends IdentifiableEntity> extend
      * a selection has been made.
      *
      * @return a list of <code>UuidAndTitleCache</code> instances
+     *
+     * @see #getUuidAndTitleCache(Class, Integer, String)
      */
     public List<UuidAndTitleCache<T>> getUuidAndTitleCache(Integer limit, String pattern);
 
+    /**
+     * Like {@link #getUuidAndTitleCache(Integer, String)} but searching only on a subclass
+     * of the type handled by the DAO.
+     *
+     * @param clazz the (sub)class
+     * @param limit max number of results
+     * @param pattern search pattern
+
+     * @see #getUuidAndTitleCache(Integer, String)
+     */
+    public <S extends T> List<UuidAndTitleCache<S>> getUuidAndTitleCache(Class<S> clazz, Integer limit, String pattern);
+
     /**
      * Return a Pager of objects matching the given query string, optionally filtered by class, optionally with a particular MatchMode
      *
index a0a0c065e9aeffb817f95008f62b246b2ab21390..46e38b51be9cfeda62227ab0d1e8c10a22b042ef 100644 (file)
@@ -25,8 +25,8 @@ 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.dto.IdentifiedEntityDTO;
-import eu.etaxonomy.cdm.api.service.dto.MarkedEntityDTO;
 import eu.etaxonomy.cdm.api.service.dto.IncludedTaxaDTO;
+import eu.etaxonomy.cdm.api.service.dto.MarkedEntityDTO;
 import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;
 import eu.etaxonomy.cdm.api.service.exception.HomotypicalGroupChangeException;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
@@ -837,11 +837,7 @@ public interface ITaxonService extends IIdentifiableEntityService<TaxonBase>{
 
     public Synonym findBestMatchingSynonym(String taxonName);
 
-    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCacheTaxon(Integer limit, String pattern);
-
-    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCacheSynonym(Integer limit, String pattern);
-
-    public List<UuidAndTitleCache<IdentifiableEntity>> findTaxaAndNamesForEditor(IFindTaxaAndNamesConfigurator configurator);
+     public List<UuidAndTitleCache<IdentifiableEntity>> findTaxaAndNamesForEditor(IFindTaxaAndNamesConfigurator configurator);
 
     /**
      * Creates the specified inferred synonyms for the taxon in the classification, but do not insert it to the database
index eff01cb868b1035239570bf026e12b57062c56b8..5c853a72c7c9f7d0a9151628b17070e093b34ba7 100644 (file)
@@ -136,12 +136,6 @@ public abstract class IdentifiableServiceBase<T extends IdentifiableEntity, DAO
                }
                return result;
        }
-//
-//     @Override
-//    public List<UuidAndTitleCache<T>> getUuidAndTitleCache() {
-//         return getUuidAndTitleCache(null, null);
-//     }
-
 
        @Transactional(readOnly = true)
        @Override
@@ -149,6 +143,12 @@ public abstract class IdentifiableServiceBase<T extends IdentifiableEntity, DAO
                return dao.getUuidAndTitleCache(limit, pattern);
        }
 
+    @Transactional(readOnly = true)
+    @Override
+    public <S extends T> List<UuidAndTitleCache<S>> getUuidAndTitleCache(Class<S> clazz,Integer limit, String pattern) {
+        return dao.getUuidAndTitleCache(clazz, limit, pattern);
+    }
+
        @Transactional(readOnly = true)
        @Override
        public Pager<T> findByTitle(Class<? extends T> clazz, String queryString,MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
index 9c231a74706266660ba97a6f22f7124a76310109..dd93863b24e3e87b11b1390e9245872487e68d40 100644 (file)
@@ -1526,7 +1526,7 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
                     }
                     newTaxon = HibernateProxyHelper.deproxy(newTaxon, Taxon.class);
                     fromTaxon = HibernateProxyHelper.deproxy(fromTaxon, Taxon.class);
-                    SynonymRelationship newSynRelation = newTaxon.addSynonym(syn, newSynonymRelationshipType, newReference, newRefDetail);
+                    newTaxon.addSynonym(syn, newSynonymRelationshipType, newReference, newRefDetail);
                     fromTaxon.removeSynonymRelation(synRelation, false);
 //
                     //change homotypic group of synonym if relType is 'homotypic'
@@ -1545,22 +1545,13 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
         result.addUpdatedObject(newTaxon);
         saveOrUpdate(fromTaxon);
         saveOrUpdate(newTaxon);
-        //Assert that there is a result
-        if (result == null){
-            String message = "Old synonym relation could not be transformed into new relation. This should not happen.";
-            throw new IllegalStateException(message);
-        }
-        return result;
-    }
 
-    @Override
-    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCacheTaxon(Integer limit, String pattern) {
-        return dao.getUuidAndTitleCacheTaxon(limit, pattern);
+        return result;
     }
 
     @Override
-    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCacheSynonym(Integer limit, String pattern) {
-        return dao.getUuidAndTitleCacheSynonym(limit, pattern);
+    public <T extends TaxonBase> List<UuidAndTitleCache<T>> getUuidAndTitleCache(Class<T> clazz, Integer limit, String pattern) {
+        return dao.getUuidAndTitleCache(clazz, limit, pattern);
     }
 
     @Override