ref #6252 and ref #3934 Improve image import, fix distribution import and add area...
authorAndreas Müller <a.mueller@bgbm.org>
Fri, 9 Dec 2016 10:22:42 +0000 (11:22 +0100)
committerAndreas Müller <a.mueller@bgbm.org>
Fri, 9 Dec 2016 10:22:42 +0000 (11:22 +0100)
app-import/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelFactsImport.java

index 2bd4b8cc96d1e1bb4be17745e68766ac74757415..aac7ddcdaf6be633cd17b5c8ea5e64efef9befe1 100644 (file)
@@ -63,6 +63,8 @@ import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TextData;\r
 import eu.etaxonomy.cdm.model.location.Country;\r
 import eu.etaxonomy.cdm.model.location.NamedArea;\r
+import eu.etaxonomy.cdm.model.location.NamedAreaLevel;\r
+import eu.etaxonomy.cdm.model.location.NamedAreaType;\r
 import eu.etaxonomy.cdm.model.media.ImageFile;\r
 import eu.etaxonomy.cdm.model.media.Media;\r
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
@@ -484,6 +486,7 @@ public class BerlinModelFactsImport  extends BerlinModelImportBase {
      */\r
     private void mergeSalvadorDistribution(TaxonDescription taxonDescription,\r
             @NotNull Distribution newDistribution) {\r
+\r
         Distribution existingDistribution = null;\r
         for (DescriptionElementBase deb : taxonDescription.getElements()){\r
             if (deb.isInstanceOf(Distribution.class)){\r
@@ -523,12 +526,19 @@ public class BerlinModelFactsImport  extends BerlinModelImportBase {
             if (area == null){\r
                 logger.info("Added Salvador area: " + areaString);\r
                 TermVocabulary<NamedArea> voc = getVocabulary(TermType.NamedArea, BerlinModelTransformer.uuidSalvadorAreas,\r
-                        "Salvador areas", "Salvador areas", null, null, true, NamedArea.NewInstance());\r
+                        "Salvador departments", "Salvador departments", null, null, true, NamedArea.NewInstance());\r
+                if (voc.getRepresentation(Language.SPANISH_CASTILIAN()) == null){\r
+                    voc.addRepresentation(Representation.NewInstance("Salvador departamentos", "Salvador departamentos", "dep.", Language.SPANISH_CASTILIAN()));\r
+                    getVocabularyService().saveOrUpdate(voc);\r
+                }\r
                 NamedArea newArea = NamedArea.NewInstance(areaString, areaString, null);\r
                 newArea.getRepresentations().iterator().next().setLanguage(Language.SPANISH_CASTILIAN());\r
+                newArea.setLevel(NamedAreaLevel.DEPARTMENT());\r
+                newArea.setType(NamedAreaType.ADMINISTRATION_AREA());\r
                 voc.addTerm(newArea);\r
                 getTermService().saveOrUpdate(newArea);\r
                 salvadorAreaMap.put(areaString, newArea);\r
+                area = newArea;\r
             }\r
             PresenceAbsenceTerm state = getSalvadorDistributionState(taxon);\r
             result = Distribution.NewInstance(area, state);\r
@@ -713,17 +723,17 @@ public class BerlinModelFactsImport  extends BerlinModelImportBase {
                    int page = intFact + 249;\r
                 if (intFact >= 263){\r
                        vol = "2016";\r
-                       page = intFact + (intFact < 403 ? 95 : 96);\r
+                       page = intFact - (intFact < 403 ? 95 : 94);\r
                    }else if (intFact >= 142){\r
                        vol = "2012";\r
                        page = intFact + (intFact < 255 ? 3 : 4);\r
                    }\r
-                String title = getSalvadorImageTitle(intFact);\r
-                media.putTitle(Language.SPANISH_CASTILIAN(), title);\r
+                String description = getSalvadorImageTitle(intFact);\r
+                media.putDescription(Language.SPANISH_CASTILIAN(), description);\r
 \r
                    Reference ref = getSalvadorReference(vol);\r
                    String originalName = getSalvadorImageNameInfo(intFact);\r
-                   IdentifiableSource source = media.addSource(OriginalSourceType.PrimaryMediaSource, fact, "Fig.", ref, String.valueOf(page));\r
+                   IdentifiableSource source = media.addSource(OriginalSourceType.PrimaryMediaSource, fact, "Fig.", ref, "p. " + page);\r
                    source.setOriginalNameString(originalName);\r
                    media.setArtist(getSalvadorArtist());\r
                    media.addRights(getSalvadorCopyright(vol));\r
@@ -777,9 +787,6 @@ public class BerlinModelFactsImport  extends BerlinModelImportBase {
         }\r
     }\r
 \r
-    /**\r
-     *\r
-     */\r
     private void initSalvadorImagesFile() {\r
         if (salvadorImages == null){\r
             salvadorImages = new HashMap<>();\r
@@ -787,8 +794,13 @@ public class BerlinModelFactsImport  extends BerlinModelImportBase {
                 CSVReader reader = new CSVReader(CdmUtils.getUtf8ResourceReader("salvador" + CdmUtils.getFolderSeperator() + "SalvadorImages.csv"),';');\r
                 List<String[]> lines = reader.readAll();\r
                 for (String[] line : lines){\r
-                    if(! "ID".equals(line[0])){\r
-                        salvadorImages.put(Integer.valueOf(line[0]), line);\r
+                    String first = line[0];\r
+                    if(! "ID".equals(first)){\r
+                        try {\r
+                            salvadorImages.put(Integer.valueOf(first), line);\r
+                        } catch (NumberFormatException e) {\r
+                            logger.warn("Number not recognized: " + first);\r
+                        }\r
                     }\r
                 }\r
                 reader.close();\r
@@ -799,21 +811,36 @@ public class BerlinModelFactsImport  extends BerlinModelImportBase {
     }\r
 \r
 \r
+    private Rights rights1;\r
+    private Rights rights2;\r
+    private Rights rights3;\r
+\r
     private Rights getSalvadorCopyright(String vol) {\r
-        String text;\r
+        initRights();\r
         if ("2009".equals(vol)){\r
-            text = "(c) Jardín Botánico y Museo Botánico Berlin-Dahlem & Asociación Jardín Botánico La Laguna. Berlin, Antiguo Cuscatlán 2009.";\r
+            return rights1;\r
         }else if ("2012".equals(vol)){\r
-            text = "(c) Jardín Botánico y Museo Botánico Berlin-Dahlem & Asociación Jardín Botánico La Laguna. Berlin, Antiguo Cuscatlán 2012.";\r
+            return rights1;\r
         }else if ("2016".equals(vol)){\r
-            text = "(c) Jardín Botánico y Museo Botánico Berlin-Dahlem & Asociación Jardín Botánico La Laguna. Berlin, Antiguo Cuscatlán 2016.";\r
+            return rights3;\r
         }else{\r
             throw new RuntimeException("Volume not recognized: " + vol);\r
         }\r
-        Rights result = Rights.NewInstance(text, Language.SPANISH_CASTILIAN(), RightsType.COPYRIGHT());\r
-        return result;\r
     }\r
 \r
+    private void initRights(){\r
+        if (rights1 == null){\r
+            String text = "(c) Jardín Botánico y Museo Botánico Berlin-Dahlem & Asociación Jardín Botánico La Laguna. Berlin, Antiguo Cuscatlán 2009.";\r
+            rights1 = Rights.NewInstance(text, Language.SPANISH_CASTILIAN(), RightsType.COPYRIGHT());\r
+            text = "(c) Jardín Botánico y Museo Botánico Berlin-Dahlem & Asociación Jardín Botánico La Laguna. Berlin, Antiguo Cuscatlán 2012.";\r
+            rights2 = Rights.NewInstance(text, Language.SPANISH_CASTILIAN(), RightsType.COPYRIGHT());\r
+            text = "(c) Jardín Botánico y Museo Botánico Berlin-Dahlem & Asociación Jardín Botánico La Laguna. Berlin, Antiguo Cuscatlán 2016.";\r
+            rights3 = Rights.NewInstance(text, Language.SPANISH_CASTILIAN(), RightsType.COPYRIGHT());\r
+            getCommonService().save(rights1);\r
+            getCommonService().save(rights2);\r
+            getCommonService().save(rights3);\r
+        }\r
+    }\r
 \r
     private Integer salvadorArtistId;\r
     private AgentBase<?> getSalvadorArtist() {\r
@@ -916,7 +943,7 @@ public class BerlinModelFactsImport  extends BerlinModelImportBase {
         ImageInfo imageInfo = null;\r
         Integer size = null;\r
         try {\r
-            imageInfo = ImageInfo.NewInstance(uri, 0);\r
+            imageInfo = ImageInfo.NewInstance(uri, 30);\r
         } catch (IOException | HttpException e) {\r
             logger.error("Error when reading image meta: " + e + ", "+ uri.toString());\r
         }\r