minor changes for common names and occurrences in Berlin Model import
authorAndreas Müller <a.mueller@bgbm.org>
Mon, 14 Oct 2013 11:17:53 +0000 (11:17 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Mon, 14 Oct 2013 11:17:53 +0000 (11:17 +0000)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/BerlinModelTransformer.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelCommonNamesImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelImportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelOccurrenceImport.java

index d8b80314af1dc98c8453c2fc9837039064a8b89e..1ce14baeb9dc5c6cda38ffd623db99872a6cc18c 100644 (file)
@@ -124,6 +124,10 @@ public class BerlinModelTransformer {
        public static final UUID uuidTdwgAreaCode = UUID.fromString("73ad0288-b71b-4a14-9c2e-7f81f1e64a36");\r
        public static final UUID uuidMclCode = UUID.fromString("aa27083a-6a96-42aa-a2f8-5541cf057067");\r
        \r
+       //Area Level\r
+       public static final UUID uuidAreaLevelTop = UUID.fromString("190d5758-4b96-4016-9412-6dc9c36ef5fd");\r
+       public static final UUID uuidAreaLevelFirst = UUID.fromString("d21503e3-875e-4abc-82ec-f812e3cfea84");\r
+       public static final UUID uuidAreaLevelSecond = UUID.fromString("97ac0bf5-b31c-487a-8ed5-a576f46c902c");\r
        \r
        \r
        //languages\r
index 5e0fb1a6f4d341e86bb8023169f4d585835b3158..22df60d4d60b2148f60cfd61551129c3b93963a1 100644 (file)
@@ -55,7 +55,6 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
  * \r
  * @author a.mueller\r
  * @created 20.03.2008\r
- * @version 1.0\r
  */\r
 @Component\r
 public class BerlinModelCommonNamesImport  extends BerlinModelImportBase {\r
@@ -167,9 +166,7 @@ public class BerlinModelCommonNamesImport  extends BerlinModelImportBase {
        }\r
 \r
 \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#doPartition(eu.etaxonomy.cdm.io.berlinModel.in.ResultSetPartitioner, eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportState)\r
-        */\r
+       @Override\r
        public boolean doPartition(ResultSetPartitioner partitioner, BerlinModelImportState state)  {\r
                boolean success = true ;\r
                BerlinModelImportConfigurator config = state.getConfig();\r
@@ -210,7 +207,7 @@ public class BerlinModelCommonNamesImport  extends BerlinModelImportBase {
                                String[] regionFkSplit = regionFks.split(",");\r
                                \r
                                //commonNameString\r
-                               if (CdmUtils.isBlank(commonNameString)){\r
+                               if (isBlank(commonNameString)){\r
                                        String message = "CommonName is empty or null. Do not import record for taxon " + taxonId;\r
                                        logger.warn(message);\r
                                        continue;\r
@@ -218,7 +215,7 @@ public class BerlinModelCommonNamesImport  extends BerlinModelImportBase {
                                \r
                                //taxon\r
                                Taxon taxon = null;\r
-                               TaxonBase taxonBase  = taxonMap.get(String.valueOf(taxonId));\r
+                               TaxonBase<?> taxonBase  = taxonMap.get(String.valueOf(taxonId));\r
                                if (taxonBase == null){\r
                                        logger.warn("Taxon (" + taxonId + ") could not be found. Common name " + commonNameString + "(" + commonNameId + ") not imported");\r
                                        continue;\r
@@ -332,21 +329,21 @@ public class BerlinModelCommonNamesImport  extends BerlinModelImportBase {
                                \r
                                //reference extensions\r
                                if (reference != null){\r
-                                       if (CdmUtils.isNotEmpty(refLanguage)){\r
+                                       if (StringUtils.isNotBlank(refLanguage)){\r
                                                ExtensionType refLanguageExtensionType = getExtensionType( state, REFERENCE_LANGUAGE_STRING_UUID, "reference language","The language of the reference","ref. lang.");\r
                                                Extension.NewInstance(reference, refLanguage, refLanguageExtensionType);\r
                                        }\r
                                        \r
-                                       if (CdmUtils.isNotEmpty(refLanguageIso639_2)){\r
+                                       if (StringUtils.isNotBlank(refLanguageIso639_2)){\r
                                                ExtensionType refLanguageIsoExtensionType = getExtensionType( state, REFERENCE_LANGUAGE_ISO639_2_UUID, "reference language iso 639-2","The iso 639-2 code of the references language","ref. lang. 639-2");\r
                                                Extension.NewInstance(reference, refLanguageIso639_2, refLanguageIsoExtensionType);\r
                                        }\r
-                               }else if (CdmUtils.isNotEmpty(refLanguage) || CdmUtils.isNotEmpty(refLanguageIso639_2)){\r
+                               }else if (isNotBlank(refLanguage) || isNotBlank(refLanguageIso639_2)){\r
                                        logger.warn("Reference is null (" + languageRefRefFk + ") but refLanguage (" + CdmUtils.Nz(refLanguage) + ") or iso639_2 (" + CdmUtils.Nz(refLanguageIso639_2) + ") was not null for common name ("+ commonNameId +")");\r
                                }\r
                                \r
                                //status\r
-                               if (CdmUtils.isNotEmpty(status)){\r
+                               if (isNotBlank(status)){\r
                                        AnnotationType statusAnnotationType = getAnnotationType( state, STATUS_ANNOTATION_UUID, "status","The status of this object","status", null);\r
                                        Annotation annotation = Annotation.NewInstance(status, statusAnnotationType, Language.DEFAULT());\r
                                        for (CommonTaxonName commonTaxonName : commonTaxonNames){\r
@@ -386,7 +383,7 @@ public class BerlinModelCommonNamesImport  extends BerlinModelImportBase {
         */\r
        private Language getAndHandleLanguage(Map<String, Language> iso639Map,  String iso639_2, String iso639_1, String languageString, String originalLanguageString, BerlinModelImportState state) {\r
                Language language;\r
-               if (CdmUtils.isNotEmpty(iso639_2)|| CdmUtils.isNotEmpty(iso639_1)  ){\r
+               if (StringUtils.isNotBlank(iso639_2)|| StringUtils.isNotBlank(iso639_1)  ){\r
                        //TODO test performance, implement in state\r
                        language = getLanguageFromIsoMap(iso639Map, iso639_2, iso639_1);\r
                        \r
@@ -434,7 +431,7 @@ public class BerlinModelCommonNamesImport  extends BerlinModelImportBase {
         * @param originalLanguageString\r
         */\r
        private void addOriginalLanguage(Language language,     String originalLanguageString) {\r
-               if (CdmUtils.isBlank(originalLanguageString)){\r
+               if (isBlank(originalLanguageString)){\r
                        return;\r
                }else if (language == null){\r
                        logger.warn("Language could not be defined, but originalLanguageString exists: " + originalLanguageString);\r
index 6ca5aab92887d61ef9685306ae2376658efb9153..561837296272a02439747a53e414463e0a9c3d11 100644 (file)
@@ -31,7 +31,6 @@ import eu.etaxonomy.cdm.model.taxon.Synonym;
 /**\r
  * @author a.mueller\r
  * @created 20.03.2008\r
- * @version 1.0\r
  */\r
 public class BerlinModelImportConfigurator extends DbImportConfiguratorBase<BerlinModelImportState> implements IImportConfigurator{\r
        private static Logger logger = Logger.getLogger(BerlinModelImportConfigurator.class);\r
index 4e11b154c2bcb377fe660dab1d13cb69ef5cb8af..c9bad1873c57360bf8a29700d0a7afb8e962c01a 100644 (file)
@@ -47,6 +47,8 @@ import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;\r
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\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.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
@@ -126,9 +128,11 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                \r
                TransactionStatus txStatus = this.startTransaction();\r
                //TODO\r
-               if (sourceReference.getId() > 0){\r
-                       sourceReference = getReferenceService().find(sourceReference.getUuid());  //just to be sure\r
-               }               \r
+               Reference<?> persistentSourceReference = getReferenceService().find(sourceReference.getUuid());  //just to be sure\r
+               if (persistentSourceReference != null){\r
+                       sourceReference = persistentSourceReference;\r
+               }\r
+               \r
                TermVocabulary<NamedArea> euroMedAreas = makeEmptyEuroMedVocabulary();\r
                \r
                MarkerType eurMarkerType = getMarkerType(state, BerlinModelTransformer.uuidEurArea, "eur", "eur Area", "eur");\r
@@ -136,6 +140,10 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                ExtensionType isoCodeExtType = getExtensionType(state, BerlinModelTransformer.uuidIsoCode, "IsoCode", "IsoCode", "iso");\r
                ExtensionType tdwgCodeExtType = getExtensionType(state, BerlinModelTransformer.uuidTdwgAreaCode, "TDWG code", "TDWG Area code", "tdwg");\r
                ExtensionType mclCodeExtType = getExtensionType(state, BerlinModelTransformer.uuidMclCode, "MCL code", "MedCheckList code", "mcl");\r
+               NamedAreaLevel areaLevelTop = getNamedAreaLevel(state, BerlinModelTransformer.uuidAreaLevelTop, "Euro+Med top area level", "Euro+Med top area level. This level is only to be used for the area representing the complete Euro+Med area", "e+m top", null);\r
+               NamedAreaLevel areaLevelEm1 = getNamedAreaLevel(state, BerlinModelTransformer.uuidAreaLevelFirst, "Euro+Med 1. area level", "Euro+Med 1. area level", "e+m 1.", null);\r
+               NamedAreaLevel areaLevelEm2 = getNamedAreaLevel(state, BerlinModelTransformer.uuidAreaLevelSecond, "Euro+Med 2. area level", "Euro+Med 2. area level", "Euro+Med 1. area level", null);\r
+               \r
                \r
                String sql = "SELECT * , CASE WHEN EMCode = 'EM' THEN 'a' ELSE 'b' END as isEM " +\r
                                " FROM emArea " +\r
@@ -147,13 +155,15 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                \r
                //euroMedArea (EMCode = 'EM')\r
                rs.next();\r
-               euroMedArea = makeSingleEuroMedArea(rs, eurMarkerType, euroMedAreaMarkerType, isoCodeExtType, tdwgCodeExtType, mclCodeExtType, sourceReference, euroMedArea, lastLevel2Area);\r
+               euroMedArea = makeSingleEuroMedArea(rs, eurMarkerType, euroMedAreaMarkerType, isoCodeExtType, tdwgCodeExtType, mclCodeExtType, \r
+                               areaLevelTop, areaLevelEm1 , areaLevelEm2, sourceReference, euroMedArea, lastLevel2Area);\r
                euroMedAreas.addTerm(euroMedArea);\r
                \r
                //all other areas\r
                while (rs.next()){\r
                        NamedArea newArea = makeSingleEuroMedArea(rs, eurMarkerType, euroMedAreaMarkerType,\r
-                                       isoCodeExtType, tdwgCodeExtType, mclCodeExtType, sourceReference, euroMedArea, lastLevel2Area);\r
+                                       isoCodeExtType, tdwgCodeExtType, mclCodeExtType, \r
+                                       areaLevelTop, areaLevelEm1 , areaLevelEm2, sourceReference, euroMedArea, lastLevel2Area);\r
                        euroMedAreas.addTerm(newArea);\r
                        if (newArea.getPartOf().equals(euroMedArea)){\r
                                lastLevel2Area = newArea;\r
@@ -172,11 +182,15 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
         * @param tdwgCodeExtType\r
         * @param mclCodeExtType\r
         * @param rs\r
+        * @param areaLevelEm2 \r
+        * @param areaLevelEm1 \r
+        * @param areaLevelTop \r
         * @throws SQLException\r
         */\r
        private NamedArea makeSingleEuroMedArea(ResultSet rs, MarkerType eurMarkerType,\r
                        MarkerType euroMedAreaMarkerType, ExtensionType isoCodeExtType,\r
                        ExtensionType tdwgCodeExtType, ExtensionType mclCodeExtType,\r
+                       NamedAreaLevel areaLevelTop, NamedAreaLevel areaLevelEm1, NamedAreaLevel areaLevelEm2, \r
                        Reference<?> sourceReference, NamedArea euroMedArea, NamedArea level2Area) throws SQLException {\r
                Integer areaId = rs.getInt("AreaId");\r
                String emCode = nullSafeTrim(rs.getString("EMCode"));\r
@@ -218,6 +232,9 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                        area.addExtension(mclCode, mclCodeExtType);\r
                }\r
                \r
+               //type\r
+               area.setType(NamedAreaType.ADMINISTRATION_AREA());\r
+               \r
                //source\r
                area.addSource(OriginalSourceType.Import, String.valueOf(areaId), EM_AREA_NAMESPACE, sourceReference, null);\r
                \r
@@ -225,9 +242,13 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                if (euroMedArea != null){\r
                        if (emCode.contains("(")){\r
                                area.setPartOf(level2Area);\r
+                               area.setLevel(areaLevelEm2);\r
                        }else{\r
                                area.setPartOf(euroMedArea);\r
+                               area.setLevel(areaLevelEm1);\r
                        }\r
+               }else{\r
+                       area.setLevel(areaLevelTop);\r
                }\r
                this.euroMedAreas.put(areaId, area);\r
                \r