merge trunk to cdm-3.3 branch
[cdmlib.git] / cdmlib-services / src / test / java / eu / etaxonomy / cdm / api / facade / DerivedUnitFacadeCacheStrategyTest.java
index a024d337fef09b608073854c29431bc579042f48..b7d24c741150d806844f9a12ea21b1cdeffa0c3d 100644 (file)
 // $Id$\r
 /**\r
 * Copyright (C) 2009 EDIT\r
-* European Distributed Institute of Taxonomy \r
+* European Distributed Institute of Taxonomy\r
 * http://www.e-taxonomy.eu\r
-* \r
+*\r
 * The contents of this file are subject to the Mozilla Public License Version 1.1\r
 * See LICENSE.TXT at the top of this package for the full license terms.\r
 */\r
 package eu.etaxonomy.cdm.api.facade;\r
 \r
-import junit.framework.Assert;\r
-\r
 import org.apache.log4j.Logger;\r
+import org.junit.Assert;\r
 import org.junit.Before;\r
-import org.junit.BeforeClass;\r
 import org.junit.Test;\r
 \r
-import eu.etaxonomy.cdm.model.agent.AgentBase;\r
+import eu.etaxonomy.cdm.model.agent.Person;\r
 import eu.etaxonomy.cdm.model.agent.Team;\r
-import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;\r
+import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.LanguageString;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
-import eu.etaxonomy.cdm.model.description.Sex;\r
-import eu.etaxonomy.cdm.model.description.Stage;\r
+import eu.etaxonomy.cdm.model.location.NamedArea;\r
 import eu.etaxonomy.cdm.model.location.Point;\r
 import eu.etaxonomy.cdm.model.location.ReferenceSystem;\r
+import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;\r
 import eu.etaxonomy.cdm.model.media.Media;\r
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.Collection;\r
 import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;\r
-import eu.etaxonomy.cdm.model.occurrence.FieldObservation;\r
+import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;\r
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;\r
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;\r
 import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;\r
 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;\r
-import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
+import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;\r
+import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
 \r
 /**\r
  * @author a.mueller\r
  * @date 03.06.2010\r
  *\r
  */\r
