Added some generic accessor methods to the service classes
authorben.clark <ben.clark@localhost>
Fri, 20 Mar 2009 16:58:42 +0000 (16:58 +0000)
committerben.clark <ben.clark@localhost>
Fri, 20 Mar 2009 16:58:42 +0000 (16:58 +0000)
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/AgentServiceImpl.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/DescriptionServiceImpl.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IAgentService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IDescriptionService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IOccurrenceService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITermService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/OccurrenceServiceImpl.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TermServiceImpl.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/UserService.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NameServiceImplTest2.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonServiceSearchTest.java

index 9e3df384110b5678f18a33db16ae610b3f22f441..7158aa7c87a2f6dbc124531878124fe08289c988 100644 (file)
@@ -22,6 +22,7 @@ import org.springframework.transaction.annotation.Transactional;
 \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.model.agent.AgentBase;\r
 import eu.etaxonomy.cdm.model.agent.Institution;\r
 import eu.etaxonomy.cdm.model.agent.InstitutionalMembership;\r
@@ -101,5 +102,16 @@ public class AgentServiceImpl extends IdentifiableServiceBase<AgentBase,IAgentDa
                return new DefaultPagerImpl<Person>(pageNumber, numberOfResults, pageSize, results);\r
        }\r
 \r
+       public Pager<Address> getAddresses(AgentBase agent, Integer pageSize, Integer pageNumber) {\r
+               Integer numberOfResults = dao.countAddresses(agent);\r
+               \r
+               List<Address> results = new ArrayList<Address>();\r
+               if(numberOfResults > 0) { // no point checking again\r
+                       results = dao.getAddresses(agent, pageSize, pageNumber); \r
+               }\r
+                       \r
+               return new DefaultPagerImpl<Address>(pageNumber, numberOfResults, pageSize, results);\r
+       }\r
+\r
        \r
 }\r
index 822bdded3a506ac0f50db90ecab30e0097f23d8e..636fb1e6059ea5557e2cc86e4dd507a5bb79cf3d 100644 (file)
@@ -23,7 +23,6 @@ import org.springframework.transaction.annotation.Transactional;
 \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.Annotation;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.cdm.model.common.VersionableEntity;\r
 import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
@@ -283,4 +282,12 @@ public class DescriptionServiceImpl extends IdentifiableServiceBase<DescriptionB
                \r
                return new DefaultPagerImpl<TextData>(pageNumber, numberOfResults, pageSize, results);\r
        }\r
+\r
+       public FeatureTree getFeatureTreeByUuid(UUID uuid) {\r
+               return featureTreeDao.findByUuid(uuid);\r
+       }\r
+\r
+       public DescriptionElementBase getDescriptionElementByUuid(UUID uuid) {\r
+               return descriptionElementDao.findByUuid(uuid);\r
+       }\r
 }\r
index 985b537556481d80c7bcfe19bc3ea454a6c9d795..6c3eaa3f2e2da4e3dd2836f9d21311d9a1830124 100644 (file)
@@ -15,6 +15,7 @@ import java.util.Map;
 import java.util.UUID;\r
 \r
 import eu.etaxonomy.cdm.api.service.pager.Pager;\r
+import eu.etaxonomy.cdm.model.agent.Address;\r
 import eu.etaxonomy.cdm.model.agent.AgentBase;\r
 import eu.etaxonomy.cdm.model.agent.Institution;\r
 import eu.etaxonomy.cdm.model.agent.InstitutionalMembership;\r
@@ -59,4 +60,14 @@ public interface IAgentService extends IIdentifiableEntityService<AgentBase> {
         * @return a Pager containing Person  instances\r
         */\r
        public Pager<Person> getMembers(Team team, Integer pageSize, Integer pageNumber);\r
+       \r
+       /**\r
+        * Return a paged list of the addresses of an agent\r
+        * \r
+        * @param agent the agent\r
+        * @param pageSize The maximum number of addresses returned (can be null for all members)\r
+        * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)\r
+        * @return a Pager containing Address  instances\r
+        */\r
+       public Pager<Address> getAddresses(AgentBase agent, Integer pageSize, Integer pageNumber);\r
 }\r
index 69f97f2f4f0e49536a7b34a6d1df75f46025379a..57a4716c99b3ca5c617b061afd35c4a11a9f9bba 100644 (file)
@@ -39,6 +39,7 @@ public interface IDescriptionService extends IIdentifiableEntityService<Descript
         * @param uuid\r
         * @return\r
         */\r
