Added methods to IOccurenceDao as part of #466, created ICollectionDao and implementa...
authorben.clark <ben.clark@localhost>
Fri, 19 Dec 2008 19:01:26 +0000 (19:01 +0000)
committerben.clark <ben.clark@localhost>
Fri, 19 Dec 2008 19:01:26 +0000 (19:01 +0000)
.gitattributes
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IDescriptionElementDao.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoImpl.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/CollectionDaoHibernateImpl.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/OccurrenceDaoHibernateImpl.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/occurrence/ICollectionDao.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/occurrence/IOccurrenceDao.java

index 5603e0be257552ff4ea63a53e2e8cfa2a929c73f..4740dbf3edd5549e5d99de2aef8bf4a04fc55c50 100644 (file)
@@ -1012,6 +1012,7 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/comm
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/RepresentationDaoImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/TermVocabularyDaoImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoImpl.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/FeatureDaoImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/FeatureNodeDaoImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/FeatureTreeDaoImpl.java -text
@@ -1023,6 +1024,7 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/NomenclaturalStatusDaoHibernateImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TypeDesignationHibernateImpl.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/CollectionDaoHibernateImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/OccurrenceDaoHibernateImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/reference/ReferenceDaoHibernateImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImpl.java -text
@@ -1033,6 +1035,7 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/name/IHomotypi
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/name/INomenclaturalStatusDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/name/ITaxonNameDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/name/ITypeDesignationDao.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/occurrence/ICollectionDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/occurrence/IOccurrenceDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/reference/IReferenceDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/taxon/ITaxonDao.java -text
index 2170a39f5d7c27a7cb1ee550beb3bacae8263b05..ade62d6e8b150fb26682c7899c5d4b016eeb7e50 100644 (file)
@@ -5,9 +5,9 @@ import java.util.List;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.cdm.model.media.Media;
-import eu.etaxonomy.cdm.persistence.dao.common.ICdmEntityDao;
+import eu.etaxonomy.cdm.persistence.dao.common.IAnnotatableDao;
 