-public class DerivedUnitFacadeCacheStrategyTest {\r
+public class DerivedUnitFacadeCacheStrategyTest extends CdmIntegrationTest {\r
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(DerivedUnitFacadeCacheStrategyTest.class);\r
-       \r
-       Specimen specimen;\r
+\r
+       DerivedUnit specimen;\r
        DerivationEvent derivationEvent;\r
-       FieldObservation fieldObservation;\r
+       FieldUnit fieldUnit;\r
        GatheringEvent gatheringEvent;\r
        Integer absoluteElevation = 40;\r
        Integer absoluteElevationError = 2;\r
-       AgentBase collector = Team.NewInstance();\r
+       Team collector = Team.NewInstance();\r
        String collectingMethod = "Collection Method";\r
-       Integer distanceToGround = 22;\r
-       Integer distanceToSurface = 50;\r
+       Double distanceToGround = 22.0;\r
+       Double distanceToSurface = 50.0;\r
        ReferenceSystem referenceSystem = ReferenceSystem.WGS84();\r
        Point exactLocation = Point.NewInstance(12.3, 10.567, referenceSystem, 22);\r
        String gatheringEventDescription = "A nice gathering description";\r
-       TimePeriod gatheringPeriod = TimePeriod.parseString("05.05.2005");\r
+       TimePeriod gatheringPeriod = TimePeriodParser.parseString("03.05.2005");\r
        String ecology = "sand dunes";\r
        String plantDescription = "flowers blue";\r
-       \r
-       String fieldNumber = "15p23B";\r
+\r
+       String fieldNumber = "5678";\r
        String fieldNotes = "such a beautiful specimen";\r
+       Person primaryCollector;\r
 \r
        Integer individualCount = 1;\r
-       Stage lifeStage = Stage.NewInstance("A wonderful stage", "stage", "st");\r
-       Sex sex = Sex.NewInstance("FemaleMale", "FM", "FM");\r
+       DefinedTerm lifeStage = DefinedTerm.NewStageInstance("A wonderful stage", "stage", "st");\r
+       DefinedTerm sex = DefinedTerm.NewSexInstance("FemaleMale", "FM", "FM");\r
        LanguageString locality = LanguageString.NewInstance("Berlin-Dahlem, E side of Englerallee", Language.DEFAULT());\r
+       NamedArea country = WaterbodyOrCountry.GERMANY();\r
 \r
+       String exsiccatum = "Greuter, Pl. Dahlem. 456";\r
        String accessionNumber = "8909756";\r
        String catalogNumber = "UU879873590";\r
-       TaxonNameBase taxonName = BotanicalName.NewInstance(Rank.GENUS(), "Abies", null, null, null, null, null, null, null);\r
+       TaxonNameBase<?,?> taxonName = BotanicalName.NewInstance(Rank.GENUS(), "Abies", null, null, null, null, null, null, null);\r
        String collectorsNumber = "234589913A34";\r
        Collection collection = Collection.NewInstance();\r
-       \r
+\r
        PreservationMethod preservationMethod = PreservationMethod.NewInstance("my prservation", null, null);\r
 \r
        DerivedUnitFacade specimenFacade;\r
-       \r
-       Specimen collectionSpecimen;\r
+\r
+       DerivedUnit collectionSpecimen;\r
        GatheringEvent existingGatheringEvent;\r
        DerivationEvent firstDerivationEvent;\r
-       FieldObservation firstFieldObject;\r
+       FieldUnit firstFieldObject;\r
        Media media1 = Media.NewInstance();\r
-       \r
+\r
+\r
 //****************************** SET UP *****************************************/\r
-       \r
-       /**\r
-        * @throws java.lang.Exception\r
-        */\r
-       @BeforeClass\r
-       public static void setUpBeforeClass() throws Exception {\r
-               // FIXME maybe this will cause problems in other tests\r
-               new DefaultTermInitializer().initialize();\r
-       }\r
+\r
+//     /**\r
+//      * @throws java.lang.Exception\r
+//      */\r
+//     @BeforeClass\r
+//     public static void setUpBeforeClass() throws Exception {\r
+//             // FIXME maybe this will cause problems in other tests\r
+//             // INDEED !!!! it causes problems thus this is replaced by making this test a  CdmIntegrationTest !!!\r
+//             new DefaultTermInitializer().initialize();\r
+//     }\r
 \r
        /**\r
         * @throws java.lang.Exception\r
         */\r
        @Before\r
        public void setUp() throws Exception {\r
-               specimen = Specimen.NewInstance();\r
-               \r
-               derivationEvent = DerivationEvent.NewInstance();\r
+               specimen = DerivedUnit.NewPreservedSpecimenInstance();\r
+\r
+               derivationEvent = DerivationEvent.NewInstance(DerivationEventType.ACCESSIONING());\r
                specimen.setDerivedFrom(derivationEvent);\r
-               fieldObservation = FieldObservation.NewInstance();\r
-               fieldObservation.addDerivationEvent(derivationEvent);\r
+               fieldUnit = FieldUnit.NewInstance();\r
+               fieldUnit.addDerivationEvent(derivationEvent);\r
                gatheringEvent = GatheringEvent.NewInstance();\r
-               fieldObservation.setGatheringEvent(gatheringEvent);\r
+               fieldUnit.setGatheringEvent(gatheringEvent);\r
                gatheringEvent.setAbsoluteElevation(absoluteElevation);\r
-               gatheringEvent.setAbsoluteElevationError(absoluteElevationError);\r
+//             gatheringEvent.setAbsoluteElevationError(absoluteElevationError);\r
                gatheringEvent.setActor(collector);\r
                gatheringEvent.setCollectingMethod(collectingMethod);\r
                gatheringEvent.setDistanceToGround(distanceToGround);\r
                gatheringEvent.setDistanceToWaterSurface(distanceToSurface);\r
                gatheringEvent.setExactLocation(exactLocation);\r
                gatheringEvent.setDescription(gatheringEventDescription);\r
-               \r
+\r
                gatheringEvent.setTimeperiod(gatheringPeriod);\r
                gatheringEvent.setLocality(locality);\r
-               \r
-               fieldObservation.setFieldNumber(fieldNumber);\r
-               fieldObservation.setFieldNotes(fieldNotes);\r
-               fieldObservation.setIndividualCount(individualCount);\r
-               fieldObservation.setSex(sex);\r
-               fieldObservation.setLifeStage(lifeStage);\r
+               gatheringEvent.setCountry(country);\r
+\r
+               fieldUnit.setFieldNumber(fieldNumber);\r
+               fieldUnit.setFieldNotes(fieldNotes);\r
+               fieldUnit.setIndividualCount(individualCount);\r
+               fieldUnit.setSex(sex);\r
+               fieldUnit.setLifeStage(lifeStage);\r
+               primaryCollector = Person.NewTitledInstance("Kilian");\r
+               collector.addTeamMember(primaryCollector);\r
+               Person secondCollector = Person.NewInstance();\r
+               secondCollector.setFirstname("Andreas");\r
+               secondCollector.setLastname("Muller");\r
+               collector.addTeamMember(secondCollector);\r
+               Person thirdCollector = Person.NewTitledInstance("Kohlbecker");\r
+               collector.addTeamMember(thirdCollector);\r
+               fieldUnit.setPrimaryCollector(primaryCollector);\r
 \r
                specimen.setAccessionNumber(accessionNumber);\r
                specimen.setCatalogNumber(catalogNumber);\r
                specimen.setStoredUnder(taxonName);\r
-               specimen.setCollectorsNumber(collectorsNumber);\r
                specimen.setCollection(collection);\r
                specimen.setPreservation(preservationMethod);\r
+               specimen.setExsiccatum(exsiccatum);\r
 \r
                specimenFacade = DerivedUnitFacade.NewInstance(specimen);\r
 \r
                //existing specimen with 2 derivation events in line\r
-               collectionSpecimen = Specimen.NewInstance();\r
-               Specimen middleSpecimen = Specimen.NewInstance();\r
-               firstFieldObject = FieldObservation.NewInstance();\r
-               \r
-               DerivationEvent lastDerivationEvent = DerivationEvent.NewInstance();\r
-               DerivationEvent middleDerivationEvent = DerivationEvent.NewInstance();\r
-               firstDerivationEvent = DerivationEvent.NewInstance();\r
-               \r
+               collectionSpecimen = DerivedUnit.NewPreservedSpecimenInstance();\r
+               DerivedUnit middleSpecimen = DerivedUnit.NewPreservedSpecimenInstance();\r
+               firstFieldObject = FieldUnit.NewInstance();\r
+\r
+               //TODO maybe we should define concrete event types here\r
+               DerivationEvent lastDerivationEvent = DerivationEvent.NewInstance(null);\r
+               DerivationEvent middleDerivationEvent = DerivationEvent.NewInstance(null);\r
+               firstDerivationEvent = DerivationEvent.NewInstance(null);\r
+\r
                collectionSpecimen.setDerivedFrom(lastDerivationEvent);\r
-               \r
+\r
                lastDerivationEvent.addOriginal(middleSpecimen);\r
                middleSpecimen.setDerivedFrom(firstDerivationEvent);\r
                firstDerivationEvent.addOriginal(firstFieldObject);\r
@@ -161,7 +178,7 @@ public class DerivedUnitFacadeCacheStrategyTest {
         */\r
        @Test\r
        public void testGetTitleCache() {\r
-               String correctCache = "Berlin-Dahlem, E side of Englerallee, alt. 40 m, 12°18'N, 10°34'1\"E (WGS84), sand dunes, 05.05.2005 (B 8909756); flowers blue.";\r
+               String correctCache = "Germany, Berlin-Dahlem, E side of Englerallee, alt. 40 m, 10\u00B034'1.2\"N, 12\u00B018'E (WGS84), sand dunes, 3.5.2005, Kilian 5678, A. Muller & Kohlbecker; Greuter, Pl. Dahlem. 456 (B 8909756); flowers blue.";\r
                specimenFacade.setEcology(ecology);\r
                specimenFacade.setPlantDescription(plantDescription);\r
                collection.setCode("B");\r