compile errors in descriptionServiceImpl -> Needs to be fixed by Maxime
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / INameService.java
index c3696c1e697bfde2d455670c50ea2457664e9164..68a3e98bc2c4b13c29aaa8961b5f6e82299d4c15 100644 (file)
@@ -16,6 +16,8 @@ import java.util.Map;
 import java.util.Set;\r
 import java.util.UUID;\r
 \r
+import org.hibernate.criterion.Criterion;\r
+\r
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
 import eu.etaxonomy.cdm.api.service.pager.Pager;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
@@ -23,6 +25,7 @@ import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
 import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;\r
 import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;\r
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
 import eu.etaxonomy.cdm.model.name.HybridRelationship;\r
@@ -38,44 +41,17 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.persistence.dao.BeanInitializer;\r
+import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
 import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
 \r
 public interface INameService extends IIdentifiableEntityService<TaxonNameBase> {\r
 \r
-       /**\r
-        * FIXME candidate for harmonization?\r
-        * @param uuid\r
-        * @return\r
-        */\r
-       public TaxonNameBase getTaxonNameByUuid(UUID uuid);\r
-\r
-       /**\r
-        * FIXME candidate for harmonization?\r
-        * @param taxonName\r
-        * @return\r
-        */\r
-       public UUID saveTaxonName(TaxonNameBase taxonName);\r
-\r
-       /**\r
-        * FIXME candidate for harmonization?\r
-        * Saves a collection of  TaxonNames and return its UUID@param taxonCollection\r
-        * @return\r
-        */\r
-       public Map<UUID, TaxonNameBase> saveTaxonNameAll(Collection<? extends TaxonNameBase> taxonCollection);\r
 \r
        public Map<UUID, TypeDesignationBase> saveTypeDesignationAll(Collection<TypeDesignationBase> typeDesignationCollection);\r
 \r
        public Map<UUID, ReferencedEntityBase> saveReferencedEntitiesAll(Collection<ReferencedEntityBase> referencedEntityCollection);\r
                \r
        public Map<UUID, HomotypicalGroup> saveAllHomotypicalGroups(Collection<HomotypicalGroup> homotypicalGroups);\r
-       \r
-       /**\r
-        * FIXME candidate for harmonization?\r
-        * @param limit\r
-        * @param start\r
-        * @return\r
-        */\r
-       public List<TaxonNameBase> getAllNames(int limit, int start);\r
 \r
        public List<NomenclaturalStatus> getAllNomenclaturalStatus(int limit, int start);\r
 \r
@@ -225,7 +201,7 @@ public interface INameService extends IIdentifiableEntityService<TaxonNameBase>
         * @param propertyPaths properties to initialize - see {@link BeanInitializer#initialize(Object, List)}\r
         * @return a Pager of HybridRelationship instances\r
         */\r
-       public Pager<HybridRelationship> getHybridNames(BotanicalName name, HybridRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);\r
+       public Pager<HybridRelationship> getHybridNames(NonViralName name, HybridRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);\r
        \r
        /**\r
         * Return a List of types related to this name, optionally filtered \r
@@ -283,5 +259,31 @@ public interface INameService extends IIdentifiableEntityService<TaxonNameBase>
         * @return \r
         *                      a <code>Map</code> containing uuid and titleCache of names\r
         */\r
-       public Map<UUID, String> getUuidAndTitleCacheOfNames();\r
+       public List<UuidAndTitleCache> getUuidAndTitleCacheOfNames();\r
+       \r
+       /**\r
+        * Return a Pager of names matching the given query string, optionally filtered by class, optionally with a particular MatchMode\r
+        * \r
+        * @param clazz filter by class - can be null to include all instances of type T\r
+        * @param queryString the query string to filter by\r
+        * @param matchmode use a particular type of matching (can be null - defaults to exact matching)\r
+        * @param criteria additional criteria to filter by\r
+        * @param pageSize The maximum number of objects returned (can be null for all objects)\r
+        * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)\r
+        * @param propertyPaths properties to initialize - see {@link BeanInitializer#initialize(Object, List)}\r
+        * @param orderHints\r
+        *            Supports path like <code>orderHints.propertyNames</code> which\r
+        *            include *-to-one properties like createdBy.username or\r
+        *            authorTeam.persistentTitleCache\r
+        * @return a paged list of instances of type T matching the queryString\r
+        */\r
+    public Pager<TaxonNameBase> findByName(Class<? extends TaxonNameBase> clazz, String queryString,MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);\r
+    \r
+    /**\r
+     * Returns a homotypical group with the given UUID or null if not homotypical group exists with that UUID\r
+     * \r
+     * @param uuid the uuid of the homotypical group\r
+     * @return a homotypical group\r
+     */\r
+    public HomotypicalGroup findHomotypicalGroup(UUID uuid);\r
 }
\ No newline at end of file