use euroMed areas and some minor clean up; enable authentication for user import
authorAndreas Müller <a.mueller@bgbm.org>
Fri, 11 Oct 2013 13:23:43 +0000 (13:23 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Fri, 11 Oct 2013 13:23:43 +0000 (13:23 +0000)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/BerlinModelTransformer.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
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelReferenceImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelUserImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmApplicationAwareDefaultExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmApplicationAwareDefaultImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/ICdmIO.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/ImportStateBase.java

index e735dc9bf40c23758b1e4db3001b1abe21249036..d8b80314af1dc98c8453c2fc9837039064a8b89e 100644 (file)
@@ -110,6 +110,9 @@ public class BerlinModelTransformer {
        \r
        //Marker Types\r
        public static final UUID uuidMisappliedCommonName = UUID.fromString("25f5cfc3-16ab-4aba-a008-0db0f2cf7f9d");\r
+       public static final UUID uuidEurArea = UUID.fromString("71dd0368-835c-4b53-889a-2bf316e10297");\r
+       public static final UUID uuidEurMedArea = UUID.fromString("aa6a5b25-3ee3-4771-b4d1-b91918f23fa5");\r
+       \r
        \r
        //Extension Types\r
        public static final UUID uuidSpeciesExpertName = UUID.fromString("2e8153d2-7412-49e4-87e1-5c38f4c5153a");\r
@@ -117,6 +120,11 @@ public class BerlinModelTransformer {
        \r
        public static final UUID DETAIL_EXT_UUID = UUID.fromString("c3959b4f-d876-4b7a-a739-9260f4cafd1c");\r
        public static final UUID ID_IN_SOURCE_EXT_UUID = UUID.fromString("23dac094-e793-40a4-bad9-649fc4fcfd44");\r
+       public static final UUID uuidIsoCode = UUID.fromString("048b8153-e3ee-451c-a72c-f1c8bc291c3e");\r
+       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
+       \r
        \r
        //languages\r
        public static final UUID uuidLangMajorcan = UUID.fromString("82d696d7-cb4e-49de-ac89-63a0e12ca766");\r
index 0deb4195096c9d3bb265efc1af70e5ebc0bc8e5c..6ca5aab92887d61ef9685306ae2376658efb9153 100644 (file)
@@ -68,6 +68,8 @@ public class BerlinModelImportConfigurator extends DbImportConfiguratorBase<Berl
        \r
        //occurrences\r
        private boolean isSplitTdwgCodes = true;\r
+       \r
+       private boolean useEmAreaVocabulary = false;\r
 \r
        private boolean includesEmCode = true;  // in Campanula we do not have an EMCOde\r
        private boolean allowInfraSpecTaxonRank = true; \r
@@ -701,4 +703,16 @@ public class BerlinModelImportConfigurator extends DbImportConfiguratorBase<Berl
                this.includeAllNonMisappliedRelatedClassifications = includeAllNonMisappliedRelatedClassifications;\r
        }\r
 \r
+\r
+\r
+       public boolean isUseEmAreaVocabulary() {\r
+               return useEmAreaVocabulary;\r
+       }\r
+\r
+\r
+\r
+       public void setUseEmAreaVocabulary(boolean useEmAreaVocabulary) {\r
+               this.useEmAreaVocabulary = useEmAreaVocabulary;\r
+       }\r
+\r
 }\r
index 9cf37f962b39c035246f00ecc0497e9ed2314ed0..4e11b154c2bcb377fe660dab1d13cb69ef5cb8af 100644 (file)
@@ -9,6 +9,7 @@
 \r
 package eu.etaxonomy.cdm.io.berlinModel.in;\r
 \r
+import java.net.URI;\r
 import java.sql.ResultSet;\r
 import java.sql.SQLException;\r
 import java.util.ArrayList;\r
@@ -21,6 +22,7 @@ import java.util.Set;
 import org.apache.commons.lang.StringUtils;\r
 import org.apache.log4j.Logger;\r
 import org.springframework.stereotype.Component;\r
+import org.springframework.transaction.TransactionStatus;\r
 \r
 import eu.etaxonomy.cdm.common.CdmUtils;\r
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
@@ -28,12 +30,18 @@ import eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer;
 import eu.etaxonomy.cdm.io.berlinModel.in.validation.BerlinModelOccurrenceImportValidator;\r
 import eu.etaxonomy.cdm.io.common.IOValidator;\r
 import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
 import eu.etaxonomy.cdm.io.common.TdwgAreaProvider;\r
 import eu.etaxonomy.cdm.model.common.Annotation;\r
 import eu.etaxonomy.cdm.model.common.AnnotationType;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.ExtensionType;\r
+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.common.OriginalSourceType;\r
+import eu.etaxonomy.cdm.model.common.TermType;\r
+import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
 import eu.etaxonomy.cdm.model.description.Distribution;\r
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;\r
@@ -52,6 +60,8 @@ import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;
  */\r
 @Component\r
 public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {\r
+       private static final String EM_AREA_NAMESPACE = "emArea";\r
+\r
        private static final Logger logger = Logger.getLogger(BerlinModelOccurrenceImport.class);\r
 \r
        public static final String NAMESPACE = "Occurrence";\r
@@ -66,9 +76,6 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                super(dbTableName, pluralString);\r
        }\r
        \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getIdQuery()\r
-        */\r
        @Override\r
        protected String getIdQuery(BerlinModelImportState state) {\r
                String result = " SELECT occurrenceId FROM " + getTableName();\r
@@ -78,9 +85,6 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                return result;\r
        }\r
 \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getRecordQuery(eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator)\r
-        */\r
        @Override\r
        protected String getRecordQuery(BerlinModelImportConfigurator config) {\r
                        String emCode = config.isIncludesAreaEmCode()? ", emArea.EMCode" : "";\r
@@ -98,9 +102,163 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                return strQuery;\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
+       private Map<Integer, NamedArea> euroMedAreas = new HashMap<Integer, NamedArea>();\r
+       \r
+       \r
+       @Override\r
+       public boolean invoke(BerlinModelImportState state) {\r
+               if (state.getConfig().isUseEmAreaVocabulary()){\r
+                       try {\r
+                               createEuroMedAreas(state);\r
+                       } catch (Exception e) {\r
+                               logger.error("Exception occurred when trying to create euroMed Areas");\r
+                               e.printStackTrace();\r
+                       }\r
+               }\r
+               boolean result = super.invoke(state);\r
+               euroMedAreas = new HashMap<Integer, NamedArea>();\r
+               return result;\r
+       }\r
+       \r
+       private TermVocabulary<NamedArea> createEuroMedAreas(BerlinModelImportState state) throws SQLException {\r
+               Source source = state.getConfig().getSource();\r
+               Reference<?> sourceReference = state.getConfig().getSourceReference();\r
+               \r
+               TransactionStatus txStatus = this.startTransaction();\r
+               //TODO\r
+               if (sourceReference.getId() > 0){\r
+                       sourceReference = getReferenceService().find(sourceReference.getUuid());  //just to be sure\r
+               }               \r
+               TermVocabulary<NamedArea> euroMedAreas = makeEmptyEuroMedVocabulary();\r
+               \r
+               MarkerType eurMarkerType = getMarkerType(state, BerlinModelTransformer.uuidEurArea, "eur", "eur Area", "eur");\r
+               MarkerType euroMedAreaMarkerType = getMarkerType(state, BerlinModelTransformer.uuidEurMedArea, "EuroMedArea", "EuroMedArea", "EuroMedArea");\r
+               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
+               \r
+               String sql = "SELECT * , CASE WHEN EMCode = 'EM' THEN 'a' ELSE 'b' END as isEM " +\r
+                               " FROM emArea " +\r
+                               " ORDER BY isEM, EMCode"; \r
+               ResultSet rs = source.getResultSet(sql);\r
+               \r
+               NamedArea euroMedArea = null;\r
+               NamedArea lastLevel2Area = null;\r
+               \r
+               //euroMedArea (EMCode = 'EM')\r
+               rs.next();\r
+               euroMedArea = makeSingleEuroMedArea(rs, eurMarkerType, euroMedAreaMarkerType, isoCodeExtType, tdwgCodeExtType, mclCodeExtType, 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
+                       euroMedAreas.addTerm(newArea);\r
+                       if (newArea.getPartOf().equals(euroMedArea)){\r
+                               lastLevel2Area = newArea;\r
+                       }\r
+                       getVocabularyService().saveOrUpdate(euroMedAreas);\r
+               }       \r
+               \r
+               commitTransaction(txStatus);\r
+               return euroMedAreas;\r
+       }\r
+\r
+       /**\r
+        * @param eurMarkerType\r
+        * @param euroMedAreaMarkerType\r
+        * @param isoCodeExtType\r
+        * @param tdwgCodeExtType\r
+        * @param mclCodeExtType\r
+        * @param rs\r
+        * @throws SQLException\r
         */\r
+       private NamedArea makeSingleEuroMedArea(ResultSet rs, MarkerType eurMarkerType,\r
+                       MarkerType euroMedAreaMarkerType, ExtensionType isoCodeExtType,\r
+                       ExtensionType tdwgCodeExtType, ExtensionType mclCodeExtType,\r
+                       Reference<?> sourceReference, NamedArea euroMedArea, NamedArea level2Area) throws SQLException {\r
+               Integer areaId = rs.getInt("AreaId");\r
+               String emCode = nullSafeTrim(rs.getString("EMCode"));\r
+               String isoCode = nullSafeTrim(rs.getString("ISOCode"));\r
+               String tdwgCode = nullSafeTrim(rs.getString("TDWGCode"));\r
+               String unit = nullSafeTrim(rs.getString("Unit"));\r
+//                                   ,[Status]\r
+//                                   ,[OutputOrder]\r
+               boolean eurMarker = rs.getBoolean("eur");\r
+               boolean euroMedAreaMarker = rs.getBoolean("EuroMedArea");\r
+               String notes = nullSafeTrim(rs.getString("Notes"));\r
+               String mclCode = nullSafeTrim(rs.getString("MCLCode"));\r
+               String geoSearch = nullSafeTrim(rs.getString("NameForGeoSearch"));\r
+               \r
+               if (isBlank(emCode)){\r
+                       emCode = unit;\r
+               }\r
+               \r
+               //label\r
+               NamedArea area = NamedArea.NewInstance(geoSearch, unit, emCode);\r
+               //code\r
+               area.setIdInVocabulary(emCode);\r
+               //notes\r
+               if (StringUtils.isNotEmpty(notes)){\r
+                       area.addAnnotation(Annotation.NewInstance(notes, AnnotationType.EDITORIAL(), Language.DEFAULT()));\r
+               }\r
+               //markers\r
+               area.addMarker(Marker.NewInstance(eurMarkerType, eurMarker));\r
+               area.addMarker(Marker.NewInstance(euroMedAreaMarkerType, euroMedAreaMarker));\r
+               \r
+               //extensions\r
+               if (isNotBlank(isoCode)){\r
+                       area.addExtension(isoCode, isoCodeExtType);\r
+               }\r
+               if (isNotBlank(tdwgCode)){\r
+                       area.addExtension(tdwgCode, tdwgCodeExtType);\r
+               }\r
+               if (isNotBlank(mclCode)){\r
+                       area.addExtension(mclCode, mclCodeExtType);\r
+               }\r
+               \r
+               //source\r
+               area.addSource(OriginalSourceType.Import, String.valueOf(areaId), EM_AREA_NAMESPACE, sourceReference, null);\r
+               \r
+               //parent\r
+               if (euroMedArea != null){\r
+                       if (emCode.contains("(")){\r
+                               area.setPartOf(level2Area);\r
+                       }else{\r
+                               area.setPartOf(euroMedArea);\r
+                       }\r
+               }\r
+               this.euroMedAreas.put(areaId, area);\r
+               \r
+               //save\r
+               getTermService().saveOrUpdate(area);\r
+               \r
+               return area;\r
+       }\r
+\r
+       private String nullSafeTrim(String string) {\r
+               if (string == null){\r
+                       return null;\r
+               }else{\r
+                       return string.trim();\r
+               }\r
+       }\r
+\r
+       /**\r
+        * \r
+        */\r
+       private TermVocabulary<NamedArea> makeEmptyEuroMedVocabulary() {\r
+               TermType type = TermType.NamedArea;\r
+               String description = "Euro+Med area vocabulary";\r
+               String label = "E+M areas";\r
+               String abbrev = null;\r
+               URI termSourceUri = null;\r
+               TermVocabulary<NamedArea> result = TermVocabulary.NewInstance(type, description, label, abbrev, termSourceUri);\r
+               getVocabularyService().save(result);\r
+               return result;\r
+       }\r
+\r
        @Override\r
        public boolean doPartition(ResultSetPartitioner partitioner, BerlinModelImportState state) {\r
                boolean success = true;\r
@@ -127,8 +285,7 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                 \r
                 int occurrenceId = rs.getInt("OccurrenceId");\r
                 int newTaxonId = rs.getInt("taxonId");\r
-                String tdwgCodeString = rs.getString("TDWGCode");\r
-                String emCodeString = state.getConfig().isIncludesAreaEmCode() ? rs.getString("EMCode") : null;\r
+                \r
                 Integer emStatusId = nullSafeInt(rs, "emOccurSumCatId");\r
                 \r
                 try {\r
@@ -142,39 +299,12 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                                                alternativeStatusString = CdmUtils.concat(",", stringArray);\r
                                        }\r
                      \r
-                                       //Create area list\r
-                                       List<NamedArea> areas = new ArrayList<NamedArea>();\r
-                                       if (tdwgCodeString != null){\r
-                                       \r
-                                               String[] tdwgCodes = new String[]{tdwgCodeString};\r
-                                               if (state.getConfig().isSplitTdwgCodes()){\r
-                                                       tdwgCodes = tdwgCodeString.split(";");\r
-                                               }\r
-                                               \r
-                                               for (String tdwgCode : tdwgCodes){\r
-                                                       NamedArea area = TdwgAreaProvider.getAreaByTdwgAbbreviation(tdwgCode.trim());\r
-                                               if (area == null){\r
-                                                       area = getOtherAreas(state, emCodeString, tdwgCodeString);\r
-                                               }\r
-                                               if (area != null){\r
-                                                       areas.add(area);\r
-                                               }\r
-                                       }\r
-                     }\r
-                                       \r
-                     Reference<?> sourceRef = state.getTransactionalSourceReference();\r
+                                       Reference<?> sourceRef = state.getTransactionalSourceReference();\r
+                    \r
+                                       List<NamedArea> areas = makeAreaList(state, rs, occurrenceId);\r
+                     \r
                      //create description(elements)\r
                      TaxonDescription taxonDescription = getTaxonDescription(newTaxonId, oldTaxonId, oldDescription, taxonMap, occurrenceId, sourceRef);\r
-                     if (areas.size()== 0){\r
-                                NamedArea area = getOtherAreas(state, emCodeString, tdwgCodeString);\r
-                                if (area != null){\r
-                             areas.add(area);\r
-                       }\r
-                        }\r
-                     if (areas.size() == 0){\r
-                        String areaId = rs.getString("AreaId");\r
-                        logger.warn("No areas defined for occurrence " + occurrenceId + ". EMCode: " + CdmUtils.Nz(emCodeString).trim() + ". AreaId: " + areaId );\r
-                     }\r
                      for (NamedArea area : areas){\r
                            Distribution distribution = Distribution.NewInstance(area, status);\r
                            if (status == null){\r
@@ -226,11 +356,60 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                }\r
        }\r
 \r
-\r
-\r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)\r
+       /**\r
+        * @param state\r
+        * @param rs\r
+        * @param occurrenceId\r
+        * @param tdwgCodeString\r
+        * @param emCodeString\r
+        * @return\r
+        * @throws SQLException\r
         */\r
+       //Create area list\r
+       private List<NamedArea> makeAreaList(BerlinModelImportState state, ResultSet rs, int occurrenceId) throws SQLException {\r
+               List<NamedArea> areas = new ArrayList<NamedArea>();\r
+               \r
+               if (state.getConfig().isUseEmAreaVocabulary()){\r
+                       Integer areaId = rs.getInt("AreaId");\r
+               NamedArea area = this.euroMedAreas.get(areaId);\r
+                       areas.add(area);\r
+               }else{\r
+               String tdwgCodeString = rs.getString("TDWGCode");\r
+               String emCodeString = state.getConfig().isIncludesAreaEmCode() ? rs.getString("EMCode") : null;\r
+       \r
+                       if (tdwgCodeString != null){\r
+                       \r
+                               String[] tdwgCodes = new String[]{tdwgCodeString};\r
+                               if (state.getConfig().isSplitTdwgCodes()){\r
+                                       tdwgCodes = tdwgCodeString.split(";");\r
+                               }\r
+                               \r
+                               for (String tdwgCode : tdwgCodes){\r
+                                       NamedArea area = TdwgAreaProvider.getAreaByTdwgAbbreviation(tdwgCode.trim());\r
+                               if (area == null){\r
+                                       area = getOtherAreas(state, emCodeString, tdwgCodeString);\r
+                               }\r
+                               if (area != null){\r
+                                       areas.add(area);\r
+                               }\r
+                               }\r
+                        }\r
+                       \r
+                        if (areas.size()== 0){\r
+                                NamedArea area = getOtherAreas(state, emCodeString, tdwgCodeString);\r
+                                if (area != null){\r
+                                areas.add(area);\r
+                          }\r
+                        }\r
+                        if (areas.size() == 0){\r
+                                String areaId = rs.getString("AreaId");\r
+                                logger.warn("No areas defined for occurrence " + occurrenceId + ". EMCode: " + CdmUtils.Nz(emCodeString).trim() + ". AreaId: " + areaId );\r
+                        }\r
+               }\r
+               return areas;\r
+       }\r
+\r
+       @Override\r
        public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs) {\r
                String nameSpace;\r
                Class cdmClass;\r
@@ -320,10 +499,6 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                return result;\r
        }\r
        \r
-\r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IoStateBase)\r
-        */\r
        @Override\r
        protected boolean doCheck(BerlinModelImportState state){\r
                IOValidator<BerlinModelImportState> validator = new BerlinModelOccurrenceImportValidator();\r
@@ -331,9 +506,7 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
        }\r
 \r
 \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