+       // FIXME candidate for harmonization? findByUuid\r
        public DescriptionBase getDescriptionBaseByUuid(UUID uuid);\r
 \r
        /**\r
@@ -46,6 +47,7 @@ public interface IDescriptionService extends IIdentifiableEntityService<Descript
          * @param description\r
         * @return\r
         */\r
+       // FIXME candidate for harmonization? save\r
        public UUID saveDescription(DescriptionBase description);\r
 \r
        /**\r
@@ -59,6 +61,14 @@ public interface IDescriptionService extends IIdentifiableEntityService<Descript
        public Map<UUID, FeatureTree> saveFeatureTreeAll(Collection<FeatureTree> trees);\r
        public Map<UUID, FeatureNode> saveFeatureNodeAll(Collection<FeatureNode> nodes);\r
        \r
+       /**\r
+        * Gets a FeatureTree instance matching the supplied uuid\r
+        * \r
+        * @param uuid the uuid of the FeatureTree of interest\r
+        * @return a FeatureTree, or null if the FeatureTree does not exist\r
+        */\r
+       public FeatureTree getFeatureTreeByUuid(UUID uuid);\r
+       \r
        public List<FeatureTree> getFeatureTreesAll();\r
        public List<FeatureNode> getFeatureNodesAll();\r
        \r
@@ -66,6 +76,14 @@ public interface IDescriptionService extends IIdentifiableEntityService<Descript
        //public TermVocabulary<Feature> getFeatureVocabulary();\r
        public TermVocabulary<Feature> getFeatureVocabulary(UUID uuid);\r
 \r
+       /**\r
+        * Gets a DescriptionElementBase instance matching the supplied uuid\r
+        * \r
+        * @param uuid the uuid of the DescriptionElement of interest\r
+        * @return a DescriptionElement, or null if the DescriptionElement does not exist\r
+        */\r
+       public DescriptionElementBase getDescriptionElementByUuid(UUID uuid);\r
+       \r
        /**\r
         * List the descriptions of type <TYPE>, filtered using the following parameters\r
         *  \r
index 62ec358508dcb0fcf1cd6c3dc7d156020cdfc271..0df2ee05b0554fd83eac6cf70a891aef9fc772b2 100644 (file)
@@ -54,6 +54,8 @@ public interface IOccurrenceService extends IIdentifiableEntityService<SpecimenO
        /** */\r
        public abstract List<Collection> searchCollectionByCode(String code);\r
        \r
+       public abstract UUID saveCollection(Collection collection);\r
+       \r
        /**\r
      * Returns a List of Media that are associated with a given occurence\r
      * \r
index a72bdd5b7c8126c7483881151a0dbc7c7ec51235..39a54c54ebb87337502caf78738e1df816e110cb 100644 (file)
@@ -15,6 +15,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
+import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
@@ -24,6 +25,9 @@ import eu.etaxonomy.cdm.model.common.TermBase;
 import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
 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.name.TaxonNameBase;
 
 public interface ITermService extends IService<DefinedTermBase> {
@@ -45,6 +49,7 @@ public interface ITermService extends IService<DefinedTermBase> {
        
        public abstract Set<TermVocabulary> listVocabularies(Class termClass);
 
+       public abstract UUID saveTermVocabulary(TermVocabulary termVocabulary);
 
        /**
         * FIXME candidate for harmonization?
@@ -79,5 +84,55 @@ public interface ITermService extends IService<DefinedTermBase> {
        public Language getLanguageByIso(String iso639);
        
        public NamedArea getAreaByTdwgAbbreviation(String tdwgAbbreviation);
-
+       
+        /**
+     * Returns a paged list of Media that represent a given DefinedTerm instance
+     * 
+        * @param definedTerm the definedTerm represented by these media
+        * @param pageSize The maximum number of media returned (can be null for all related media)
+        * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)
+     * @return a Pager of media instances
+     */
+       public Pager<Media> getMedia(DefinedTermBase definedTerm, Integer pageSize, Integer pageNumber);
+       
+       /**
+        * Returns a paged list of NamedArea instances (optionally filtered by type or level)
+        * 
+        * @param level restrict the result set to named areas of a certain level (can be null)
+        * @param type restrict the result set to named areas of a certain type (can be null)
+        * @param pageSize The maximum number of namedAreas returned (can be null for all named areas)
+        * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)
+        * @return a Pager of named areas
+        */
+       public Pager<NamedArea> list(NamedAreaLevel level, NamedAreaType type, Integer pageSize, Integer pageNumber);
+       
+       /**
+        * Return a paged list of terms which are specializations of a given definedTerm
+        * 
+        * @param definedTerm The term which is a generalization of the terms returned
+        * @param pageSize The maximum number of terms returned (can be null for all specializations)
+        * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)
+        * @return a Pager of DefinedTerms
+        */
+       public <T extends DefinedTermBase> Pager<T> getGeneralizationOf(T definedTerm, Integer pageSize, Integer pageNumber);
+       
+       /**
+        * Return a paged list of distinct terms which include the terms supplied
+        * 
+        * @param definedTerms the set of terms which are part of the terms of interest 
+        * @param pageSize The maximum number of terms returned (can be null for all terms)
+        * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)
+        * @return a Pager of DefinedTerms
+        */
+       public <T extends DefinedTermBase> Pager<T> getPartOf(Set<T> definedTerms, Integer pageSize, Integer pageNumber);
+       
+       /**
+        * Return a paged list of terms which are part of the terms supplied
+        * 
+        * @param definedTerms the set of terms which include the terms of interest 
+        * @param pageSize The maximum number of terms returned (can be null for all terms)
+        * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)
+        * @return a Pager of DefinedTerms
+        */
+       public <T extends DefinedTermBase> Pager<T> getIncludes(Set<T> definedTerms, Integer pageSize, Integer pageNumber);
 }
