Fixes #2233
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / TermServiceImpl.java
index f2b82fa97a818d94433cc7532c09edc8517053e0..72f175bdd405136bce56b8a57cf515468a4cad06 100644 (file)
@@ -21,6 +21,7 @@ import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import eu.etaxonomy.cdm.api.service.pager.Pager;
@@ -30,11 +31,14 @@ 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.Representation;
+import eu.etaxonomy.cdm.model.common.TermBase;
+import eu.etaxonomy.cdm.model.common.TermVocabulary;
 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.location.TdwgArea;
 import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;
 import eu.etaxonomy.cdm.persistence.dao.common.ILanguageStringBaseDao;
 import eu.etaxonomy.cdm.persistence.dao.common.ILanguageStringDao;
@@ -42,7 +46,7 @@ import eu.etaxonomy.cdm.persistence.dao.common.IRepresentationDao;
 import eu.etaxonomy.cdm.persistence.query.OrderHint;
 
 @Service
-@Transactional(readOnly = true)
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
 public class TermServiceImpl extends IdentifiableServiceBase<DefinedTermBase,IDefinedTermDao> implements ITermService{
        private static final Logger logger = Logger.getLogger(TermServiceImpl.class);
        private ILanguageStringDao languageStringDao;
@@ -66,6 +70,10 @@ public class TermServiceImpl extends IdentifiableServiceBase<DefinedTermBase,IDe
                this.dao = dao;
        }
                
+       public <TERM extends DefinedTermBase> List<TERM> listByTermClass(Class<TERM> clazz, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+               return dao.listByTermClass(clazz, limit, start, orderHints, propertyPaths);
+       }       
+       
        /**
         * @see eu.etaxonomy.cdm.api.service.ITermService#getTermByUri(java.lang.String)
         */
@@ -171,8 +179,15 @@ public class TermServiceImpl extends IdentifiableServiceBase<DefinedTermBase,IDe
                return languageStringBaseDao.save(languageData);
        }
 
-       public void generateTitleCache() {
-               // TODO Auto-generated method stub
-               
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
+        */
+       @Override
+       public void updateTitleCache() {
+               //TODO shouldnt this be TermBase instead of DefinedTermBase
+               Class<DefinedTermBase> clazz = DefinedTermBase.class;
+               super.updateTitleCache(clazz, null, null);
        }       
+       
+       
 }