-        */\r
+       @Override\r
        protected boolean isIgnore(BerlinModelImportState state){\r
                if (! state.getConfig().isDoOccurrence()){\r
                        return true;\r
index 1288df76c3b7d30937bb2686a37627a20b21d30f..bcaaf29009005f353c76da9d29af666828dbecf4 100644 (file)
@@ -858,7 +858,6 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                if (nomAuthor != null){\r
                        result = nomAuthor;\r
                } else if (StringUtils.isNotBlank(authorString)){\r
-//                     xx;\r
                        //FIXME check for existing team / persons\r
                        TeamOrPersonBase<?> team = Team.NewInstance();\r
                        team.setNomenclaturalTitle(authorString);\r
index aee481dab5933d1ad6af2b1a39d9a7ea720a116b..ef07f3ed58e402031713b3ad2944f784e837d3aa 100644 (file)
@@ -10,16 +10,17 @@ package eu.etaxonomy.cdm.io.berlinModel.in;
 \r
 import java.sql.ResultSet;\r
 import java.sql.SQLException;\r
+import java.util.ArrayList;\r
+import java.util.Collection;\r
 import java.util.Map;\r
 \r
 import org.apache.log4j.Logger;\r
 import org.springframework.stereotype.Component;\r
 \r
+import eu.etaxonomy.cdm.config.Configuration;\r
 import eu.etaxonomy.cdm.io.berlinModel.in.validation.BerlinModelUserImportValidator;\r
-import eu.etaxonomy.cdm.io.common.ICdmIO;\r
 import eu.etaxonomy.cdm.io.common.IOValidator;\r
 import eu.etaxonomy.cdm.io.common.ImportHelper;\r
-import eu.etaxonomy.cdm.io.common.MapWrapper;\r
 import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;\r
 import eu.etaxonomy.cdm.io.common.Source;\r
 import eu.etaxonomy.cdm.model.agent.Person;\r
@@ -30,7 +31,6 @@ import eu.etaxonomy.cdm.model.common.User;
 /**\r
  * @author a.mueller\r
  * @created 20.03.2008\r
- * @version 1.0\r
  */\r
 @Component\r
 public class BerlinModelUserImport extends BerlinModelImportBase {\r
@@ -46,18 +46,15 @@ public class BerlinModelUserImport extends BerlinModelImportBase {
                super(dbTableName, pluralString);\r
        }\r
        \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
-        */\r
        @Override\r
        protected boolean doCheck(BerlinModelImportState state){\r
                IOValidator<BerlinModelImportState> validator = new BerlinModelUserImportValidator();\r
                return validator.validate(state);\r
        }\r
        \r
+       @Override\r
        protected void doInvoke(BerlinModelImportState state){\r
                boolean success = true;\r
-               MapWrapper<User> userMap = (MapWrapper<User>)state.getStore(ICdmIO.USER_STORE);\r
                \r
                BerlinModelImportConfigurator config = state.getConfig();\r
                Source source = config.getSource();\r
@@ -71,7 +68,7 @@ public class BerlinModelUserImport extends BerlinModelImportBase {
                                " SELECT *  " +\r
                 " FROM "+dbTableName+" " ;\r
                ResultSet rs = source.getResultSet(strQuery) ;\r
-               String namespace = dbTableName;\r
+               Collection<User> users = new ArrayList<User>();\r
                \r
                int i = 0;\r
                //for each reference\r
@@ -94,16 +91,17 @@ public class BerlinModelUserImport extends BerlinModelImportBase {
                                        \r
                                        /* \r
                                         * this is a crucial call, otherwise the password will not be set correctly\r
-                                        * and the whole authenticataion will not work \r
+                                        * and the whole authentication will not work \r
                                         */\r
+                                       authenticate(Configuration.adminLogin, Configuration.adminPassword);\r
                                        getUserService().createUser(user);\r
                                        \r
+                                       \r
                                        dbAttrName = "RealName";\r
                                        cdmAttrName = "TitleCache";\r
                                        success &= ImportHelper.addStringValue(rs, person, dbAttrName, cdmAttrName, false);\r
        \r
-       \r
-                                       userMap.put(username, user);\r
+                                       users.add(user);\r
                                        state.putUser(username, user);\r
                                }catch(Exception ex){\r
                                        logger.error(ex.getMessage());\r
@@ -119,7 +117,7 @@ public class BerlinModelUserImport extends BerlinModelImportBase {
                }\r
                        \r
                logger.info("save " + i + " "+pluralString + " ...");\r
-               getUserService().save(userMap.objects());\r
+               getUserService().save(users);\r
 \r
                logger.info("end make "+pluralString+" ..." + getSuccessString(success));;\r
                if (!success){\r
@@ -129,31 +127,22 @@ public class BerlinModelUserImport extends BerlinModelImportBase {
        }\r
 \r
        \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
-        */\r
+       @Override\r
        protected boolean isIgnore(BerlinModelImportState state){\r
                return ! state.getConfig().isDoUser();\r
        }\r
 \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getRecordQuery(eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator)\r
-        */\r
        @Override\r
        protected String getRecordQuery(BerlinModelImportConfigurator config) {\r
                return null; // not needed at the moment\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
                return true;  // not needed at the moment\r
        }\r
 \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)\r
-        */\r
+       @Override\r
        public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs) {\r
                return null; //not needed at the moment\r
        }\r
index 8b492f99ec07f8d0c66af59d0a3baaea5a735358..66d7ce26a9af3db20a2832c4241455a5bf85aba4 100644 (file)
@@ -66,8 +66,6 @@ public class CdmApplicationAwareDefaultExport<T extends IExportConfigurator> imp
                stores.put(ICdmIO.TEAM_STORE, new MapWrapper<TeamOrPersonBase>(service));\r
                stores.put(ICdmIO.REFERENCE_STORE, new MapWrapper<Reference>(service));\r
                stores.put(ICdmIO.NOMREF_STORE, new MapWrapper<Reference>(service));\r
-               stores.put(ICdmIO.NOMREF_DETAIL_STORE, new MapWrapper<Reference>(service));\r
-               stores.put(ICdmIO.REF_DETAIL_STORE, new MapWrapper<Reference>(service));\r
                stores.put(ICdmIO.TAXONNAME_STORE, new MapWrapper<TaxonNameBase>(service));\r
                stores.put(ICdmIO.TAXON_STORE, new MapWrapper<TaxonBase>(service));\r
                stores.put(ICdmIO.SPECIMEN_STORE, new MapWrapper<DerivedUnit>(service));\r
index 67b89551352d23239cb90f9df34d6730695daf0f..c6458a4b2c353594dbf9c0fd772827a13185d207 100644 (file)
@@ -66,13 +66,9 @@ public class CdmApplicationAwareDefaultImport<T extends IImportConfigurator> imp
 \r
     public CdmApplicationAwareDefaultImport(){\r
 \r
-\r
-        stores.put(ICdmIO.PERSON_STORE, new MapWrapper<Person>(service));\r
-        stores.put(ICdmIO.TEAM_STORE, new MapWrapper<TeamOrPersonBase<?>>(service));\r
+       stores.put(ICdmIO.TEAM_STORE, new MapWrapper<TeamOrPersonBase<?>>(service));\r
         stores.put(ICdmIO.REFERENCE_STORE, new MapWrapper<Reference>(service));\r
         stores.put(ICdmIO.NOMREF_STORE, new MapWrapper<Reference>(service));\r
-        stores.put(ICdmIO.NOMREF_DETAIL_STORE, new MapWrapper<Reference>(service));\r
-        stores.put(ICdmIO.REF_DETAIL_STORE, new MapWrapper<Reference>(service));\r
         stores.put(ICdmIO.TAXONNAME_STORE, new MapWrapper<TaxonNameBase<?,?>>(service));\r
         stores.put(ICdmIO.TAXON_STORE, new MapWrapper<TaxonBase>(service));\r
         stores.put(ICdmIO.SPECIMEN_STORE, new MapWrapper<DerivedUnit>(service));\r
index 0405febac474d7ed581a9b9ba2e2d0d96c964773..a7464b38a64f3840af621abda6f2c47212fd2306 100644 (file)
@@ -20,16 +20,11 @@ import eu.etaxonomy.cdm.io.common.events.IIoEvent;
 \r
 public interface ICdmIO<STATE extends IoStateBase> extends  IIoObservable {\r
        \r
-       final String USER_STORE = "person";\r
-       final String PERSON_STORE = "person";\r
        final String TEAM_STORE = "team";\r
        final String REFERENCE_STORE = "reference";\r
        final String NOMREF_STORE = "nomRef";\r
-       final String REF_DETAIL_STORE = "refDetail";\r
-       final String NOMREF_DETAIL_STORE = "nomRefDetail";\r
        final String TAXONNAME_STORE = "taxonName";\r
        final String TAXON_STORE = "taxon";\r
-       final String FEATURE_STORE = "feature";\r
        final String SPECIMEN_STORE = "specimen";\r
        \r
        public boolean check(STATE state);\r
index f5ee98c2871e10b6c837fb687c6173582e4d7440..cd7808ea0537a97fee296f7b865c51561db7c4e7 100644 (file)
@@ -88,13 +88,9 @@ public abstract class ImportStateBase<CONFIG extends ImportConfiguratorBase, IO
        \r
        protected ImportStateBase(CONFIG config){\r
                this.config = config;\r
-               stores.put(ICdmIO.USER_STORE, new MapWrapper<User>(service));\r
-               stores.put(ICdmIO.PERSON_STORE, new MapWrapper<Person>(service));\r
                stores.put(ICdmIO.TEAM_STORE, new MapWrapper<TeamOrPersonBase<?>>(service));\r
                stores.put(ICdmIO.REFERENCE_STORE, new MapWrapper<Reference>(service));\r
                stores.put(ICdmIO.NOMREF_STORE, new MapWrapper<Reference>(service));\r
-               stores.put(ICdmIO.NOMREF_DETAIL_STORE, new MapWrapper<Reference>(service));\r
-               stores.put(ICdmIO.REF_DETAIL_STORE, new MapWrapper<Reference>(service));\r
                stores.put(ICdmIO.TAXONNAME_STORE, new MapWrapper<TaxonNameBase<?,?>>(service));\r
                stores.put(ICdmIO.TAXON_STORE, new MapWrapper<TaxonBase>(service));\r
                stores.put(ICdmIO.SPECIMEN_STORE, new MapWrapper<DerivedUnit>(service));\r