index 9757ece096e15e7c4e69345828a437f8c6986cf5..c400513b84805b55ea21e11ed9d9a8bb629330f8 100644 (file)
@@ -141,5 +141,9 @@ public class OccurrenceServiceImpl extends IdentifiableServiceBase<SpecimenOrObs
                \r
                return new DefaultPagerImpl<Media>(pageNumber, numberOfResults, pageSize, results);\r
        }\r
+\r
+       public UUID saveCollection(eu.etaxonomy.cdm.model.occurrence.Collection collection) {\r
+               return collectionDao.save(collection);\r
+       }\r
        \r
 }\r
index 9555d1bf5548486873818b8ccd099c4af47a7ec6..2134746d8581628b8ec9ff04d3a67ef3246f3625 100644 (file)
@@ -9,6 +9,7 @@
 
 package eu.etaxonomy.cdm.api.service;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -23,6 +24,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 import sun.print.resources.serviceui;
 
+import eu.etaxonomy.cdm.api.service.pager.Pager;
+import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
@@ -31,7 +34,11 @@ import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
 import eu.etaxonomy.cdm.model.common.Representation;
 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.TaxonRelationship;
 import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;
 import eu.etaxonomy.cdm.persistence.dao.common.ILanguageStringBaseDao;
 import eu.etaxonomy.cdm.persistence.dao.common.ILanguageStringDao;
@@ -110,6 +117,10 @@ public class TermServiceImpl extends ServiceBase<DefinedTermBase,IDefinedTermDao
     saveTermVocabulariesAll(Collection<TermVocabulary<DefinedTermBase>> termVocabularies) {
                return vocabularyDao.saveAll(termVocabularies);
        }
+       
+       public UUID saveTermVocabulary(TermVocabulary termVocabulary) {
+               return vocabularyDao.save(termVocabulary);
+       }
 
 //     @Transactional(readOnly = false)
 //     public Map<UUID, Representation> saveRepresentationsAll(Collection<Representation> representations){
@@ -162,6 +173,61 @@ public class TermServiceImpl extends ServiceBase<DefinedTermBase,IDefinedTermDao
                //(see also FIXMEs in TdwgArea)
                return TdwgArea.getAreaByTdwgAbbreviation(tdwgAbbreviation);
        }
