minor
authorKatja Luther <k.luther@bgbm.org>
Mon, 7 Nov 2016 08:42:10 +0000 (09:42 +0100)
committerKatja Luther <k.luther@bgbm.org>
Mon, 7 Nov 2016 08:42:10 +0000 (09:42 +0100)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/SpecimenImportStateBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/UnitAssociationParser.java

index d5bb03ac38eace10a63ec6f9e301b5d3bcfea933..bfed3a3d0d843d4ec2a374510363901a9f427f35 100644 (file)
-// $Id$\r
-/**\r
-* Copyright (C) 2016 EDIT\r
-* European Distributed Institute of Taxonomy\r
-* http://www.e-taxonomy.eu\r
-*\r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-package eu.etaxonomy.cdm.io.specimen;\r
-\r
-import java.util.ArrayList;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-\r
-import org.springframework.transaction.TransactionStatus;\r
-\r
-import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;\r
-import eu.etaxonomy.cdm.io.common.CdmImportBase;\r
-import eu.etaxonomy.cdm.io.common.ImportStateBase;\r
-import eu.etaxonomy.cdm.io.specimen.abcd206.in.SpecimenImportReport;\r
-import eu.etaxonomy.cdm.model.agent.Institution;\r
-import eu.etaxonomy.cdm.model.common.OriginalSourceBase;\r
-import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
-import eu.etaxonomy.cdm.model.occurrence.Collection;\r
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;\r
-import eu.etaxonomy.cdm.model.occurrence.FieldUnit;\r
-import eu.etaxonomy.cdm.model.reference.Reference;\r
-import eu.etaxonomy.cdm.model.taxon.Classification;\r
-\r
-/**\r
- * @author k.luther\r
- * @param <CONFIG>\r
- * @date 15.07.2016\r
- *\r
- */\r
-public class SpecimenImportStateBase<CONFIG extends SpecimenImportConfiguratorBase, STATE extends SpecimenImportStateBase> extends ImportStateBase<CONFIG , CdmImportBase<CONFIG , STATE >>{\r
-\r
-\r
-    /**\r
-     * @param config\r
-     */\r
-    public SpecimenImportStateBase(CONFIG config) {\r
-        super(config);\r
-        // TODO Auto-generated constructor stub\r
-    }\r
-\r
-    private TransactionStatus tx;\r
-\r
-    private ICdmApplicationConfiguration cdmRepository;\r
-    private Classification classification = null;\r
-    private Classification defaultClassification = null;\r
-    private Reference ref = null;\r
-\r
-    private TaxonDescription descriptionGroup = null;\r
-    private DerivedUnit derivedUnitBase;\r
-\r
-    private SpecimenImportReport report;\r
-\r
-    protected SpecimenDataHolder dataHolder;\r
-\r
-    private List<OriginalSourceBase<?>> associationRefs = new ArrayList<OriginalSourceBase<?>>();\r
-    private boolean associationSourcesSet=false;\r
-    private List<OriginalSourceBase<?>> descriptionRefs = new ArrayList<OriginalSourceBase<?>>();\r
-    private boolean descriptionSourcesSet=false;\r
-    private List<OriginalSourceBase<?>> derivedUnitSources = new ArrayList<OriginalSourceBase<?>>();\r
-    private boolean derivedUnitSourcesSet=false;\r
-    private boolean descriptionGroupSet = false;\r
-    protected HashMap<String, Institution> institutions = new HashMap<String, Institution>();\r
-    protected HashMap<String, Collection> collections= new HashMap<String, Collection>();\r
-    private HashMap<String,FieldUnit> fieldUnits = new HashMap<String, FieldUnit>();\r
-\r
-\r
-\r
-\r
-    /* -----Getter/Setter ---*/\r
-\r
-    /**\r
-     * @return the fieldUnits\r
-     */\r
-    public FieldUnit getFieldUnit(String fieldNumber) {\r
-        return fieldUnits.get(fieldNumber);\r
-    }\r
-\r
-    /**\r
-     * @param fieldUnits the fieldUnits to set\r
-     */\r
-    public void setFieldUnit(FieldUnit fieldUnit) {\r
-        this.fieldUnits.put(fieldUnit.getFieldNumber(), fieldUnit);\r
-    }\r
-\r
-    @Override\r
-    public CONFIG getConfig(){\r
-        return super.getConfig();\r
-    }\r
-\r
-    public List<OriginalSourceBase<?>> getAssociationRefs() {\r
-        return associationRefs;\r
-    }\r
-\r
-    public void setAssociationRefs(List<OriginalSourceBase<?>> associationRefs) {\r
-        this.associationRefs = associationRefs;\r
-    }\r
-\r
-    public boolean isAssociationSourcesSet() {\r
-        return associationSourcesSet;\r
-    }\r
-\r
-    public void setAssociationSourcesSet(boolean associationSourcesSet) {\r
-        this.associationSourcesSet = associationSourcesSet;\r
-    }\r
-\r
-    public List<OriginalSourceBase<?>> getDescriptionRefs() {\r
-        return descriptionRefs;\r
-    }\r
-\r
-    public void setDescriptionRefs(List<OriginalSourceBase<?>> descriptionRefs) {\r
-        this.descriptionRefs = descriptionRefs;\r
-    }\r
-\r
-    public boolean isDescriptionSourcesSet() {\r
-        return descriptionSourcesSet;\r
-    }\r
-\r
-    public void setDescriptionSourcesSet(boolean descriptionSourcesSet) {\r
-        this.descriptionSourcesSet = descriptionSourcesSet;\r
-    }\r
-\r
-    public List<OriginalSourceBase<?>> getDerivedUnitSources() {\r
-        return derivedUnitSources;\r
-    }\r
-\r
-    public void setDerivedUnitSources(List<OriginalSourceBase<?>> derivedUnitSources) {\r
-        this.derivedUnitSources = derivedUnitSources;\r
-    }\r
-\r
-    public boolean isDerivedUnitSourcesSet() {\r
-        return derivedUnitSourcesSet;\r
-    }\r
-\r
-    public void setDerivedUnitSourcesSet(boolean derivedUnitSourcesSet) {\r
-        this.derivedUnitSourcesSet = derivedUnitSourcesSet;\r
-    }\r
-\r
-    public boolean isDescriptionGroupSet() {\r
-        return descriptionGroupSet;\r
-    }\r
-\r
-    public void setDescriptionGroupSet(boolean descriptionGroupSet) {\r
-        this.descriptionGroupSet = descriptionGroupSet;\r
-    }\r
-\r
-    public TransactionStatus getTx() {\r
-        return tx;\r
-    }\r
-\r
-    public void setTx(TransactionStatus tx) {\r
-        this.tx = tx;\r
-    }\r
-\r
-    public ICdmApplicationConfiguration getCdmRepository() {\r
-        return cdmRepository;\r
-    }\r
-\r
-    public void setCdmRepository(ICdmApplicationConfiguration cdmRepository) {\r
-        this.cdmRepository = cdmRepository;\r
-    }\r
-\r
-    public Classification getClassification() {\r
-        return classification;\r
-    }\r
-\r
-    public void setClassification(Classification classification) {\r
-        this.classification = classification;\r
-    }\r
-\r
-    public Classification getDefaultClassification() {\r
-        if(defaultClassification==null){\r
-            final String defaultClassificationAbcd = "Default Classification Specimen Import";\r
-            for (Classification classif : cdmRepository.getClassificationService().list(Classification.class, null, null, null, null)){\r
-                if (classif.getTitleCache()!=null && classif.getTitleCache().equalsIgnoreCase(defaultClassificationAbcd)\r
-                        && classif.getCitation()!=null && classif.getCitation().equals(getRef())) {\r
-                    defaultClassification = classif;\r
-                    break;\r
-                }\r
-            }\r
-            if(defaultClassification==null){\r
-                defaultClassification = Classification.NewInstance(defaultClassificationAbcd);\r
-                cdmRepository.getClassificationService().save(defaultClassification);\r
-            }\r
-        }\r
-        return defaultClassification;\r
-    }\r
-\r
-    public void setDefaultClassification(Classification defaultClassification) {\r
-        this.defaultClassification = defaultClassification;\r
-    }\r
-\r
-    public Reference getRef() {\r
-        return ref;\r
-    }\r
-\r
-    public void setRef(Reference ref) {\r
-        this.ref = ref;\r
-    }\r
-\r
-    public TaxonDescription getDescriptionGroup() {\r
-        return descriptionGroup;\r
-    }\r
-\r
-    public void setDescriptionGroup(TaxonDescription descriptionGroup) {\r
-        this.descriptionGroup = descriptionGroup;\r
-    }\r
-\r
-    public DerivedUnit getDerivedUnitBase() {\r
-        return derivedUnitBase;\r
-    }\r
-\r
-    public void setDerivedUnitBase(DerivedUnit derivedUnitBase) {\r
-        this.derivedUnitBase = derivedUnitBase;\r
-    }\r
-\r
-    /**\r
-     * @return the report\r
-     */\r
-    public SpecimenImportReport getReport() {\r
-        if (report == null){\r
-            report = new SpecimenImportReport();\r
-        }\r
-        return report;\r
-    }\r
-\r
-    /**\r
-     * @param report the report to set\r
-     */\r
-    public void setReport(SpecimenImportReport report) {\r
-        this.report = report;\r
-    }\r
-\r
-\r
-    /**\r
-     * @return the dataHolder\r
-     */\r
-    public SpecimenDataHolder getDataHolder() {\r
-        return dataHolder;\r
-    }\r
-\r
-    /**\r
-     * @param dataHolder the dataHolder to set\r
-     */\r
-    public void setDataHolder(SpecimenDataHolder dataHolder) {\r
-        this.dataHolder = dataHolder;\r
-    }\r
-    public void reset() {\r
-        getDataHolder().reset();\r
-       // setDerivedUnitBase(null);\r
-    }\r
-\r
-}\r
+// $Id$
+/**
+* Copyright (C) 2016 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.cdm.io.specimen;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.springframework.transaction.TransactionStatus;
+
+import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
+import eu.etaxonomy.cdm.io.common.CdmImportBase;
+import eu.etaxonomy.cdm.io.common.ImportStateBase;
+import eu.etaxonomy.cdm.io.specimen.abcd206.in.SpecimenImportReport;
+import eu.etaxonomy.cdm.model.agent.Institution;
+import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.occurrence.Collection;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.taxon.Classification;
+
+/**
+ * @author k.luther
+ * @param <CONFIG>
+ * @date 15.07.2016
+ *
+ */
+public class SpecimenImportStateBase<CONFIG extends SpecimenImportConfiguratorBase, STATE extends SpecimenImportStateBase> extends ImportStateBase<CONFIG , CdmImportBase<CONFIG , STATE >>{
+
+
+    /**
+     * @param config
+     */
+    public SpecimenImportStateBase(CONFIG config) {
+        super(config);
+        // TODO Auto-generated constructor stub
+    }
+
+    private TransactionStatus tx;
+
+    private ICdmApplicationConfiguration cdmRepository;
+    private Classification classification = null;
+    private Classification defaultClassification = null;
+    private Reference ref = null;
+
+    private TaxonDescription descriptionGroup = null;
+    private DerivedUnit derivedUnitBase;
+
+    private SpecimenImportReport report;
+
+    protected SpecimenDataHolder dataHolder;
+
+    private List<OriginalSourceBase<?>> associationRefs = new ArrayList<OriginalSourceBase<?>>();
+    private boolean associationSourcesSet=false;
+    private List<OriginalSourceBase<?>> descriptionRefs = new ArrayList<OriginalSourceBase<?>>();
+    private boolean descriptionSourcesSet=false;
+    private List<OriginalSourceBase<?>> derivedUnitSources = new ArrayList<OriginalSourceBase<?>>();
+    private boolean derivedUnitSourcesSet=false;
+    private boolean descriptionGroupSet = false;
+    protected HashMap<String, Institution> institutions = new HashMap<String, Institution>();
+    protected HashMap<String, Collection> collections= new HashMap<String, Collection>();
+    private HashMap<String,FieldUnit> fieldUnits = new HashMap<String, FieldUnit>();
+
+
+
+
+    /* -----Getter/Setter ---*/
+
+    /**
+     * @return the fieldUnits
+     */
+    public FieldUnit getFieldUnit(String fieldNumber) {
+        return fieldUnits.get(fieldNumber);
+    }
+
+    /**
+     * @param fieldUnits the fieldUnits to set
+     */
+    public void setFieldUnit(FieldUnit fieldUnit) {
+        this.fieldUnits.put(fieldUnit.getFieldNumber(), fieldUnit);
+    }
+
+    @Override
+    public CONFIG getConfig(){
+        return super.getConfig();
+    }
+
+    public List<OriginalSourceBase<?>> getAssociationRefs() {
+        return associationRefs;
+    }
+
+    public void setAssociationRefs(List<OriginalSourceBase<?>> associationRefs) {
+        this.associationRefs = associationRefs;
+    }
+
+    public boolean isAssociationSourcesSet() {
+        return associationSourcesSet;
+    }
+
+    public void setAssociationSourcesSet(boolean associationSourcesSet) {
+        this.associationSourcesSet = associationSourcesSet;
+    }
+
+    public List<OriginalSourceBase<?>> getDescriptionRefs() {
+        return descriptionRefs;
+    }
+
+    public void setDescriptionRefs(List<OriginalSourceBase<?>> descriptionRefs) {
+        this.descriptionRefs = descriptionRefs;
+    }
+
+    public boolean isDescriptionSourcesSet() {
+        return descriptionSourcesSet;
+    }
+
+    public void setDescriptionSourcesSet(boolean descriptionSourcesSet) {
+        this.descriptionSourcesSet = descriptionSourcesSet;
+    }
+
+    public List<OriginalSourceBase<?>> getDerivedUnitSources() {
+        return derivedUnitSources;
+    }
+
+    public void setDerivedUnitSources(List<OriginalSourceBase<?>> derivedUnitSources) {
+        this.derivedUnitSources = derivedUnitSources;
+    }
+
+    public boolean isDerivedUnitSourcesSet() {
+        return derivedUnitSourcesSet;
+    }
+
+    public void setDerivedUnitSourcesSet(boolean derivedUnitSourcesSet) {
+        this.derivedUnitSourcesSet = derivedUnitSourcesSet;
+    }
+
+    public boolean isDescriptionGroupSet() {
+        return descriptionGroupSet;
+    }
+
+    public void setDescriptionGroupSet(boolean descriptionGroupSet) {
+        this.descriptionGroupSet = descriptionGroupSet;
+    }
+
+    public TransactionStatus getTx() {
+        return tx;
+    }
+
+    public void setTx(TransactionStatus tx) {
+        this.tx = tx;
+    }
+
+    public ICdmApplicationConfiguration getCdmRepository() {
+        return cdmRepository;
+    }
+
+    public void setCdmRepository(ICdmApplicationConfiguration cdmRepository) {
+        this.cdmRepository = cdmRepository;
+    }
+
+    public Classification getClassification() {
+        return classification;
+    }
+
+    public void setClassification(Classification classification) {
+        this.classification = classification;
+    }
+
+    public Classification getDefaultClassification() {
+        if(defaultClassification==null){
+            final String defaultClassificationAbcd = "Default Classification Specimen Import";
+            for (Classification classif : cdmRepository.getClassificationService().list(Classification.class, null, null, null, null)){
+                if (classif.getTitleCache()!=null && classif.getTitleCache().equalsIgnoreCase(defaultClassificationAbcd)
+                        && classif.getCitation()!=null && classif.getCitation().equals(getRef())) {
+                    defaultClassification = classif;
+                    break;
+                }
+            }
+            if(defaultClassification==null){
+                defaultClassification = Classification.NewInstance(defaultClassificationAbcd);
+                cdmRepository.getClassificationService().save(defaultClassification);
+            }
+        }
+        return defaultClassification;
+    }
+
+    public void setDefaultClassification(Classification defaultClassification) {
+        this.defaultClassification = defaultClassification;
+    }
+
+    public Reference getRef() {
+        return ref;
+    }
+
+    public void setRef(Reference ref) {
+        this.ref = ref;
+    }
+
+    public TaxonDescription getDescriptionGroup() {
+        return descriptionGroup;
+    }
+
+    public void setDescriptionGroup(TaxonDescription descriptionGroup) {
+        this.descriptionGroup = descriptionGroup;
+    }
+
+    public DerivedUnit getDerivedUnitBase() {
+        return derivedUnitBase;
+    }
+
+    public void setDerivedUnitBase(DerivedUnit derivedUnitBase) {
+        this.derivedUnitBase = derivedUnitBase;
+    }
+
+    /**
+     * @return the report
+     */
+    public SpecimenImportReport getReport() {
+        if (report == null){
+            report = new SpecimenImportReport();
+        }
+        return report;
+    }
+
+    /**
+     * @param report the report to set
+     */
+    public void setReport(SpecimenImportReport report) {
+        this.report = report;
+    }
+
+
+    /**
+     * @return the dataHolder
+     */
+    public SpecimenDataHolder getDataHolder() {
+        return dataHolder;
+    }
+
+    /**
+     * @param dataHolder the dataHolder to set
+     */
+    public void setDataHolder(SpecimenDataHolder dataHolder) {
+        this.dataHolder = dataHolder;
+    }
+    public void reset() {
+        getDataHolder().reset();
+       // setDerivedUnitBase(null);
+    }
+
+}
index ad2b2010e6d96d6cb70804d13d4f12f76cf352af..43e4beaf62bca4b2fdcc8e64b5591a6d17c8359b 100644 (file)
-// $Id$\r
-/**\r
-* Copyright (C) 2015 EDIT\r
-* European Distributed Institute of Taxonomy\r
-* http://www.e-taxonomy.eu\r
-*\r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-package eu.etaxonomy.cdm.io.specimen.abcd206.in;\r
-\r
-import java.io.IOException;\r
-import java.io.InputStream;\r
-import java.net.URI;\r
-import java.util.HashSet;\r
-import java.util.Set;\r
-\r
-import org.apache.http.client.ClientProtocolException;\r
-import org.apache.log4j.Logger;\r
-import org.w3c.dom.Element;\r
-\r
-import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;\r
-import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery;\r
-import eu.etaxonomy.cdm.ext.occurrence.bioCase.BioCaseQueryServiceWrapper;\r
-\r
-/**\r
- * @author pplitzner\r
- * @date 16.06.2015\r
- *\r
- */\r
-public class UnitAssociationParser {\r
-\r
-    private static final Logger logger = Logger.getLogger(UnitAssociationParser.class);\r
-\r
-    private final String prefix;\r
-\r
-    private final SpecimenImportReport report;\r
-\r
-    private final ICdmApplicationConfiguration cdmAppController;\r
-\r
-    public UnitAssociationParser(String prefix, SpecimenImportReport report, ICdmApplicationConfiguration cdmAppController) {\r
-        this.prefix = prefix;\r
-        this.report = report;\r
-        this.cdmAppController = cdmAppController;\r
-    }\r
-\r
-    public UnitAssociationWrapper parse(Element unitAssociation){\r
-        if(prefix.equals("abcd:")){\r
-\r
-        }\r
-        else if(prefix.equals("abcd21:")){\r
-\r
-        }\r
-        //unit id\r
-        String unitId = AbcdParseUtility.parseFirstTextContent(unitAssociation.getElementsByTagName(prefix+"UnitID"));\r
-        if(unitId==null){\r
-            unitId = AbcdParseUtility.parseFirstTextContent(unitAssociation.getElementsByTagName(prefix+"AssociatedUnitID"));//abcd 2.0.6\r
-        }\r
-        //institution code\r
-        String institutionCode = AbcdParseUtility.parseFirstTextContent(unitAssociation.getElementsByTagName(prefix+"SourceInstitutionCode"));\r
-        if(institutionCode==null){\r
-            institutionCode = AbcdParseUtility.parseFirstTextContent(unitAssociation.getElementsByTagName(prefix+"AssociatedUnitSourceInstitutionCode"));//abcd 2.0.6\r
-        }\r
-        //institution name\r
-        String institutionName = AbcdParseUtility.parseFirstTextContent(unitAssociation.getElementsByTagName(prefix+"SourceName"));\r
-        if(institutionName==null){\r
-            institutionName = AbcdParseUtility.parseFirstTextContent(unitAssociation.getElementsByTagName(prefix+"AssociatedUnitSourceName"));//abcd 2.0.6\r
-        }\r
-        //data access point\r
-        URI datasetAccessPoint = AbcdParseUtility.parseFirstUri(unitAssociation.getElementsByTagName(prefix+"DatasetAccessPoint"), report);\r
-        if(datasetAccessPoint==null){\r
-            datasetAccessPoint = AbcdParseUtility.parseFirstUri(unitAssociation.getElementsByTagName(prefix+"Comment"), report);//abcd 2.0.6\r
-        }\r
-        //association type\r
-        String associationType = AbcdParseUtility.parseFirstTextContent(unitAssociation.getElementsByTagName(prefix+"AssociationType"));\r
-\r
-        String unableToLoadMessage = String.format("Unable to load unit %s from %s", unitId, datasetAccessPoint);\r
-        if(unitId!=null && datasetAccessPoint!=null){\r
-            BioCaseQueryServiceWrapper serviceWrapper = new BioCaseQueryServiceWrapper();\r
-            Set<String[]> unitIds = new HashSet<String[]>();\r
-            String[] unitIdArray = {unitId};\r
-            unitIds.add(unitIdArray);\r
-            OccurenceQuery query = new OccurenceQuery(unitIds);\r
-            try {\r
-                InputStream inputStream = serviceWrapper.query(query, datasetAccessPoint);\r
-                if(inputStream!=null){\r
-                    UnitAssociationWrapper unitAssociationWrapper = null;\r
-                    try {\r
-                        unitAssociationWrapper = AbcdParseUtility.parseUnitsNodeList(inputStream, report);\r
-                    } catch (Exception e) {\r
-                        String exceptionMessage = "An exception occurred during parsing of associated units!";\r
-                        logger.error(exceptionMessage, e);\r
-                        report.addException(exceptionMessage, e);\r
-                    }\r
-\r
-                    if(unitAssociationWrapper!=null){\r
-                        unitAssociationWrapper.setAssociationType(associationType);\r
-                        if(unitAssociationWrapper.getAssociatedUnits()!=null && unitAssociationWrapper.getAssociatedUnits().getLength()>1){\r
-                            String moreThanOneUnitFoundMessage = String.format("More than one unit was found for unit association to %s", unitId);\r
-                            logger.warn(moreThanOneUnitFoundMessage);\r
-                            report.addInfoMessage(moreThanOneUnitFoundMessage);\r
-                        }\r
-                    }\r
-                    return unitAssociationWrapper;\r
-                }\r
-                else{\r
-                    logger.error(unableToLoadMessage);\r
-                    report.addInfoMessage(unableToLoadMessage);\r
-                }\r
-            } catch (ClientProtocolException e) {\r
-                logger.error(unableToLoadMessage, e);\r
-                report.addInfoMessage(unableToLoadMessage);\r
-            } catch (IOException e) {\r
-                logger.error(unableToLoadMessage, e);\r
-                report.addInfoMessage(unableToLoadMessage);\r
-            }\r
-        }\r
-        else{\r
-            report.addInfoMessage(unableToLoadMessage);\r
-        }\r
-        return null;\r
-    }\r
-\r
-    public UnitAssociationWrapper parseSiblings(String unitID, URI datasetAccessPoint){\r
-\r
-        String unableToLoadMessage = String.format("Unable to load unit %s from %s", unitID, datasetAccessPoint);\r
-        if(unitID!=null && datasetAccessPoint!=null){\r
-            BioCaseQueryServiceWrapper serviceWrapper = new BioCaseQueryServiceWrapper();\r
-\r
-\r
-            OccurenceQuery query = new OccurenceQuery(unitID);\r
-\r
-                InputStream inputStream;\r
-                try {\r
-                    inputStream = serviceWrapper.query(query, datasetAccessPoint);\r
-\r
-                    if(inputStream!=null){\r
-                    UnitAssociationWrapper unitAssociationWrapper = null;\r
-                    try {\r
-                        unitAssociationWrapper = AbcdParseUtility.parseUnitsNodeList(inputStream, report);\r
-                    } catch (Exception e) {\r
-                        String exceptionMessage = "An exception occurred during parsing of associated units!";\r
-                        logger.error(exceptionMessage, e);\r
-                        report.addException(exceptionMessage, e);\r
-                    }\r
-\r
-                    if(unitAssociationWrapper!=null){\r
-\r
-                        if(unitAssociationWrapper.getAssociatedUnits()!=null && unitAssociationWrapper.getAssociatedUnits().getLength()>1){\r
-                            String moreThanOneUnitFoundMessage = String.format("More than one unit was found for unit association to %s", unitID);\r
-                            logger.warn(moreThanOneUnitFoundMessage);\r
-                            report.addInfoMessage(moreThanOneUnitFoundMessage);\r
-                        }\r
-                    }\r
-                    return unitAssociationWrapper;\r
-                    }\r
-                    else{\r
-                        logger.error(unableToLoadMessage);\r
-                        report.addInfoMessage(unableToLoadMessage);\r
-                    }\r
-                } catch (ClientProtocolException e1) {\r
-                    // TODO Auto-generated catch block\r
-                    e1.printStackTrace();\r
-                } catch (IOException e1) {\r
-                    // TODO Auto-generated catch block\r
-                    e1.printStackTrace();\r
-                }\r
-\r
-            }\r
-            else{\r
-                report.addInfoMessage(unableToLoadMessage);\r
-            }\r
-        return null;\r
-    }\r
-\r
-}\r
+// $Id$
+/**
+* Copyright (C) 2015 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.cdm.io.specimen.abcd206.in;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.http.client.ClientProtocolException;
+import org.apache.log4j.Logger;
+import org.w3c.dom.Element;
+
+import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
+import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery;
+import eu.etaxonomy.cdm.ext.occurrence.bioCase.BioCaseQueryServiceWrapper;
+
+/**
+ * @author pplitzner
+ * @date 16.06.2015
+ *
+ */
+public class UnitAssociationParser {
+
+    private static final Logger logger = Logger.getLogger(UnitAssociationParser.class);
+
+    private final String prefix;
+
+    private final SpecimenImportReport report;
+
+    private final ICdmApplicationConfiguration cdmAppController;
+
+    public UnitAssociationParser(String prefix, SpecimenImportReport report, ICdmApplicationConfiguration cdmAppController) {
+        this.prefix = prefix;
+        this.report = report;
+        this.cdmAppController = cdmAppController;
+    }
+
+    public UnitAssociationWrapper parse(Element unitAssociation){
+        if(prefix.equals("abcd:")){
+
+        }
+        else if(prefix.equals("abcd21:")){
+
+        }
+        //unit id
+        String unitId = AbcdParseUtility.parseFirstTextContent(unitAssociation.getElementsByTagName(prefix+"UnitID"));
+        if(unitId==null){
+            unitId = AbcdParseUtility.parseFirstTextContent(unitAssociation.getElementsByTagName(prefix+"AssociatedUnitID"));//abcd 2.0.6
+        }
+        //institution code
+        String institutionCode = AbcdParseUtility.parseFirstTextContent(unitAssociation.getElementsByTagName(prefix+"SourceInstitutionCode"));
+        if(institutionCode==null){
+            institutionCode = AbcdParseUtility.parseFirstTextContent(unitAssociation.getElementsByTagName(prefix+"AssociatedUnitSourceInstitutionCode"));//abcd 2.0.6
+        }
+        //institution name
+        String institutionName = AbcdParseUtility.parseFirstTextContent(unitAssociation.getElementsByTagName(prefix+"SourceName"));
+        if(institutionName==null){
+            institutionName = AbcdParseUtility.parseFirstTextContent(unitAssociation.getElementsByTagName(prefix+"AssociatedUnitSourceName"));//abcd 2.0.6
+        }
+        //data access point
+        URI datasetAccessPoint = AbcdParseUtility.parseFirstUri(unitAssociation.getElementsByTagName(prefix+"DatasetAccessPoint"), report);
+        if(datasetAccessPoint==null){
+            datasetAccessPoint = AbcdParseUtility.parseFirstUri(unitAssociation.getElementsByTagName(prefix+"Comment"), report);//abcd 2.0.6
+        }
+        //association type
+        String associationType = AbcdParseUtility.parseFirstTextContent(unitAssociation.getElementsByTagName(prefix+"AssociationType"));
+
+        String unableToLoadMessage = String.format("Unable to load unit %s from %s", unitId, datasetAccessPoint);
+        if(unitId!=null && datasetAccessPoint!=null){
+            BioCaseQueryServiceWrapper serviceWrapper = new BioCaseQueryServiceWrapper();
+            Set<String[]> unitIds = new HashSet<String[]>();
+            String[] unitIdArray = {unitId};
+            unitIds.add(unitIdArray);
+            OccurenceQuery query = new OccurenceQuery(unitIds);
+            try {
+                InputStream inputStream = serviceWrapper.query(query, datasetAccessPoint);
+                if(inputStream!=null){
+                    UnitAssociationWrapper unitAssociationWrapper = null;
+                    try {
+                        unitAssociationWrapper = AbcdParseUtility.parseUnitsNodeList(inputStream, report);
+                    } catch (Exception e) {
+                        String exceptionMessage = "An exception occurred during parsing of associated units!";
+                        logger.error(exceptionMessage, e);
+                        report.addException(exceptionMessage, e);
+                    }
+
+                    if(unitAssociationWrapper!=null){
+                        unitAssociationWrapper.setAssociationType(associationType);
+                        if(unitAssociationWrapper.getAssociatedUnits()!=null && unitAssociationWrapper.getAssociatedUnits().getLength()>1){
+                            String moreThanOneUnitFoundMessage = String.format("More than one unit was found for unit association to %s", unitId);
+                            logger.warn(moreThanOneUnitFoundMessage);
+                            report.addInfoMessage(moreThanOneUnitFoundMessage);
+                        }
+                    }
+                    return unitAssociationWrapper;
+                }
+                else{
+                    logger.error(unableToLoadMessage);
+                    report.addInfoMessage(unableToLoadMessage);
+                }
+            } catch (ClientProtocolException e) {
+                logger.error(unableToLoadMessage, e);
+                report.addInfoMessage(unableToLoadMessage);
+            } catch (IOException e) {
+                logger.error(unableToLoadMessage, e);
+                report.addInfoMessage(unableToLoadMessage);
+            }
+        }
+        else{
+            report.addInfoMessage(unableToLoadMessage);
+        }
+        return null;
+    }
+
+    public UnitAssociationWrapper parseSiblings(String unitID, URI datasetAccessPoint){
+
+        String unableToLoadMessage = String.format("Unable to load unit %s from %s", unitID, datasetAccessPoint);
+        if(unitID!=null && datasetAccessPoint!=null){
+            BioCaseQueryServiceWrapper serviceWrapper = new BioCaseQueryServiceWrapper();
+
+
+            OccurenceQuery query = new OccurenceQuery(unitID);
+
+                InputStream inputStream;
+                try {
+                    inputStream = serviceWrapper.query(query, datasetAccessPoint);
+
+                    if(inputStream!=null){
+                    UnitAssociationWrapper unitAssociationWrapper = null;
+                    try {
+                        unitAssociationWrapper = AbcdParseUtility.parseUnitsNodeList(inputStream, report);
+                    } catch (Exception e) {
+                        String exceptionMessage = "An exception occurred during parsing of associated units!";
+                        logger.error(exceptionMessage, e);
+                        report.addException(exceptionMessage, e);
+                    }
+
+                    if(unitAssociationWrapper!=null){
+
+                        if(unitAssociationWrapper.getAssociatedUnits()!=null && unitAssociationWrapper.getAssociatedUnits().getLength()>1){
+                            String moreThanOneUnitFoundMessage = String.format("More than one unit was found for unit association to %s", unitID);
+                            logger.warn(moreThanOneUnitFoundMessage);
+                            report.addInfoMessage(moreThanOneUnitFoundMessage);
+                        }
+                    }
+                    return unitAssociationWrapper;
+                    }
+                    else{
+                        logger.error(unableToLoadMessage);
+                        report.addInfoMessage(unableToLoadMessage);
+                    }
+                } catch (ClientProtocolException e1) {
+                    // TODO Auto-generated catch block
+                    e1.printStackTrace();
+                } catch (IOException e1) {
+                    // TODO Auto-generated catch block
+                    e1.printStackTrace();
+                }
+
+            }
+            else{
+                report.addInfoMessage(unableToLoadMessage);
+            }
+        return null;
+    }
+
+}