Implemented Occurrence Service. Marshalling / unmarshalling SpecimenOrObservationBase.
authora.babadshanjan <a.babadshanjan@localhost>
Mon, 1 Sep 2008 13:02:37 +0000 (13:02 +0000)
committera.babadshanjan <a.babadshanjan@localhost>
Mon, 1 Sep 2008 13:02:37 +0000 (13:02 +0000)
.gitattributes
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationController.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationDefaultConfiguration.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/ICdmApplicationConfiguration.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IOccurrenceService.java [new file with mode: 0644]
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/OccurrenceServiceImpl.java [new file with mode: 0644]
cdmlib-services/src/test/java/eu/etaxonomy/cdm/test/function/TestJaxb.java

index 59e38a07d8d9ebe4e69d8ec8c0a2e4edcc419c95..292767b540d3c2e193d8baaf5843be328ba91591 100644 (file)
@@ -563,12 +563,14 @@ cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IDatabaseService.java
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IDescriptionService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IIdentifiableEntityService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/INameService.java -text
+cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IOccurrenceService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IReferenceService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITermService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IdentifiableServiceBase.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NameServiceImpl.java -text
+cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/OccurrenceServiceImpl.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ReferenceServiceImpl.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ServiceBase.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java -text
index 65ece87fa916219cc0329f4aa022323bef9cc851..8eb50babd59944ed4556214464fb15139ccc5de5 100644 (file)
@@ -30,6 +30,7 @@ import eu.etaxonomy.cdm.api.service.ICommonService;
 import eu.etaxonomy.cdm.api.service.IDatabaseService;\r
 import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
 import eu.etaxonomy.cdm.api.service.INameService;\r
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
 import eu.etaxonomy.cdm.api.service.IReferenceService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
@@ -271,6 +272,10 @@ public class CdmApplicationController {
                return configuration.getDescriptionService();\r
        }\r
        \r
+       public final IOccurrenceService getOccurrenceService(){\r
+               return configuration.getOccurrenceService();\r
+       }\r
+\r
        public final ICommonService getCommonService(){\r
                return configuration.getCommonService();\r
        }\r
index 376c1d0d97400445b375e2a1b423aee3358706bf..1f74d9033d94ce75b39277853f86dc08706c553d 100644 (file)
@@ -20,6 +20,7 @@ import eu.etaxonomy.cdm.api.service.ICommonService;
 import eu.etaxonomy.cdm.api.service.IDatabaseService;\r
 import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
 import eu.etaxonomy.cdm.api.service.INameService;\r
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
 import eu.etaxonomy.cdm.api.service.IReferenceService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
@@ -50,6 +51,8 @@ public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfig
        @Autowired\r
        private IDescriptionService descriptionService;\r
        @Autowired\r
+       private IOccurrenceService occurrenceService;\r
+       @Autowired\r
        private ICommonService commonService;\r
 \r
        \r
@@ -101,6 +104,10 @@ public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfig
                return this.descriptionService;\r
        }\r
 \r
+       public IOccurrenceService getOccurrenceService(){\r
+               return this.occurrenceService;\r
+       }\r
+\r
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTermService()\r
         */\r
index e7007c12369c5fa4d5342d44ead3e6ca1b86362f..d1a3f51d6606bd537c450055c8973c5576da2457 100644 (file)
@@ -16,6 +16,7 @@ import eu.etaxonomy.cdm.api.service.ICommonService;
 import eu.etaxonomy.cdm.api.service.IDatabaseService;\r
 import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
 import eu.etaxonomy.cdm.api.service.INameService;\r
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
 import eu.etaxonomy.cdm.api.service.IReferenceService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
