some refactoring in SDD import
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / sdd / in / SDDImport.java
index 503affc9d8142159a36e705423b9a6fe2822de6c..f9b953a9789384f4d620f48f3646897ccb87175e 100644 (file)
@@ -32,7 +32,6 @@ import org.springframework.transaction.TransactionStatus;
 import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
 import eu.etaxonomy.cdm.api.service.IReferenceService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
-import eu.etaxonomy.cdm.api.service.ITermService;\r
 import eu.etaxonomy.cdm.common.mediaMetaData.ImageMetaData;\r
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
 import eu.etaxonomy.cdm.io.common.CdmImportBase;\r
@@ -108,7 +107,6 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
        private Map<String,List<CdmBase>> mediaObject_ListCdmBase = new HashMap<String,List<CdmBase>>();\r
        private Map<String,String> mediaObject_Role = new HashMap<String,String>();\r
        private Map<String,ReferenceBase> publications = new HashMap<String,ReferenceBase>();\r
-       private Map<String,StateData> stateDatas = new HashMap<String,StateData>();\r
        private Map<String,State> states = new HashMap<String,State>();\r
        private Map<String,TaxonDescription> taxonDescriptions = new HashMap<String,TaxonDescription>();\r
        private Map<String,NonViralName> taxonNameBases = new HashMap<String,NonViralName>();\r
@@ -121,7 +119,6 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
        private Set<MarkerType> markerTypes = new HashSet<MarkerType>();\r
 \r
        private Set<Feature> descriptiveConcepts = new HashSet<Feature>();\r
-       private Set<TermVocabulary<Modifier>> termVocabularyStates = new HashSet<TermVocabulary<Modifier>>();\r
        private Set<AnnotationType> annotationTypes = new HashSet<AnnotationType>();\r
        private Set<Feature> featureSet = new HashSet<Feature>();\r
        private ReferenceBase sec = ReferenceFactory.newDatabase();\r
@@ -614,23 +611,20 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
        }\r
 \r
        private void saveAnnotationType() {\r
-               for (Iterator<AnnotationType> at = annotationTypes.iterator() ; at.hasNext() ;) {\r
-                       AnnotationType annotationType = at.next();\r
+               for (AnnotationType annotationType: annotationTypes){\r
                        getTermService().save(annotationType); \r
                }\r
        }\r
 \r
        private void saveStatisticalMeasure() {\r
-               for (Iterator<StatisticalMeasure> k = statisticalMeasures.iterator() ; k.hasNext() ;) {\r
-                       StatisticalMeasure sm = k.next();\r
+               for (StatisticalMeasure sm : statisticalMeasures){\r
                        getTermService().save(sm); \r
                }\r
        }\r
 \r
        private void saveUnits() {\r
                if (units != null) {\r
-                       for (Iterator<MeasurementUnit> k = units.values().iterator() ; k.hasNext() ;){\r
-                               MeasurementUnit unit = k.next();\r
+                       for (MeasurementUnit unit : units.values()){\r
                                if (unit != null) {\r
                                        getTermService().save(unit); \r
                                }\r
@@ -639,44 +633,35 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
        }\r
 \r
        private void saveAreas(MarkerType geographicAreaMarkerType) {\r
-               for (Iterator<NamedArea> k = namedAreas.values().iterator() ; k.hasNext() ;) {\r
+               for (NamedArea area : namedAreas.values() ){\r
                        Marker marker = Marker.NewInstance();\r
                        marker.setMarkerType(geographicAreaMarkerType);\r
-                       NamedArea area = k.next();\r
                        area.addMarker(marker);\r
-                       //getTermService().save(area);\r
                        getTermService().save(area);\r
                }\r
        }\r
 \r
        private void saveStates() {\r
-               for (Iterator<State> k = states.values().iterator() ; k.hasNext() ;){\r
-                       State state = k.next();\r
+               for (State state : states.values() ){\r
                        getTermService().save(state);\r
                }\r
        }\r
 \r
        private void saveMarkerType() {\r
-               for(Iterator<MarkerType> k = markerTypes.iterator() ; k.hasNext() ;){\r
-                       MarkerType markerType = k.next();\r
+               for (MarkerType markerType : markerTypes){\r
                        getTermService().save(markerType);\r
                }\r
        }\r
 \r
        private void saveModifiers() {\r
-\r
-               for (Iterator<Modifier> k = modifiers.values().iterator() ; k.hasNext() ;){\r
-                       Modifier modifier = k.next();\r
+               for (Modifier modifier : modifiers.values() ){\r
                        getTermService().save(modifier);\r
                }\r
        }\r
 \r
        private void saveFeatures() {\r
-               ITermService termService = getTermService();\r
-               \r
-               for (Iterator<Feature> k = features.values().iterator() ; k.hasNext() ;){\r
-                       Feature feature = k.next();\r
-                       termService.save(feature); \r
+               for (Feature feature : features.values() ){\r
+                       getTermService().save(feature);\r
                }\r
        }\r
 \r
@@ -924,7 +909,12 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
                                        if ((++k % modCount) == 0){ logger.info("StateDefinitions handled: " + (k-1));}\r
 \r
                                        String idS = elStateDefinition.getAttributeValue("id");\r
-                                       State state = State.NewInstance();\r
+                                       State state = states.get(idS);\r
+                                       if (state == null){\r
+                                               state = State.NewInstance();\r
+                                       }else{\r
+                                               logger.debug("State duplicate found");\r
+                                       }\r
                                        importRepresentation(elStateDefinition, sddNamespace, state, idS, sddConfig);\r
 \r
                                        //StateData stateData = StateData.NewInstance();\r
@@ -1175,21 +1165,21 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
                                                                if ((++l % modCount) == 0){ logger.info("States handled: " + (l-1));}\r
                                                                ref = elState.getAttributeValue("ref");\r
                                                                State state = states.get(ref);\r
-                                                               if (state!=null) {\r
+                                                               if (state != null) {\r
                                                                        StateData stateData = StateData.NewInstance();\r
                                                                        stateData.setState(state);\r
                                                                        List<Element> elModifiers = elState.getChildren("Modifier", sddNamespace);\r
                                                                        for (Element elModifier : elModifiers){\r
                                                                                ref = elModifier.getAttributeValue("ref");\r
                                                                                Modifier modifier = modifiers.get(ref);\r
-                                                                               if (modifier!=null) {\r
+                                                                               if (modifier != null) {\r
                                                                                        stateData.addModifier(modifier);\r
                                                                                }\r
                                                                        }\r
-                                                               categoricalData.addState(stateData);\r
+                                                                       categoricalData.addState(stateData);\r
+                                                               }\r
+                                                               taxonDescription.addElement(categoricalData);\r
                                                        }\r
-                                                       taxonDescription.addElement(categoricalData);\r
-                                               }\r
                                                }\r
                                                // <Quantitative ref="c2">\r
                                                List<Element> elQuantitatives = elSummaryData.getChildren("Quantitative", sddNamespace);\r