add the new created namedArea for gathering event to a vocabulary in specimen import
authorKatja Luther <k.luther@bgbm.org>
Fri, 15 Sep 2017 12:24:24 +0000 (14:24 +0200)
committerKatja Luther <k.luther@bgbm.org>
Fri, 15 Sep 2017 12:24:24 +0000 (14:24 +0200)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/UnitsGatheringArea.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/Abcd206Import.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenSythesysExcelImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx2013/TaxonXExtractor.java

index d92691d2bf46dedce72df640afe9b18a89189890..24eaeaefcfe44b3a0585ffd90aeae62760e91021 100644 (file)
@@ -54,6 +54,10 @@ public class UnitsGatheringArea {
     private final ArrayList<DefinedTermBase> areas = new ArrayList<DefinedTermBase>();
     private boolean useTDWGarea = false;
 
+    TermVocabulary continentVocabulary = null;
+    TermVocabulary countryVocabulary = null;
+    TermVocabulary specimenImportVocabulary = null;
+
 
     private DefinedTermBase<?> wbc;
 
@@ -63,7 +67,7 @@ public class UnitsGatheringArea {
     }
 
     public void setParams(String isoCountry, String country, ImportConfiguratorBase<?, ?> config, ITermService termService,
-            IOccurrenceService occurrenceService){
+            IOccurrenceService occurrenceService, IVocabularyService vocService){
 
         this.setCountry(isoCountry, country, config, termService, occurrenceService);
     }
@@ -100,9 +104,7 @@ public class UnitsGatheringArea {
 
 
         HashSet<UUID> areaSet = new HashSet<UUID>();
-        TermVocabulary continentVocabulary = null;
-        TermVocabulary countryVocabulary = null;
-        TermVocabulary specimenImportVocabulary = null;
+
         HashMap<String, UUID> matchingTermsToUuid = new HashMap<String, UUID>();
         for (java.util.Map.Entry<String, String> entry : namedAreaList.entrySet()){
             String namedAreaStr = entry.getKey();
@@ -146,37 +148,7 @@ public class UnitsGatheringArea {
             }
             if (areaUUID == null){
                 if (namedAreaStr != null){
-
-                    NamedArea ar = NamedArea.NewInstance(namedAreaStr, namedAreaStr, namedAreaStr);
-                    ar.setTitleCache(namedAreaStr, true);
-                    if (namedAreaClass != null){
-                        if (namedAreaClass.equals("continent")){
-                            if (continentVocabulary == null){
-                                continentVocabulary = vocabularyService.load(NamedArea.uuidContinentVocabulary);
-                            }
-                            continentVocabulary.addTerm(ar);
-                        }else if(namedAreaClass.equals("country") ){
-                            if (countryVocabulary == null){
-                               countryVocabulary = vocabularyService.load(NamedArea.uuidContinentVocabulary);
-                            }
-                            countryVocabulary.addTerm(ar);
-                        } else{
-                            if (specimenImportVocabulary == null){
-                                specimenImportVocabulary = vocabularyService.load(CdmImportBase.uuidUserDefinedNamedAreaVocabulary);
-                                if (specimenImportVocabulary == null){
-                                    specimenImportVocabulary = OrderedTermVocabulary.NewInstance(TermType.NamedArea, "User defined vocabulary for named areas", "User Defined Named Areas", null, null);
-                                    specimenImportVocabulary.setUuid(CdmImportBase.uuidUserDefinedNamedAreaVocabulary);
-                                    specimenImportVocabulary = vocabularyService.save(specimenImportVocabulary);
-                                }
-                                specimenImportVocabulary.addTerm(ar);
-                            }
-
-                        }
-                    }
-
-                    termService.saveOrUpdate(ar);
-                    this.areas.add(ar);
-                    addNamedAreaDecision(namedAreaStr,ar.getUuid(), config);
+                    createNamedArea(config, termService, vocabularyService, namedAreaStr, namedAreaClass);
                 }
             } else {
                 areaSet.add(areaUUID);
@@ -202,6 +174,47 @@ public class UnitsGatheringArea {
         }
     }
 
+    /**
+     * @param config
+     * @param termService
+     * @param vocabularyService
+     * @param namedAreaStr
+     * @param namedAreaClass
+     */
+    private void createNamedArea(ImportConfiguratorBase<?, ?> config, ITermService termService,
+            IVocabularyService vocabularyService, String namedAreaStr, String namedAreaClass) {
+        NamedArea ar = NamedArea.NewInstance(namedAreaStr, namedAreaStr, namedAreaStr);
+        ar.setTitleCache(namedAreaStr, true);
+        if (namedAreaClass != null){
+            if (namedAreaClass.equals("continent")){
+                if (continentVocabulary == null){
+                    continentVocabulary = vocabularyService.load(NamedArea.uuidContinentVocabulary);
+                }
+                continentVocabulary.addTerm(ar);
+            }else if(namedAreaClass.equals("country") ){
+                if (countryVocabulary == null){
+                   countryVocabulary = vocabularyService.load(NamedArea.uuidContinentVocabulary);
+                }
+                countryVocabulary.addTerm(ar);
+            } else{
+                if (specimenImportVocabulary == null){
+                    specimenImportVocabulary = vocabularyService.load(CdmImportBase.uuidUserDefinedNamedAreaVocabulary);
+                    if (specimenImportVocabulary == null){
+                        specimenImportVocabulary = OrderedTermVocabulary.NewInstance(TermType.NamedArea, "User defined vocabulary for named areas", "User Defined Named Areas", null, null);
+                        specimenImportVocabulary.setUuid(CdmImportBase.uuidUserDefinedNamedAreaVocabulary);
+                        specimenImportVocabulary = vocabularyService.save(specimenImportVocabulary);
+                    }
+                    specimenImportVocabulary.addTerm(ar);
+                }
+
+            }
+        }
+
+        termService.saveOrUpdate(ar);
+        this.areas.add(ar);
+        addNamedAreaDecision(namedAreaStr,ar.getUuid(), config);
+    }
+
     private UUID askForArea(String namedAreaStr, HashMap<String, UUID> matchingTerms, String areaType){
 //        matchingTerms.put("Nothing matches, create a new area",null);
 
@@ -292,6 +305,7 @@ public class UnitsGatheringArea {
 
                 }
                 if (areaUUID == null){
+                    createNamedArea(config, termService, null, fullName, "country");
                     NamedArea ar = NamedArea.NewInstance(fullName, fullName, null);
                     //FIXME add vocabulary
                     logger.warn("Vocabulary not yet set for new country");
index 0b0caeb7c746f1ea02184bf2eb0c074436628d7a..9ca5a4d23f779fbfb9c5949ffa8054ac3c0d755d 100644 (file)
@@ -438,7 +438,7 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
                 // count
                 UnitsGatheringArea unitsGatheringArea = new UnitsGatheringArea();
                 //  unitsGatheringArea.setConfig(state.getConfig(),getOccurrenceService(), getTermService());
-                unitsGatheringArea.setParams(state.getDataHolder().isocountry, state.getDataHolder().country, (state.getConfig()), cdmAppController.getTermService(), cdmAppController.getOccurrenceService());
+                unitsGatheringArea.setParams(state.getDataHolder().isocountry, state.getDataHolder().country, (state.getConfig()), cdmAppController.getTermService(), cdmAppController.getOccurrenceService(), cdmAppController.getVocabularyService());
 
                 DefinedTermBase<?> areaCountry =  unitsGatheringArea.getCountry();
 
index b2e95a8e5b7dd38f588d0f4e93a701891abb4b90..813677173b2d916aa84dc8eb6100ab407855652e 100644 (file)
@@ -651,7 +651,7 @@ public class SpecimenSythesysExcelImport  extends CdmImportBase<SpecimenSynthesy
             UnitsGatheringArea unitsGatheringArea = new UnitsGatheringArea();
             unitsGatheringArea.useTDWGareas(this.useTDWGarea);
             //            unitsGatheringArea.setConfig(config, getOccurrenceService(),getTermService());
-            unitsGatheringArea.setParams(isocountry, country, config, getTermService(), getOccurrenceService());
+            unitsGatheringArea.setParams(isocountry, country, config, getTermService(), getOccurrenceService(), getVocabularyService());
             DefinedTermBase areaCountry =unitsGatheringArea.getCountry();
 
 
index da384d6e95fc5dc501496a8ba108d8fe642d1cc5..5e240306e807cbf6e7e968e3dc5e7fbe93670423 100644 (file)
@@ -353,7 +353,7 @@ public class TaxonXExtractor {
 
         // country
         unitsGatheringArea = new UnitsGatheringArea();
-        unitsGatheringArea.setParams(null, country, state2.getConfig(), importer.getTermService(), importer.getOccurrenceService());
+        unitsGatheringArea.setParams(null, country, state2.getConfig(), importer.getTermService(), importer.getOccurrenceService(), importer.getVocabularyService());
         //TODO other areas
         if (StringUtils.isNotBlank(stateprov)){
                Map<String, String> namedAreas = new HashMap<String, String>();