-public interface IDescriptionElementDao extends ICdmEntityDao<DescriptionElementBase> {
+public interface IDescriptionElementDao extends IAnnotatableDao<DescriptionElementBase> {
        /**
         * This query is designed to search the the descriptions. 
         * This is complicated somewhat by the 1 ... n relation between
@@ -37,9 +37,29 @@ public interface IDescriptionElementDao extends ICdmEntityDao<DescriptionElement
         */
        public List<TextData> searchTextData(String queryString, Integer pageSize, Integer pageNumber);
        
+       /**
+        * Return a count of TextData elements who's content matches the query string
+        * 
+        * @param queryString a query string following Lucene Query Parser syntax
+        * @return a count of matching TextData elements
+        */
        public int countTextData(String queryString);
        
+    /**
+     * Returns a List of Media that are associated with a given description element
+     * 
+        * @param descriptionElement the description element associated with 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 List of media instances
+     */
     public List<Media> getMedia(DescriptionElementBase descriptionElement, Integer pageSize, Integer pageNumber);
        
+    /**
+     * Returns a count of Media that are associated with a given description element
+     * 
+        * @param descriptionElement the description element associated with these media
+     * @return a count of media instances
+     */
        public int countMedia(DescriptionElementBase descriptionElement);
 }
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoImpl.java
new file mode 100644 (file)
index 0000000..b489cd7
--- /dev/null
@@ -0,0 +1,48 @@
+package eu.etaxonomy.cdm.persistence.dao.hibernate.description;
+
+import java.util.List;
+
+import org.hibernate.Query;
+import org.springframework.stereotype.Repository;
+
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.TextData;
+import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionElementDao;
+import eu.etaxonomy.cdm.persistence.dao.hibernate.common.AnnotatableDaoImpl;
+
+@Repository
+public class DescriptionElementDaoImpl extends AnnotatableDaoImpl<DescriptionElementBase> implements IDescriptionElementDao {
+
+       public int countMedia(DescriptionElementBase descriptionElement) {
+               Query query = getSession().createQuery("select count(media) from DescriptionElementBase descriptionElement join descriptionElement.media media where descriptionElement = :descriptionElement");
+               query.setParameter("descriptionElement", descriptionElement);
+               
+               return ((Long)query.uniqueResult()).intValue();
+       }
+
+       public int countTextData(String queryString) {
+               throw new UnsupportedOperationException("Free text searching isn't implemented yet, sorry!");
+       }
+
+       public List<Media> getMedia(DescriptionElementBase descriptionElement,  Integer pageSize, Integer pageNumber) {
+               Query query = getSession().createQuery("select media from DescriptionElementBase descriptionElement join descriptionElement.media media where descriptionElement = :descriptionElement");
+               query.setParameter("descriptionElement", descriptionElement);
+               
+               if(pageSize != null) {
+                   query.setMaxResults(pageSize);
+                   if(pageNumber != null) {
+                       query.setFirstResult(pageNumber * pageSize);
+                   } else {
+                       query.setFirstResult(0);
+                   }
+               }
+               
+               return (List<Media>)query.list();
+       }
+
+       public List<TextData> searchTextData(String queryString, Integer pageSize,      Integer pageNumber) {
+               throw new UnsupportedOperationException("Free text searching isn't implemented yet, sorry!");
+       }
+
+}
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/CollectionDaoHibernateImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/CollectionDaoHibernateImpl.java
new file mode 100644 (file)
index 0000000..89b40e9
--- /dev/null
@@ -0,0 +1,28 @@
+package eu.etaxonomy.cdm.persistence.dao.hibernate.occurrence;
+
+import java.util.List;
+
+import org.hibernate.Criteria;
+import org.hibernate.criterion.Restrictions;
+import org.springframework.stereotype.Repository;
+
+import eu.etaxonomy.cdm.model.occurrence.Collection;
+import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase;
+import eu.etaxonomy.cdm.persistence.dao.occurrence.ICollectionDao;
+
+@Repository
+public class CollectionDaoHibernateImpl extends IdentifiableDaoBase<Collection> implements
+               ICollectionDao {
+               
+       public CollectionDaoHibernateImpl() {
+               super(Collection.class);
+       }
+
+       public List<Collection> getCollectionByCode(String code) {
+               Criteria crit = getSession().createCriteria(Collection.class);
+
+               crit.add(Restrictions.eq("code", code));
+               List<Collection> results = crit.list();
+               return results;
+       }
+}
index 5139feb9f33b0604e0bca95a21982650e512e9c1..3a785345aa8d8f78ab1a36a89f5e972db3f66d4e 100644 (file)
@@ -9,11 +9,12 @@ package eu.etaxonomy.cdm.persistence.dao.hibernate.occurrence;
 import java.util.List;\r
 \r
 import org.apache.log4j.Logger;\r
-import org.hibernate.Criteria;\r
-import org.hibernate.criterion.Restrictions;\r
+import org.hibernate.Query;\r
 import org.springframework.stereotype.Repository;\r
 \r
-import eu.etaxonomy.cdm.model.occurrence.Collection;\r
+import eu.etaxonomy.cdm.model.media.Media;\r
+import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;\r
+import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase;\r
 import eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.TaxonDaoHibernateImpl;\r
@@ -32,12 +33,72 @@ public class OccurrenceDaoHibernateImpl extends IdentifiableDaoBase<SpecimenOrOb
        public OccurrenceDaoHibernateImpl() {\r
                super(SpecimenOrObservationBase.class);\r
        }\r
-       \r
-       public List<Collection> getCollectionByCode(String code) {\r
-               Criteria crit = getSession().createCriteria(Collection.class);\r
 \r
-               crit.add(Restrictions.eq("code", code));\r
-               List<Collection> results = crit.list();\r
-               return results;\r
+       public int countDerivationEvents(SpecimenOrObservationBase occurence) {\r
+               Query query = getSession().createQuery("select count(distinct derivationEvent) from DerivationEvent derivationEvent join derivationEvent.originals occurence where occurence = :occurence");\r
+               query.setParameter("occurence", occurence);\r
+               \r
+               return ((Long)query.uniqueResult()).intValue();\r
        }\r
+\r
+       public int countDeterminations(SpecimenOrObservationBase occurence) {\r
+               Query query = getSession().createQuery("select count(determination) from DeterminationEvent determination where determination.identifiedUnit = :occurence");\r
+               \r
+               return ((Long)query.uniqueResult()).intValue();\r
+       }\r
+\r
+       public int countMedia(SpecimenOrObservationBase occurence) {\r
+               Query query = getSession().createQuery("select count(media) from SpecimenOrObservationBase occurence join occurence.media media where occurence = :occurence");\r
+               query.setParameter("occurence", occurence);\r
+               \r
+               return ((Long)query.uniqueResult()).intValue();\r
+       }\r
+\r
+       public List<DerivationEvent> getDerivationEvents(SpecimenOrObservationBase occurence, Integer pageSize,Integer pageNumber) {\r
+               Query query = getSession().createQuery("select distinct derivationEvent from DerivationEvent derivationEvent join derivationEvent.originals occurence where occurence = :occurence");\r
+               query.setParameter("occurence", occurence);\r
+               \r
+               if(pageSize != null) {\r
+                   query.setMaxResults(pageSize);\r
+                   if(pageNumber != null) {\r
+                       query.setFirstResult(pageNumber * pageSize);\r
+                   } else {\r
+                       query.setFirstResult(0);\r
+                   }\r
+               }\r
+               \r
+               return (List<DerivationEvent>)query.list();\r
+       }\r
+\r
+       public List<DeterminationEvent> getDeterminations(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber) {\r
+               Query query = getSession().createQuery("select determination from DeterminationEvent determination where determination.identifiedUnit = :occurence");\r
+               query.setParameter("occurence", occurence);\r
+               \r
+               if(pageSize != null) {\r
+                   query.setMaxResults(pageSize);\r
+                   if(pageNumber != null) {\r
+                       query.setFirstResult(pageNumber * pageSize);\r
+                   } else {\r
+                       query.setFirstResult(0);\r
+                   }\r
+               }\r
+               \r
+               return (List<DeterminationEvent>)query.list();\r
+       }\r
+\r
+       public List<Media> getMedia(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber) {\r
+               Query query = getSession().createQuery("select media from SpecimenOrObservationBase occurence join occurence.media media where occurence = :occurence");\r
+               query.setParameter("occurence", occurence);\r
+               \r
+               if(pageSize != null) {\r
+                   query.setMaxResults(pageSize);\r
+                   if(pageNumber != null) {\r
+                       query.setFirstResult(pageNumber * pageSize);\r
+                   } else {\r
+                       query.setFirstResult(0);\r
+                   }\r
+               }\r
+               \r
+               return (List<Media>)query.list();\r
+       }       \r
 }\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/occurrence/ICollectionDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/occurrence/ICollectionDao.java
new file mode 100644 (file)
index 0000000..0c38281
--- /dev/null
@@ -0,0 +1,18 @@
+package eu.etaxonomy.cdm.persistence.dao.occurrence;
+
+import java.util.List;
+
+import eu.etaxonomy.cdm.model.occurrence.Collection;
+import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao;
+
+public interface ICollectionDao extends IIdentifiableDao<Collection> {
+       
+       /**
+        * Returns a list of Collection instances matching the code supplied
+        * 
+        * @param code The code 
+        * @return a List of Collection instances
+        */
+       public List<Collection> getCollectionByCode(String code);
+
+}
index e1dd16a0d5582ef4286f83869d49f1ae263937d2..475eac14ac38ff9e064b751a432ca477dca3d644 100644 (file)
@@ -8,7 +8,9 @@ package eu.etaxonomy.cdm.persistence.dao.occurrence;
 \r
 import java.util.List;\r
 \r
-import eu.etaxonomy.cdm.model.occurrence.Collection;\r
+import eu.etaxonomy.cdm.model.media.Media;\r
+import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;\r
+import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao;\r
 \r
@@ -18,5 +20,57 @@ import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao;
  */\r
 public interface IOccurrenceDao extends IIdentifiableDao<SpecimenOrObservationBase> {\r
        \r
-       public List<Collection> getCollectionByCode(String code);\r
+       /**\r
+     * Returns a count of Media that are associated with a given occurence\r
+     * \r
+        * @param occurence the occurence associated with these media\r
+     * @return a count of media instances\r
+     */\r
+       public int countMedia(SpecimenOrObservationBase occurence);\r
+       \r
+    /**\r
+     * Returns a List of Media that are associated with a given occurence\r
+     * \r
+        * @param occurence the occurence associated with these media\r
+        * @param pageSize The maximum number of media returned (can be null for all related media)\r
+        * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)\r
+     * @return a List of media instances\r
+     */\r
+       public List<Media> getMedia(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber);\r
+       \r
+       /**\r
+     * Returns a count of determinations that have been made for a given occurence\r
+     * \r
+        * @param occurence the occurence associated with these determinations\r
+     * @return a count of determination events\r
+     */\r
+    public int countDeterminations(SpecimenOrObservationBase occurence);\r
+       \r
+    /**\r
+     * Returns a List of determinations that have been made for a given occurence\r
+     * \r
+        * @param occurence the occurence associated with these determinations\r
+        * @param pageSize The maximum number of determinations returned (can be null for all related determinations)\r
+        * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)\r
+     * @return a List of determination instances\r
+     */\r
+       public List<DeterminationEvent> getDeterminations(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber);\r
+\r
+       /**\r
+     * Returns a count of derivation events that have involved creating new DerivedUnits from this occurence\r
+     * \r
+        * @param occurence the occurence that was a source of these derivation events\r
+     * @return a count of derivation events\r
+     */\r
+    public int countDerivationEvents(SpecimenOrObservationBase occurence);\r
+       \r
+    /**\r
+     * Returns a list of derivation events that have involved creating new DerivedUnits from this occurence\r
+     * \r
+        * @param occurence the occurence that was a source of these derivation events\r
+        * @param pageSize The maximum number of derivation events returned (can be null for all related derivation events)\r
+        * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)\r
+     * @return a List of derivation events\r
+     */\r
+       public List<DerivationEvent> getDerivationEvents(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber);\r
 }\r