configurable bean initialization methods
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Tue, 7 Apr 2009 12:23:34 +0000 (12:23 +0000)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Tue, 7 Apr 2009 12:23:34 +0000 (12:23 +0000)
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/AnnotatableServiceBase.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ServiceBase.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java

index 6ec422d0375ba9845d38d3ca3dba7b1ea8bd3f3c..e69fec812153f4a4122f197c69afff94fd2b6e99 100644 (file)
@@ -13,6 +13,8 @@ package eu.etaxonomy.cdm.api.service;
 import java.util.ArrayList;\r
 import java.util.List;\r
 \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.common.AnnotatableEntity;\r
@@ -23,6 +25,7 @@ import eu.etaxonomy.cdm.persistence.dao.common.IAnnotatableDao;
 public abstract class AnnotatableServiceBase<T extends AnnotatableEntity,DAO extends IAnnotatableDao<T>> extends VersionableServiceBase<T, DAO>\r
                implements IAnnotatableService<T> {\r
        \r
+       @Transactional\r
        public Pager<Annotation> getAnnotations(T annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber) {\r
                Integer numberOfResults = dao.countAnnotations(annotatedObj, status);\r
                \r
index 53f7cb7687ecdf86655e17f691435d596250d1e7..7e51d7b213f698fea9e1430e3db50d9e7cd3cf9a 100644 (file)
@@ -22,6 +22,8 @@ import org.springframework.transaction.annotation.Transactional;
 import eu.etaxonomy.cdm.api.service.pager.Pager;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.cdm.persistence.dao.BeanInitializer;\r
 import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
 \r
 \r
@@ -158,6 +160,30 @@ public interface IService<T extends CdmBase>{
         */\r
        public T findByUuid(UUID uuid);\r
        \r
+       /**\r
+        * Finds the cdm entity specified by the <code>uuid</code> parameter and\r
+        * initializes all its *ToOne relations.\r
+        * \r
+        * @param uuid\r
+        * @return\r
+        */\r
+       public T load(UUID uuid);       \r
+       \r
+       /**\r
+        * Finds the cdm entity specified by the <code>uuid</code> parameter and\r
+        * recursively initializes all bean properties given in the\r
+        * <code>propertyPaths</code> parameter.\r
+        * <p>\r
+        * For detailed description and examples <b>please refer to:</b> \r
+        * {@link BeanInitializer#initializeProperties(Object, List)}\r
+        * \r
+        * @param uuid\r
+        * @return\r
+        */\r
+       public T load(UUID uuid, List<String> propertyPaths);\r
+       \r
+       \r
+       \r
        /**\r
         * Returns true if an entity of type <T> with a unique identifier matching the \r
         * identifier supplied exists in the database, or false if no such entity can be \r
index 553f64afa9ef82e47837e2bcd075009fb6b97f2d..1181694ea0adb6e6f8cc46ef2af90f2624dfa293 100644 (file)
@@ -33,6 +33,7 @@ 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.persistence.dao.BeanInitializer;
 import eu.etaxonomy.cdm.persistence.fetch.CdmFetch;
 
 
@@ -42,7 +43,7 @@ public interface ITaxonService extends IIdentifiableEntityService<TaxonBase>{
         * FIXME candidate for harmonization? 
         */
        public abstract TaxonBase getTaxonByUuid(UUID uuid);
-
+       
        /**
         * FIXME candidate for harmonization? 
         * save a taxon and return its UUID
index d655910318b6a590fc9485b296f279d22bfc3676..36cebd38bc212036e5d4268c73878c755a737df9 100644 (file)
@@ -29,6 +29,7 @@ import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.persistence.dao.common.ICdmEntityDao;\r
 import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
 \r
@@ -141,6 +142,17 @@ public abstract class ServiceBase<T extends CdmBase, DAO extends ICdmEntityDao<T
        public T findByUuid(UUID uuid) {\r
                return dao.findByUuid(uuid);\r
        }\r
+       \r
+       @Transactional(readOnly = true)\r
+       public T load(UUID uuid) {\r
+               return dao.load(uuid);\r
+       }\r
+       \r
+       @Transactional(readOnly = true)\r
+       public T load(UUID uuid, List<String> propertyPaths){\r
+               return dao.load(uuid, propertyPaths);\r
+       }\r
+       \r
 \r
        @Transactional(readOnly = true)\r
        public <TYPE extends T> List<TYPE> list(Class<TYPE> type, int limit,int start) {\r
index 9d316c73007e909cd16afebb2edac15064d5688a..55c6673756469e01ba3b5379f4e85a02abadc4b6 100644 (file)
@@ -46,6 +46,7 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
+import eu.etaxonomy.cdm.persistence.dao.BeanInitializer;\r
 import eu.etaxonomy.cdm.persistence.dao.common.IOrderedTermVocabularyDao;\r
 import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionDao;\r
 import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao;\r
@@ -67,6 +68,7 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
        private IOrderedTermVocabularyDao orderedVocabularyDao;\r
        @Autowired\r
        private IDescriptionDao descriptionDao;\r
+\r
        \r
        /**\r
         * Constructor\r
@@ -401,5 +403,5 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
                return new DefaultPagerImpl<IdentifiableEntity>\r
                        (configurator.getPageNumber(), numberOfResults, configurator.getPageSize(), results);\r
        }\r
-       \r
+\r
 }\r