minor changes and cleanup in globis import
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / io / globis / GlobisImageImport.java
index 8d9210eb7a544548e5a43187ec43d5b0708afa0f..bc4b7c40623fc5135852e326a2bb30d56db367e5 100644 (file)
@@ -36,19 +36,15 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.Marker;\r
 import eu.etaxonomy.cdm.model.common.MarkerType;\r
-import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
-import eu.etaxonomy.cdm.model.description.Feature;\r
-import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
-import eu.etaxonomy.cdm.model.description.TextData;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.media.Media;\r
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
 import eu.etaxonomy.cdm.model.occurrence.Collection;\r
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;\r
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;\r
-import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
 import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 \r
 \r
 /**\r
@@ -60,14 +56,13 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 public class GlobisImageImport  extends GlobisImportBase<Taxon> {\r
        private static final Logger logger = Logger.getLogger(GlobisImageImport.class);\r
        \r
-       private int modCount = 10000;\r
+       private int modCount = 1000;\r
 \r
        private UUID uuidArtNonSpecTaxMarkerType = UUID.fromString("be362085-0f5b-4314-96d1-78b9b129ef6d") ;\r
        private static final String pluralString = "images";\r
        private static final String dbTableName = "Einzelbilder";\r
-       private static final Class cdmTargetClass = Media.class;  //not needed\r
+       private static final Class<?> cdmTargetClass = Media.class;  //not needed\r
        \r
-       private static final String IMAGE_NAMESPACE = "Einzelbilder";\r
        private static UUID uuidGartRef = UUID.fromString("af85470f-6e54-4304-9d29-fd117cd56161"); \r
        \r
        public GlobisImageImport(){\r
@@ -116,10 +111,10 @@ public class GlobisImageImport  extends GlobisImportBase<Taxon> {
                \r
                Set<Media> objectsToSave = new HashSet<Media>();\r
                \r
-               Map<String, Specimen> typeMap = (Map<String, Specimen>) partitioner.getObjectMap(GlobisSpecTaxImport.TYPE_NAMESPACE);\r
+               Map<String, DerivedUnit> typeMap = (Map<String, DerivedUnit>) partitioner.getObjectMap(TYPE_NAMESPACE);\r
                \r
                Map<String, Taxon> taxonMap = (Map<String, Taxon>) partitioner.getObjectMap(TAXON_NAMESPACE);\r
-               Map<String, ZoologicalName> specTaxNameMap = (Map<String, ZoologicalName>) partitioner.getObjectMap(GlobisSpecTaxImport.SPEC_TAX_NAMESPACE);\r
+               Map<String, ZoologicalName> specTaxNameMap = (Map<String, ZoologicalName>) partitioner.getObjectMap(SPEC_TAX_NAMESPACE);\r
                \r
                ResultSet rs = partitioner.getResultSet();\r
                \r
@@ -156,7 +151,7 @@ public class GlobisImageImport  extends GlobisImportBase<Taxon> {
                                \r
                                String title = null;\r
                                \r
-                               Specimen specimen = null;\r
+                               DerivedUnit specimen = null;\r
                                if (spectaxID != null){\r
                                        //try to find type specimen\r
                                        if (isNotBlank(motiv) && (motiv.startsWith("type specimen"))){\r
@@ -178,7 +173,7 @@ public class GlobisImageImport  extends GlobisImportBase<Taxon> {
                                \r
                                //not type specimen\r
                                if (specimen == null){\r
-                                               specimen = Specimen.NewInstance();\r
+                                               specimen = DerivedUnit.NewPreservedSpecimenInstance();\r
                                                specimen.setTitleCache("Specimen for " + title );\r
                                                String collectionCode = transformCopyright2CollectionCode(copyright);\r
                                                //TODO\r
@@ -188,11 +183,11 @@ public class GlobisImageImport  extends GlobisImportBase<Taxon> {
                                        \r
                                        \r
                                        //source\r
-                                       specimen.addSource(String.valueOf(bildID), IMAGE_NAMESPACE, state.getTransactionalSourceReference(), null);\r
+                                       specimen.addSource(OriginalSourceType.Import, String.valueOf(bildID), IMAGE_NAMESPACE, state.getTransactionalSourceReference(), null);\r
                                        \r
                                        //GART id (specimenID)\r
                                        if (isNotBlank(specimenId)){\r
-                                               specimen.addSource(specimenId, "", refGart, null);\r
+                                               specimen.addSource(OriginalSourceType.Lineage, specimenId, "specimenId", refGart, null);\r
                                        }\r
                                        //bemerkungen\r
                                        if (isNotBlank(bemerkungen)){\r
@@ -294,7 +289,7 @@ public class GlobisImageImport  extends GlobisImportBase<Taxon> {
 \r
        private String getNameFromFileOs(ResultSet rs) throws SQLException {\r
                String fileOS = rs.getString("file OS");\r
-               Pattern pattern = Pattern.compile("(.+)(_...._..\\.jpg)");\r
+               Pattern pattern = Pattern.compile("(.+)(_.{4}(-.{1,3})?(_Nr\\d{3,4})?_.{2,3}\\.jpg)");\r
                Matcher matcher = pattern.matcher(fileOS);\r
                if (matcher.matches()){\r
                        String match = matcher.group(1);\r
@@ -433,29 +428,30 @@ public class GlobisImageImport  extends GlobisImportBase<Taxon> {
                        \r
                        while (rs.next()){\r
                                handleForeignKey(rs, currSpecIdSet, "SpecCurrspecID");\r
+                               handleForeignKey(rs, specTaxIdSet, "spectaxID");\r
                                handleTypeKey(rs, typeIdSet, "spectaxID", "copyright");\r
                        }\r
                        \r
                        //specTax map\r
-                       nameSpace = GlobisSpecTaxImport.SPEC_TAX_NAMESPACE;\r
-                       cdmClass = TaxonBase.class;\r
+                       nameSpace = SPEC_TAX_NAMESPACE;\r
+                       cdmClass = ZoologicalName.class;\r
                        idSet = specTaxIdSet;\r
-                       Map<String, TaxonBase> specTaxMap = (Map<String, TaxonBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
-                       result.put(nameSpace, specTaxMap);\r
+                       Map<String, ZoologicalName> specTaxNameMap = (Map<String, ZoologicalName>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       result.put(nameSpace, specTaxNameMap);\r
 \r
-                       //taxon map\r
-                       nameSpace = TAXON_NAMESPACE;\r
-                       cdmClass = Taxon.class;\r
-                       idSet = currSpecIdSet;\r
-                       Map<String, Taxon> taxonMap = (Map<String, Taxon>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
-                       result.put(nameSpace, taxonMap);\r
+//                     //taxon map\r
+//                     nameSpace = TAXON_NAMESPACE;\r
+//                     cdmClass = Taxon.class;\r
+//                     idSet = currSpecIdSet;\r
+//                     Map<String, Taxon> taxonMap = (Map<String, Taxon>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+//                     result.put(nameSpace, taxonMap);\r
 \r
                        \r
                        //type map\r
                        nameSpace = GlobisSpecTaxImport.TYPE_NAMESPACE;\r
-                       cdmClass = Specimen.class;\r
+                       cdmClass = DerivedUnit.class;\r
                        idSet = typeIdSet;\r
-                       Map<String, Specimen> typeMap = (Map<String, Specimen>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, DerivedUnit> typeMap = (Map<String, DerivedUnit>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, typeMap);\r
                        \r
                        \r
@@ -465,8 +461,7 @@ public class GlobisImageImport  extends GlobisImportBase<Taxon> {
                return result;\r
        }\r
        \r
-       private void handleTypeKey(ResultSet rs, Set<String> idSet, String specTaxIdAttr, String copyrightAttr)\r
-                       throws SQLException {\r
+       private void handleTypeKey(ResultSet rs, Set<String> idSet, String specTaxIdAttr, String copyrightAttr) throws SQLException {\r
                Integer specTaxId = nullSafeInt(rs, specTaxIdAttr);\r
                if (specTaxId != null){\r
                        String copyright = rs.getString(copyrightAttr);\r