Add test for importing two dna units with associated units
authorPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 2 Jul 2015 07:49:23 +0000 (09:49 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 2 Jul 2015 07:49:23 +0000 (09:49 +0200)
cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/AbcdGgbnImportTest.java
cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/specimen/abcd206/in/Campanula_2taxa.xml [new file with mode: 0644]

index e051f7337474085a1e19c8a6ab5b001668f1a26e..f0165657b0f5ff8c921d7015ad83c50298d307cf 100644 (file)
@@ -32,6 +32,8 @@ import org.unitils.spring.annotation.SpringBeanByType;
 
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.IReferenceService;
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.config.FindOccurrencesConfigurator;
 import eu.etaxonomy.cdm.io.common.CdmApplicationAwareDefaultImport;
@@ -53,6 +55,10 @@ import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.persistence.query.MatchMode;
 import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
 import eu.etaxonomy.cdm.test.unitils.CleanSweepInsertLoadStrategy;
 
@@ -74,6 +80,49 @@ public class AbcdGgbnImportTest extends CdmTransactionalIntegrationTest {
        @SpringBeanByType
        private ITermService termService;
 
+       @SpringBeanByType
+       private ITaxonService taxonService;
+
+       @SpringBeanByType
+       private ITaxonNodeService taxonNodeService;
+
+       /**
+        * Tests import import of two DNA unit belonging to two different taxa
+        * @throws ParseException
+        */
+       @Test
+       @DataSet( value="../../../BlankDataSet.xml", loadStrategy=CleanSweepInsertLoadStrategy.class)
+       public void testImportTwoDnaUnitsWithTwoTaxa() throws ParseException {
+           String inputFile = "/eu/etaxonomy/cdm/io/specimen/abcd206/in/Campanula_2taxa.xml";
+        URL url = this.getClass().getResource(inputFile);
+        assertNotNull("URL for the test file '" + inputFile + "' does not exist", url);
+
+        Abcd206ImportConfigurator importConfigurator = null;
+        try {
+            importConfigurator = Abcd206ImportConfigurator.NewInstance(url.toURI(), null,false);
+        } catch (URISyntaxException e) {
+            e.printStackTrace();
+            Assert.fail();
+        }
+        assertNotNull("Configurator could not be created", importConfigurator);
+
+        boolean result = defaultImport.invoke(importConfigurator);
+        assertTrue("Return value for import.invoke should be true", result);
+        assertEquals("Number of derived units is incorrect", 4, occurrenceService.count(DerivedUnit.class));
+        assertEquals("Number of dna samples is incorrect", 2, occurrenceService.count(DnaSample.class));
+        assertEquals("Number of field units is incorrect", 2, occurrenceService.count(FieldUnit.class));
+        /*
+         * Default classification
+         *  - Campanula
+         *   - Campanula glomerata
+         *   - Campanula bononiensis
+         */
+        assertEquals("Number of taxon nodes is incorrect", 4, taxonNodeService.count(TaxonNode.class));
+        assertEquals("Number of taxa is incorrect", 3, taxonService.count(TaxonBase.class));
+        assertEquals(1, taxonService.findByTitle(Taxon.class, "Campanula bononiensis", MatchMode.ANYWHERE, null, null, null, null, null).getRecords().size());
+        assertEquals(1, taxonService.findByTitle(Taxon.class, "Campanula glomerata", MatchMode.ANYWHERE, null, null, null, null, null).getRecords().size());
+
+       }
        /**
         * Tests import import of DNA unit and all its parameters
         * and sub derivatives (sequence, amplification, etc.)
diff --git a/cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/specimen/abcd206/in/Campanula_2taxa.xml b/cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/specimen/abcd206/in/Campanula_2taxa.xml
new file mode 100644 (file)
index 0000000..8e7ecaf
--- /dev/null
@@ -0,0 +1,219 @@
+<?xml version='1.0' encoding='UTF-8'?>
+    <abcd21:DataSets>
+      <abcd21:DataSet>
+        <abcd21:Units>
+          <abcd21:Unit>
+            <abcd21:SourceInstitutionID>BGBM</abcd21:SourceInstitutionID>
+            <abcd21:SourceID>DNA Bank</abcd21:SourceID>
+            <abcd21:UnitID>DB 1522</abcd21:UnitID>
+            <abcd21:Identifications>
+              <abcd21:Identification>
+                <abcd21:Result>
+                  <abcd21:TaxonIdentified>
+                    <abcd21:HigherTaxa>
+                      <abcd21:HigherTaxon>
+                        <abcd21:HigherTaxonName>CAMPANULACEAE</abcd21:HigherTaxonName>
+                        <abcd21:HigherTaxonRank>familia</abcd21:HigherTaxonRank>
+                      </abcd21:HigherTaxon>
+                    </abcd21:HigherTaxa>
+                    <abcd21:ScientificName>
+                      <abcd21:FullScientificNameString>Campanula bononiensis L.</abcd21:FullScientificNameString>
+                      <abcd21:NameAtomised>
+                        <abcd21:Botanical>
+                          <abcd21:GenusOrMonomial>Campanula</abcd21:GenusOrMonomial>
+                          <abcd21:FirstEpithet>bononiensis</abcd21:FirstEpithet>
+                        </abcd21:Botanical>
+                      </abcd21:NameAtomised>
+                    </abcd21:ScientificName>
+                  </abcd21:TaxonIdentified>
+                </abcd21:Result>
+                <abcd21:PreferredFlag>1</abcd21:PreferredFlag>
+              </abcd21:Identification>
+            </abcd21:Identifications>
+            <abcd21:RecordBasis>MaterialSample</abcd21:RecordBasis>
+            <abcd21:KindOfUnit>DNA</abcd21:KindOfUnit>
+            <abcd21:SpecimenUnit>
+              <abcd21:Preparations>
+                <abcd21:preparation>
+                  <abcd21:preparationType>gDNA</abcd21:preparationType>
+                  <abcd21:preparationMaterials>DNeasy Plant Mini Spin Kit Qiagen</abcd21:preparationMaterials>
+                  <abcd21:preparationAgent>
+                    <abcd21:Person>
+                      <abcd21:FullName>Schories, Astrid</abcd21:FullName>
+                    </abcd21:Person>
+                  </abcd21:preparationAgent>
+                  <abcd21:preparationDate>2007-12-11T00:00:00</abcd21:preparationDate>
+                </abcd21:preparation>
+              </abcd21:Preparations>
+              <abcd21:Preservations>
+                <abcd21:preservation>
+                  <abcd21:preservationType>TE buffer</abcd21:preservationType>
+                  <abcd21:preservationTemperature>-80</abcd21:preservationTemperature>
+                </abcd21:preservation>
+              </abcd21:Preservations>
+            </abcd21:SpecimenUnit>
+            <abcd21:Associations>
+              <abcd21:UnitAssociation>
+                <abcd21:SourceInstitutionCode>BGBM</abcd21:SourceInstitutionCode>
+                <abcd21:SourceName>Herbarium Berolinense</abcd21:SourceName>
+                <abcd21:UnitID>B GT 0000966</abcd21:UnitID>
+                <abcd21:AssociationType>DNA and voucher from same in situ individual</abcd21:AssociationType>
+                <abcd21:DatasetAccessPoint>http://ww3.bgbm.org/biocase/pywrapper.cgi?dsa=Herbar_BiNHum</abcd21:DatasetAccessPoint>
+              </abcd21:UnitAssociation>
+            </abcd21:Associations>
+            <abcd21:Gathering>
+              <abcd21:DateTime>
+                <abcd21:DateText>23.08.2007</abcd21:DateText>
+              </abcd21:DateTime>
+              <abcd21:Agents>
+                <abcd21:GatheringAgent>
+                  <abcd21:Person>
+                    <abcd21:FullName>M. Ristow</abcd21:FullName>
+                  </abcd21:Person>
+                </abcd21:GatheringAgent>
+              </abcd21:Agents>
+              <abcd21:LocalityText>Brandenburg. Oderhänge ca 2,2 km NW Mallnow, Hang SW P 47,9.</abcd21:LocalityText>
+              <abcd21:Country>
+                <abcd21:Name>Germany</abcd21:Name>
+                <abcd21:ISO3166Code>DE</abcd21:ISO3166Code>
+              </abcd21:Country>
+              <abcd21:NamedAreas>
+                <abcd21:NamedArea>
+                  <abcd21:AreaName language="en">Europe</abcd21:AreaName>
+                </abcd21:NamedArea>
+              </abcd21:NamedAreas>
+              <abcd21:SiteCoordinateSets>
+                <abcd21:SiteCoordinates>
+                  <abcd21:CoordinatesLatLong>
+                    <abcd21:LongitudeDecimal>14.47166634</abcd21:LongitudeDecimal>
+                    <abcd21:LatitudeDecimal>52.46611023</abcd21:LatitudeDecimal>
+                  </abcd21:CoordinatesLatLong>
+                </abcd21:SiteCoordinates>
+              </abcd21:SiteCoordinateSets>
+              <abcd21:Altitude>
+                <abcd21:MeasurementOrFactAtomised>
+                  <abcd21:LowerValue>40m</abcd21:LowerValue>
+                </abcd21:MeasurementOrFactAtomised>
+              </abcd21:Altitude>
+            </abcd21:Gathering>
+            <abcd21:CollectorsFieldNumber>651/07</abcd21:CollectorsFieldNumber>
+            <abcd21:UnitExtensions>
+              <abcd21:UnitExtension>
+                <ggbn:GGBN>
+                  <ggbn:ratioOfAbsorbance260_280>1,63</ggbn:ratioOfAbsorbance260_280>
+                  <ggbn:ratioOfAbsorbance260_230>0,87</ggbn:ratioOfAbsorbance260_230>
+                  <ggbn:concentration Unit="ng/µl">10,66</ggbn:concentration>
+                  <ggbn:qualityCheckDate>2008-04-10T00:00:00</ggbn:qualityCheckDate>
+                </ggbn:GGBN>
+              </abcd21:UnitExtension>
+            </abcd21:UnitExtensions>
+          </abcd21:Unit>
+          <abcd21:Unit>
+            <abcd21:SourceInstitutionID>BGBM</abcd21:SourceInstitutionID>
+            <abcd21:SourceID>DNA Bank</abcd21:SourceID>
+            <abcd21:UnitID>DB 1482</abcd21:UnitID>
+            <abcd21:Identifications>
+              <abcd21:Identification>
+                <abcd21:Result>
+                  <abcd21:TaxonIdentified>
+                    <abcd21:HigherTaxa>
+                      <abcd21:HigherTaxon>
+                        <abcd21:HigherTaxonName>CAMPANULACEAE</abcd21:HigherTaxonName>
+                        <abcd21:HigherTaxonRank>familia</abcd21:HigherTaxonRank>
+                      </abcd21:HigherTaxon>
+                    </abcd21:HigherTaxa>
+                    <abcd21:ScientificName>
+                      <abcd21:FullScientificNameString>Campanula glomerata L.</abcd21:FullScientificNameString>
+                      <abcd21:NameAtomised>
+                        <abcd21:Botanical>
+                          <abcd21:GenusOrMonomial>Campanula</abcd21:GenusOrMonomial>
+                          <abcd21:FirstEpithet>glomerata</abcd21:FirstEpithet>
+                        </abcd21:Botanical>
+                      </abcd21:NameAtomised>
+                    </abcd21:ScientificName>
+                  </abcd21:TaxonIdentified>
+                </abcd21:Result>
+                <abcd21:PreferredFlag>1</abcd21:PreferredFlag>
+              </abcd21:Identification>
+            </abcd21:Identifications>
+            <abcd21:RecordBasis>MaterialSample</abcd21:RecordBasis>
+            <abcd21:KindOfUnit>DNA</abcd21:KindOfUnit>
+            <abcd21:SpecimenUnit>
+              <abcd21:Preparations>
+                <abcd21:preparation>
+                  <abcd21:preparationType>gDNA</abcd21:preparationType>
+                  <abcd21:preparationMaterials>DNeasy Plant Mini Spin Kit Qiagen</abcd21:preparationMaterials>
+                  <abcd21:preparationAgent>
+                    <abcd21:Person>
+                      <abcd21:FullName>Schories, Astrid</abcd21:FullName>
+                    </abcd21:Person>
+                  </abcd21:preparationAgent>
+                  <abcd21:preparationDate>2007-12-06T00:00:00</abcd21:preparationDate>
+                </abcd21:preparation>
+              </abcd21:Preparations>
+              <abcd21:Preservations>
+                <abcd21:preservation>
+                  <abcd21:preservationType>TE buffer</abcd21:preservationType>
+                  <abcd21:preservationTemperature>-80</abcd21:preservationTemperature>
+                </abcd21:preservation>
+              </abcd21:Preservations>
+            </abcd21:SpecimenUnit>
+            <abcd21:Associations>
+              <abcd21:UnitAssociation>
+                <abcd21:SourceInstitutionCode>BGBM</abcd21:SourceInstitutionCode>
+                <abcd21:SourceName>Herbarium Berolinense</abcd21:SourceName>
+                <abcd21:UnitID>B GT 0001042</abcd21:UnitID>
+                <abcd21:AssociationType>DNA and voucher from same in situ individual</abcd21:AssociationType>
+                <abcd21:DatasetAccessPoint>http://ww3.bgbm.org/biocase/pywrapper.cgi?dsa=Herbar_BiNHum</abcd21:DatasetAccessPoint>
+              </abcd21:UnitAssociation>
+            </abcd21:Associations>
+            <abcd21:Gathering>
+              <abcd21:DateTime>
+                <abcd21:DateText>30.08.2007</abcd21:DateText>
+              </abcd21:DateTime>
+              <abcd21:Agents>
+                <abcd21:GatheringAgent>
+                  <abcd21:Person>
+                    <abcd21:FullName>M. Ristow</abcd21:FullName>
+                  </abcd21:Person>
+                </abcd21:GatheringAgent>
+              </abcd21:Agents>
+              <abcd21:LocalityText>Brandenburg. Oderhänge E Libbenichen, Grenzberg.</abcd21:LocalityText>
+              <abcd21:Country>
+                <abcd21:Name>Germany</abcd21:Name>
+                <abcd21:ISO3166Code>DE</abcd21:ISO3166Code>
+              </abcd21:Country>
+              <abcd21:NamedAreas>
+                <abcd21:NamedArea>
+                  <abcd21:AreaName language="en">Europe</abcd21:AreaName>
+                </abcd21:NamedArea>
+              </abcd21:NamedAreas>
+              <abcd21:SiteCoordinateSets>
+                <abcd21:SiteCoordinates>
+                  <abcd21:CoordinatesLatLong>
+                    <abcd21:LongitudeDecimal>14.4574995</abcd21:LongitudeDecimal>
+                    <abcd21:LatitudeDecimal>52.47861099</abcd21:LatitudeDecimal>
+                  </abcd21:CoordinatesLatLong>
+                </abcd21:SiteCoordinates>
+              </abcd21:SiteCoordinateSets>
+              <abcd21:Altitude>
+                <abcd21:MeasurementOrFactAtomised>
+                  <abcd21:LowerValue>30m</abcd21:LowerValue>
+                </abcd21:MeasurementOrFactAtomised>
+              </abcd21:Altitude>
+            </abcd21:Gathering>
+            <abcd21:CollectorsFieldNumber>675/07</abcd21:CollectorsFieldNumber>
+            <abcd21:UnitExtensions>
+              <abcd21:UnitExtension>
+                <ggbn:GGBN>
+                  <ggbn:ratioOfAbsorbance260_280>1,63</ggbn:ratioOfAbsorbance260_280>
+                  <ggbn:ratioOfAbsorbance260_230>2,88</ggbn:ratioOfAbsorbance260_230>
+                  <ggbn:concentration Unit="ng/µl">5,01</ggbn:concentration>
+                  <ggbn:qualityCheckDate>2008-04-10T00:00:00</ggbn:qualityCheckDate>
+                </ggbn:GGBN>
+              </abcd21:UnitExtension>
+            </abcd21:UnitExtensions>
+          </abcd21:Unit>
+        </abcd21:Units>
+      </abcd21:DataSet>
+    </abcd21:DataSets>
\ No newline at end of file