a bit more cleaning up
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / VocabularyServiceImpl.java
index 9a02c331ad81c28449f17d6a0d9a7f9f07c5071a..e902147ea0e8dedfc30b11302eeeb979b18fb3e1 100644 (file)
@@ -1,26 +1,36 @@
+/**\r
+* Copyright (C) 2009 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/ \r
+\r
 package eu.etaxonomy.cdm.api.service;\r
 \r
 import java.util.ArrayList;\r
 import java.util.List;\r
-import java.util.Set;\r
 import java.util.UUID;\r
 \r
 import org.springframework.beans.factory.annotation.Autowired;\r
 import org.springframework.stereotype.Service;\r
+import org.springframework.transaction.annotation.Propagation;\r
 import org.springframework.transaction.annotation.Transactional;\r
 \r
 import eu.etaxonomy.cdm.api.service.pager.Pager;\r
 import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;\r
-import eu.etaxonomy.cdm.model.agent.Address;\r
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.cdm.model.common.VocabularyEnum;\r
 import eu.etaxonomy.cdm.persistence.dao.common.ITermVocabularyDao;\r
 import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
+import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;\r
 \r
 @Service\r
-@Transactional(readOnly = true)\r
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)\r
 public class VocabularyServiceImpl extends IdentifiableServiceBase<TermVocabulary,ITermVocabularyDao>  implements IVocabularyService {\r
 \r
        @Autowired\r
@@ -28,24 +38,37 @@ public class VocabularyServiceImpl extends IdentifiableServiceBase<TermVocabular
                this.dao = dao;\r
        }\r
 \r
-       public void generateTitleCache() {\r
-               // TODO Auto-generated method stub\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy)\r
+        */\r
+       @Override\r
+       @Transactional(readOnly = false)\r
+    public void updateTitleCache(Class<? extends TermVocabulary> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<TermVocabulary> cacheStrategy, IProgressMonitor monitor) {\r
+               if (clazz == null){\r
+                       clazz = TermVocabulary.class;\r
+               }\r
+               super.updateTitleCacheImpl(clazz, stepSize, cacheStrategy, monitor);\r
        }\r
+\r
        \r
        public TermVocabulary<DefinedTermBase> getVocabulary(VocabularyEnum vocabularyType){\r
                return dao.findByUuid(vocabularyType.getUuid());\r
        }\r
        \r
-       /**\r
-        *  (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.api.service.ITermService#listVocabularies(java.lang.Class)\r
-        * FIXME candidate for harmonization\r
-        * vocabularyService.list\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.api.service.IVocabularyService#listByTermClass(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)\r
         */\r
-       public Set<TermVocabulary> listVocabularies(Class termClass) {\r
-               logger.error("Method not implemented yet");\r
-               return null;\r
+       @Override\r
+       public <TERM extends DefinedTermBase> List<TermVocabulary<TERM>> listByTermClass(Class<TERM> clazz, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {\r
+               boolean includeSubclasses = false;\r
+               boolean includeEmptyVocs = false;\r
+               return (List)listByTermClass(clazz, includeSubclasses, includeEmptyVocs, limit, start, orderHints, propertyPaths);\r
        }       \r
+\r
+       public <TERM extends DefinedTermBase> List<TermVocabulary<? extends TERM>> listByTermClass(Class<TERM> clazz, boolean includeSubclasses, boolean includeEmptyVocs, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {\r
+               return dao.listByTermClass(clazz, includeSubclasses, includeEmptyVocs,limit, start, orderHints, propertyPaths);\r
+       }\r
        \r
        /** \r
         * (non-Javadoc)\r
@@ -64,11 +87,13 @@ public class VocabularyServiceImpl extends IdentifiableServiceBase<TermVocabular
         Integer numberOfResults = dao.countTerms(vocabulary);\r
                \r
                List<DefinedTermBase> results = new ArrayList<DefinedTermBase>();\r
-               if(numberOfResults > 0) { // no point checking again\r
+               if(numberOfResults > 0) { // no point checking again //TODO use AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)\r
                        results = dao.getTerms(vocabulary, pageSize, pageNumber,orderHints,propertyPaths); \r
                }\r
                        \r
                return new DefaultPagerImpl<DefinedTermBase>(pageNumber, numberOfResults, pageSize, results);\r
        }\r
 \r
+\r
+\r
 }\r