+
+       public <T extends DefinedTermBase> Pager<T> getGeneralizationOf(T definedTerm, Integer pageSize, Integer pageNumber) {
+        Integer numberOfResults = dao.countGeneralizationOf(definedTerm);
+               
+               List<T> results = new ArrayList<T>();
+               if(numberOfResults > 0) { // no point checking again
+                       results = dao.getGeneralizationOf(definedTerm, pageSize, pageNumber); 
+               }
+               
+               return new DefaultPagerImpl<T>(pageNumber, numberOfResults, pageSize, results);
+       }
+
+       public <T extends DefinedTermBase> Pager<T> getIncludes(Set<T> definedTerms, Integer pageSize, Integer pageNumber) {
+        Integer numberOfResults = dao.countIncludes(definedTerms);
+               
+               List<T> results = new ArrayList<T>();
+               if(numberOfResults > 0) { // no point checking again
+                       results = dao.getIncludes(definedTerms, pageSize, pageNumber); 
+               }
+               
+               return new DefaultPagerImpl<T>(pageNumber, numberOfResults, pageSize, results);
+       }
+
+       public Pager<Media> getMedia(DefinedTermBase definedTerm, Integer pageSize,     Integer pageNumber) {
+        Integer numberOfResults = dao.countMedia(definedTerm);
+               
+               List<Media> results = new ArrayList<Media>();
+               if(numberOfResults > 0) { // no point checking again
+                       results = dao.getMedia(definedTerm, pageSize, pageNumber); 
+               }
+               
+               return new DefaultPagerImpl<Media>(pageNumber, numberOfResults, pageSize, results);
+       }
+
+       public <T extends DefinedTermBase> Pager<T> getPartOf(Set<T> definedTerms,Integer pageSize, Integer pageNumber) {
+        Integer numberOfResults = dao.countPartOf(definedTerms);
+               
+               List<T> results = new ArrayList<T>();
+               if(numberOfResults > 0) { // no point checking again
+                       results = dao.getPartOf(definedTerms, pageSize, pageNumber); 
+               }
+               
+               return new DefaultPagerImpl<T>(pageNumber, numberOfResults, pageSize, results);
+       }
+
+       public Pager<NamedArea> list(NamedAreaLevel level, NamedAreaType type,  Integer pageSize, Integer pageNumber) {
+        Integer numberOfResults = dao.count(level, type);
+               
+               List<NamedArea> results = new ArrayList<NamedArea>();
+               if(numberOfResults > 0) { // no point checking again
+                       results = dao.list(level, type, pageSize, pageNumber); 
+               }
+               
+               return new DefaultPagerImpl<NamedArea>(pageNumber, numberOfResults, pageSize, results);
+       }
        
        
        
index 5ef2997c1b4f8c67805925d67908447a36cc9547..1e08a21681bad45c8f8a44c18ce2889237d0ea02 100644 (file)
@@ -1,6 +1,7 @@
 package eu.etaxonomy.cdm.api.service;\r
 \r
 import java.util.List;\r
+import java.util.UUID;\r
 \r
 import org.hibernate.NonUniqueResultException;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
@@ -260,5 +261,9 @@ public class UserService implements UserDetailsManager, GroupManager {
                group.setName(newName);\r
                groupDao.update(group);\r
        }\r
+       \r
+       public UUID save(User user) {\r
+               return userDao.save(user);\r
+       }\r
 \r
 }\r
index 057eccbecaa8444543cae98bcd9edbbb7b47eb35..e7927e3d1293cacc922fcf316ca9f8a8a87d9d3d 100644 (file)
@@ -110,7 +110,6 @@ public class NameServiceImplTest2 extends CdmIntegrationTest {
         * Test method for {@link eu.etaxonomy.cdm.api.service.NameServiceImpl#getRankVocabulary()}.\r
         */\r
        @Test\r
-       //@Ignore\r
        public void testGetRankVocabulary() {\r
                OrderedTermVocabulary<Rank> rankVocabulary = service.getRankVocabulary();\r
                assertNotNull(rankVocabulary);\r
@@ -125,7 +124,6 @@ public class NameServiceImplTest2 extends CdmIntegrationTest {
        /**\r
         * Test method for {@link eu.etaxonomy.cdm.api.service.NameServiceImpl#getTypeDesignationVocabulary()}.\r
         */\r
-       //@Ignore\r
        @Test\r
        public void testGetTypeDesignationVocabulary() {\r
                OrderedTermVocabulary<TypeDesignationStatus> typeDesignationVocabulary = \r
index 7ea4be1444218578c054f82a02d567bcb3cea56f..0df097e9e7bfab69a00df8e89ade79ec7b67026b 100644 (file)
@@ -73,8 +73,8 @@ public class TaxonServiceSearchTest extends CdmIntegrationTest {
                                if (list.get(i) instanceof NonViralName) {\r
                                        nameCache = ((NonViralName<?>)list.get(i)).getNameCache();\r
                                } else if (list.get(i) instanceof TaxonBase) {\r
-                                       TaxonNameBase<?,?> taxonNameBase= ((TaxonBase)list.get(i)).getName();\r
-                                       nameCache = ((NonViralName<?>)taxonNameBase).getNameCache();\r
+                                       TaxonNameBase taxonNameBase= ((TaxonBase)list.get(i)).getName();\r
+                                       nameCache = ((NonViralName)taxonNameBase).getNameCache();\r
                                } else {}\r
                                logger.debug(list.get(i).getClass() + "(" + i +")" + \r
                                                ": Name Cache = " + nameCache + ", Title Cache = " + list.get(i).getTitleCache());\r