ref #5448 Import additional information as extension instead of
authorPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 20 Oct 2016 13:25:19 +0000 (15:25 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 30 Nov 2016 09:08:33 +0000 (10:08 +0100)
annotations

app-import/src/main/java/eu/etaxonomy/cdm/io/redlist/gefaesspflanzen/RedListGefaesspflanzenImportNames.java

index 2f6ea0939d35fda0a5b1ff8b3a8709ab42e78040..15b9f74632b26d36a940fb60d7f63e664c4d37df 100644 (file)
@@ -30,10 +30,10 @@ import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;
 import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
-import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
 import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.AnnotationType;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.ExtensionType;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
 import eu.etaxonomy.cdm.model.description.CommonTaxonName;
@@ -73,6 +73,18 @@ public class RedListGefaesspflanzenImportNames extends DbImportBase<RedListGefae
 
     private static final boolean STRICT_TITLE_CHECK = false;
 
+    private ExtensionType extensionTypeFlor;
+
+    private ExtensionType extensionTypeAtlasIdx;
+
+    private ExtensionType extensionTypeKart;
+
+    private ExtensionType extensionTypeRl2015;
+
+    private ExtensionType extensionTypeEhrd;
+
+    private ExtensionType extensionTypeWissk;
+
     public RedListGefaesspflanzenImportNames() {
         super(tableName, pluralString);
     }
@@ -95,10 +107,26 @@ public class RedListGefaesspflanzenImportNames extends DbImportBase<RedListGefae
 
     @Override
     protected void doInvoke(RedListGefaesspflanzenImportState state) {
+        makeExtensionTypes();
         super.doInvoke(state);
     }
 
 
+    private void makeExtensionTypes() {
+        extensionTypeFlor = ExtensionType.NewInstance(RedListUtil.FLOR, RedListUtil.FLOR, "");
+        extensionTypeAtlasIdx = ExtensionType.NewInstance(RedListUtil.ATLAS_IDX, RedListUtil.ATLAS_IDX, "");
+        extensionTypeKart = ExtensionType.NewInstance(RedListUtil.KART, RedListUtil.KART, "");
+        extensionTypeRl2015 = ExtensionType.NewInstance(RedListUtil.RL2015, RedListUtil.RL2015, "");
+        extensionTypeEhrd = ExtensionType.NewInstance(RedListUtil.EHRD, RedListUtil.EHRD, "");
+        extensionTypeWissk = ExtensionType.NewInstance(RedListUtil.WISSK, RedListUtil.WISSK, "");
+        getTermService().saveOrUpdate(extensionTypeFlor);
+        getTermService().saveOrUpdate(extensionTypeAtlasIdx);
+        getTermService().saveOrUpdate(extensionTypeKart);
+        getTermService().saveOrUpdate(extensionTypeRl2015);
+        getTermService().saveOrUpdate(extensionTypeEhrd);
+        getTermService().saveOrUpdate(extensionTypeWissk);
+    }
+
     @Override
     public boolean doPartition(ResultSetPartitioner partitioner, RedListGefaesspflanzenImportState state) {
         ResultSet rs = partitioner.getResultSet();
@@ -157,7 +185,7 @@ public class RedListGefaesspflanzenImportNames extends DbImportBase<RedListGefae
         cloneTaxon(taxonBase, relationS, RedListUtil.CLASSIFICATION_NAMESPACE_S, taxaToSave, id, state);
         //checklist
         TaxonBase<?> checklistTaxon = null;
-        if(CdmUtils.isNotBlank(clTaxonString) && !clTaxonString.trim().equals("-")){
+        if(clTaxonString.trim().equals("b")){
             checklistTaxon = (TaxonBase<?>) taxonBase.clone();
             if(checklistTaxon.isInstanceOf(Taxon.class)){
                 TaxonRelationship relation = HibernateProxyHelper.deproxy(checklistTaxon, Taxon.class).addTaxonRelation(HibernateProxyHelper.deproxy(taxonBase, Taxon.class), TaxonRelationshipType.CONGRUENT_TO(), null, null);
@@ -167,6 +195,9 @@ public class RedListGefaesspflanzenImportNames extends DbImportBase<RedListGefae
             ImportHelper.setOriginalSource(checklistTaxon, state.getTransactionalSourceReference(), id, RedListUtil.TAXON_CHECKLISTE_NAMESPACE);
             taxaToSave.add(checklistTaxon);
         }
+        else if(!CdmUtils.isBlank(clTaxonString)){
+            RedListUtil.logMessage(id, "Unknown value "+clTaxonString+" for "+RedListUtil.CL_TAXON, logger);
+        }
 
         //NOTE: the source has to be added after cloning or otherwise the clone would also get the source
         ImportHelper.setOriginalSource(taxonBase, state.getTransactionalSourceReference(), id, RedListUtil.TAXON_GESAMTLISTE_NAMESPACE);
@@ -233,24 +264,18 @@ public class RedListGefaesspflanzenImportNames extends DbImportBase<RedListGefae
         }
 
         //add annotations
-        addAnnotation(RedListUtil.FLOR+": "+florString, taxonBase);
-        addAnnotation(RedListUtil.ATLAS_IDX+": "+atlasIdxString, taxonBase);
-        addAnnotation(RedListUtil.KART+": "+kartString, taxonBase);
-        addAnnotation(RedListUtil.RL2015+": "+rl2015String, taxonBase);
-        addAnnotation(RedListUtil.EHRD+": "+ehrdString, taxonBase);
-        addAnnotation(RedListUtil.WISSK+": "+wisskString, taxonBase);
+        taxonBase.addExtension(florString, extensionTypeFlor);
+        taxonBase.addExtension(atlasIdxString, extensionTypeAtlasIdx);
+        taxonBase.addExtension(kartString, extensionTypeKart);
+        taxonBase.addExtension(rl2015String, extensionTypeRl2015);
+        taxonBase.addExtension(ehrdString, extensionTypeEhrd);
+        taxonBase.addExtension(wisskString, extensionTypeWissk);
 
         //check taxon name consistency
         checkTaxonConsistency(id, taxNameString, hybString, epi1String, epi2String, epi3String, taxonBase, state);
         return taxonBase;
     }
 
-    private void addAnnotation(String string, AnnotatableEntity entity) {
-        if(CdmUtils.isNotBlank(string)){
-            entity.addAnnotation(Annotation.NewInstance(string, AnnotationType.TECHNICAL(), Language.GERMAN()));
-        }
-    }
-
     private void importAuthors(RedListGefaesspflanzenImportState state, ResultSet rs, NonViralName<?> name) throws SQLException {
 
         long id = rs.getLong(RedListUtil.NAMNR);