@@ -52,6 +53,11 @@ public interface ICdmApplicationConfiguration {
         */\r
        public IDescriptionService getDescriptionService();\r
        \r
+       /**\r
+        * @return\r
+        */\r
+       public IOccurrenceService getOccurrenceService();\r
+       \r
        /**\r
         * @return\r
         */\r
diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IOccurrenceService.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IOccurrenceService.java
new file mode 100644 (file)
index 0000000..08418d1
--- /dev/null
@@ -0,0 +1,37 @@
+/**\r
+* Copyright (C) 2008 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+*/\r
+\r
+package eu.etaxonomy.cdm.api.service;\r
+\r
+import java.util.Collection;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.UUID;\r
+\r
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+\r
+/**\r
+ * @author a.babadshanjan\r
+ * @created 01.09.2008\r
+ */\r
+public interface IOccurrenceService extends IIdentifiableEntityService<SpecimenOrObservationBase> {\r
+\r
+       /**\r
+        * Computes all specimen or observation bases.\r
+        * @param limit\r
+        * @param start\r
+        * @return\r
+        */\r
+       public abstract List<SpecimenOrObservationBase> getAllSpecimenOrObservationBases(int limit, int start);\r
+\r
+       /** Saves a collection of specimen or observation bases.\r
+        * @return Map with UUID as key and SpecimenOrObservationBase as value.\r
+        **/\r
+       public abstract Map<UUID, SpecimenOrObservationBase> \r
+       saveSpecimenOrObservationBaseAll(Collection<SpecimenOrObservationBase> specimenOrObservationBaseCollection);\r
+\r
+}\r
index 8e214467b457cd66472f9670cb41c72c0142f1a9..939008b61e97847c34a1a117a8201380dd1e1258 100644 (file)
@@ -35,7 +35,7 @@ public interface ITaxonService extends IIdentifiableEntityService<TaxonBase>{
        /** save a taxon and return its UUID**/
        public abstract UUID saveTaxon(TaxonBase taxon);
 
-       /** save a collection of  taxa and return its UUID**/
+       /** save a collection of taxa and return its UUID**/
        public abstract Map<UUID, TaxonBase> saveTaxonAll(Collection<TaxonBase> taxonCollection);
 
        
@@ -74,22 +74,6 @@ public interface ITaxonService extends IIdentifiableEntityService<TaxonBase>{
         */
        public abstract List<Taxon> getRootTaxa(ReferenceBase sec, CdmFetch cdmFetch, boolean onlyWithChildren);
        
-       /**
-        * Computes all taxon relationships.
-        * @param limit
-        * @param start
-        * @return
-        */
-    //public abstract List<TaxonRelationship> getAllTaxonRelationships(int limit, int start);
-
-       /**
-        * Computes all synonym relationships.
-        * @param limit
-        * @param start
-        * @return
-        */
-    //public abstract List<SynonymRelationship> getAllSynonymRelationships(int limit, int start);
-    
        /**
         * Computes all relationships.
         * @param limit
diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/OccurrenceServiceImpl.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/OccurrenceServiceImpl.java
new file mode 100644 (file)
index 0000000..cd81a48
--- /dev/null
@@ -0,0 +1,65 @@
+/**\r
+* Copyright (C) 2008 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+*/\r
+\r
+package eu.etaxonomy.cdm.api.service;\r
+\r
+import java.util.Collection;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.UUID;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.stereotype.Service;\r
+import org.springframework.transaction.annotation.Transactional;\r
+\r
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
+import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao;\r
+import eu.etaxonomy.cdm.persistence.dao.occurrence.IOccurrenceDao;\r
+\r
+/**\r
+ * @author a.babadshanjan\r
+ * @created 01.09.2008\r
+ */\r
+@Service\r
+@Transactional(readOnly = true)\r
+public class OccurrenceServiceImpl extends IdentifiableServiceBase<SpecimenOrObservationBase> implements IOccurrenceService {\r
+\r
+       static private final Logger logger = Logger.getLogger(OccurrenceServiceImpl.class);\r
+\r
+       @Autowired\r
+       protected void setDao(IOccurrenceDao dao) {\r
+               this.dao = dao;\r
+       }\r
+\r
+       public OccurrenceServiceImpl() {\r
+               logger.debug("Load OccurrenceService Bean");\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getAllspecimenOrObservationBases(int, int)\r
+        */\r
+       public List<SpecimenOrObservationBase> getAllSpecimenOrObservationBases(\r
+                       int limit, int start) {\r
+               return dao.list(limit, start);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#saveSpecimenOrObservationBaseAll(java.util.Collection)\r
+        */\r
+       public Map<UUID, SpecimenOrObservationBase> saveSpecimenOrObservationBaseAll(\r
+                       Collection<SpecimenOrObservationBase> specimenOrObservationBaseCollection) {\r
+               return saveCdmObjectAll(specimenOrObservationBaseCollection);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#generateTitleCache()\r
+        */\r
+       public void generateTitleCache() {\r
+               // TODO Auto-generated method stub\r
+               logger.warn("Not yet implemented");\r
+       }\r
+}\r
index 193eca1f9cbcc9ca0b27e0c0461ce2c77d546b68..1769d2ae08b0142a75c4a80062229a4d17bf83b0 100644 (file)
@@ -48,6 +48,7 @@ import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 import eu.etaxonomy.cdm.model.reference.Book;\r
 import eu.etaxonomy.cdm.model.reference.Database;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
@@ -159,7 +160,6 @@ public class TestJaxb {
        \r
     }\r
        \r
-    \r
     private void retrieveAllDataFlat (CdmApplicationController appCtr, DataSet dataSet, int numberOfRows) {\r
        \r
         final int MAX_ROWS = 50000;\r
@@ -172,6 +172,7 @@ public class TestJaxb {
        int taxonRelationshipRows = numberOfRows;\r
        int synonymRelationshipRows = numberOfRows;\r
        int relationshipRows = numberOfRows;\r
+       int occurrencesRows = numberOfRows;\r
        \r
        if (agentRows == 0) { agentRows = appCtr.getAgentService().count(Agent.class); }\r
        logger.info("# Agents: " + agentRows);\r
@@ -216,6 +217,10 @@ public class TestJaxb {
        dataSet.setReferencedEntities(appCtr.getNameService().getAllNomenclaturalStatus(MAX_ROWS, 0));\r
        dataSet.addReferencedEntities(appCtr.getNameService().getAllTypeDesignations(MAX_ROWS, 0));\r
        \r
+       if (occurrencesRows == 0) { occurrencesRows = appCtr.getOccurrenceService().count(SpecimenOrObservationBase.class); }\r
+       logger.info("# SpecimenOrObservationBase: " + occurrencesRows);\r
+       dataSet.setOccurrences(appCtr.getOccurrenceService().getAllSpecimenOrObservationBases(occurrencesRows, 0));\r
+\r
        // TODO: \r
        // retrieve taxa and synonyms separately\r
        // need correct count for taxa and synonyms\r
@@ -237,6 +242,7 @@ public class TestJaxb {
                List<TaxonNameBase> taxonomicNames;\r
                List<DescriptionBase> descriptions;\r
                List<ReferencedEntityBase> referencedEntities;\r
+               List<SpecimenOrObservationBase> occurrences;\r
 \r
                TransactionStatus txStatus = appCtr.startTransaction();\r
                \r
@@ -245,10 +251,10 @@ public class TestJaxb {
 \r
                /* If terms are not saved here explicitly, then only those terms that are used\r
                are saved implicitly. */\r
-//             if ((terms = dataSet.getTerms()) != null) {\r
-//                     logger.info("Saving " + terms.size() + " terms");\r
-//                 appCtr.getTermService().saveTermsAll(terms);\r
-//             }\r
+               if ((terms = dataSet.getTerms()) != null) {\r
+                       logger.info("Saving " + terms.size() + " terms");\r
+                   appCtr.getTermService().saveTermsAll(terms);\r
+               }\r
                \r
                if ((agents = dataSet.getAgents()) != null) {\r
                        logger.info("Saving " + agents.size() + " agents");\r
@@ -273,7 +279,7 @@ public class TestJaxb {
                        appCtr.getTaxonService().saveTaxonAll(taxonBases);\r
                }\r
                \r
-           // NomenclaturalStatus and TypeDesignations saved with taxon names?\r
+           // NomenclaturalStatus and TypeDesignations are saved with taxon names\r
 //             if ((referencedEntities = dataSet.getReferencedEntities()) != null) {\r
 //                     logger.info("Saving referenced entities");\r
 //                     appCtr.getNameService().save...;\r
@@ -285,6 +291,11 @@ public class TestJaxb {
 //                     appCtr.getDescriptionService().saveDescriptionAll(descriptions);\r
 //             }\r
                \r
+               if ((occurrences = dataSet.getOccurrences()) != null) {\r
+                       logger.info("Saving " + occurrences.size() + " references");\r
+                    appCtr.getOccurrenceService().saveSpecimenOrObservationBaseAll(occurrences);\r
+               }\r
+\r
                logger.info("All data saved");\r
 \r
                appCtr.commitTransaction(txStatus);\r
@@ -575,7 +586,7 @@ public class TestJaxb {
                // via services rather than traversing the tree.\r
            doSerializeFlat(serializeFromDb, marshOutOne);\r
            \r
-               //doDeserialize(deserializeToDb, marshOutOne);\r
+               doDeserialize(deserializeToDb, marshOutOne);\r
            \r
                //doSerialize(deserializeToDb, marshOutTwo);\r
                }\r