TcsXml
authorAndreas Müller <a.mueller@bgbm.org>
Tue, 18 Nov 2008 15:00:45 +0000 (15:00 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Tue, 18 Nov 2008 15:00:45 +0000 (15:00 +0000)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/TcsXmlIoBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/TcsXmlTaxonIO.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/TcsXmlTaxonRelationsIO.java

index 649bcb8556941d7aee8514f94c8fe024f331ef80..ed625a0b75b847da142e76fddca6043dbcd8527d 100644 (file)
@@ -25,10 +25,14 @@ import org.jdom.Namespace;
 import org.jdom.Text;\r
 \r
 \r
+import eu.etaxonomy.cdm.common.ResultWrapper;\r
 import eu.etaxonomy.cdm.io.common.CdmIoBase;\r
 import eu.etaxonomy.cdm.io.common.ImportHelper;\r
+import eu.etaxonomy.cdm.io.common.MapWrapper;\r
 import eu.etaxonomy.cdm.io.tcs.CdmIoXmlMapperBase;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -161,6 +165,39 @@ public abstract class TcsXmlIoBase  extends CdmIoBase {
                }\r
                return result;\r
        }\r
+       \r
+       //\r
+       protected <T extends IdentifiableEntity> T makeReferenceType(Element element, Class<? extends T> clazz, MapWrapper<? extends T> objectMap, ResultWrapper<Boolean> success){\r
+               T result = null;\r
+               String linkType = element.getAttributeValue("linkType");\r
+               String ref = element.getAttributeValue("ref");\r
+               if(ref == null && linkType == null){\r
+                       try {\r
+                               result = clazz.newInstance();\r
+                       } catch (InstantiationException e) {\r
+                               logger.error("Class " + clazz.getSimpleName()+" could not be instantiated. Class = " );\r
+                               e.printStackTrace();\r
+                       } catch (IllegalAccessException e) {\r
+                               logger.error("Constructor of class "+clazz.getSimpleName()+" could not be accessed." );\r
+                               e.printStackTrace();\r
+                       }\r
+                       String title = element.getTextNormalize();\r
+                       result.setTitleCache(title);\r
+               }else if (linkType == null || linkType.equals("local")){\r
+                       //TODO\r
+                       result = objectMap.get(ref);\r
+                       if (result == null){\r
+                               logger.warn("Object (ref = " + ref + ")could not be found in WrapperMap");\r
+                       }\r
+               }else if(linkType.equals("external")){\r
+                       logger.warn("External link types not yet implemented");\r
+               }else if(linkType.equals("other")){\r
+                       logger.warn("Other link types not yet implemented");\r
+               }else{\r
+                       logger.warn("Unknown link type or missing ref");\r
+               }\r
+               return result;\r
+       }\r
 \r
 \r
 \r
index 1bef07c9b92de4f9d1a68ed22802a982da7963a8..490303d4f507fb1b75d436632da24f17b72d426b 100644 (file)
@@ -25,6 +25,10 @@ import eu.etaxonomy.cdm.io.common.IImportConfigurator;
 import eu.etaxonomy.cdm.io.common.ImportHelper;\r
 import eu.etaxonomy.cdm.io.common.MapWrapper;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
+import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
+import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
@@ -109,7 +113,7 @@ public class TcsXmlTaxonIO  extends TcsXmlIoBase implements ICdmIO {
                \r
                logger.info("start make TaxonConcepts ...");\r
                MapWrapper<TaxonBase> taxonMap = (MapWrapper<TaxonBase>)stores.get(ICdmIO.TAXON_STORE);\r
-               MapWrapper<TaxonNameBase> taxonNameMap = (MapWrapper<TaxonNameBase>)stores.get(ICdmIO.TAXONNAME_STORE);\r
+               MapWrapper<TaxonNameBase<?,?>> taxonNameMap = (MapWrapper<TaxonNameBase<?,?>>)stores.get(ICdmIO.TAXONNAME_STORE);\r
                MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)stores.get(ICdmIO.REFERENCE_STORE);\r
                ITaxonService taxonService = config.getCdmAppController().getTaxonService();\r
 \r
@@ -149,7 +153,7 @@ public class TcsXmlTaxonIO  extends TcsXmlIoBase implements ICdmIO {
                        childName = "Name";\r
                        obligatory = true;\r
                        Element elName = XmlHelp.getSingleChildElement(success, elTaxonConcept, childName, tcsNamespace, obligatory);\r
-                       TaxonNameBase<?,?> taxonName = makeName(elName, success);\r
+                       TaxonNameBase<?,?> taxonName = makeName(elName, null, taxonNameMap, success);\r
                        elementList.add(childName.toString());\r
                        \r
                        //TODO how to handle\r
@@ -241,12 +245,40 @@ public class TcsXmlTaxonIO  extends TcsXmlIoBase implements ICdmIO {
         * @param elTaxonRelationships\r
         * @param success\r
         */\r
-       private TaxonNameBase<?, ?> makeName(Element elName, ResultWrapper<Boolean> success){\r
+       private TaxonNameBase<?, ?> makeName(Element elName, NomenclaturalCode code, MapWrapper<? extends TaxonNameBase<?,?>> objectMap, ResultWrapper<Boolean> success){\r
+               TaxonNameBase<?, ?> result = null;\r
                if (elName != null){\r
+                       //scientific\r
+                       try {\r
+                               String strScientific = elName.getAttributeValue("scientific");\r
+                               boolean scientific = Boolean.valueOf(strScientific);\r
+                               if (! scientific){\r
+                                       //TODO\r
+                                       logger.warn("Non scientific names not yet implemented");\r
+                               }\r
+                       } catch (Exception e) {\r
+                               logger.warn("Value for scientific is not boolean");\r
+                       }\r
+                       String language = elName.getAttributeValue("scientific");\r
+                       //TODO\r
+                       //Language\r
+                       if (language != null){\r
+                               logger.warn("language for name not yet implemented");   \r
+                       }\r
+                       //Rank rank = null;\r
+                       //IdentifiableEntity<?> obj = code.getNewTaxonNameInstance(rank);\r
+                       Class<? extends IdentifiableEntity> clazz = (Class<? extends IdentifiableEntity<?>>)NonViralName.class;\r
+                       if (code != null){\r
+                               clazz = code.getCdmClass();\r
+                       }\r
+                       result = (TaxonNameBase<?,?>)makeReferenceType (elName, clazz , objectMap, success);\r
+                               \r
+                       //if ()\r
+                       \r
                        logger.warn("makeName not yet implemented");\r
                        success.setValue(false);\r
                }\r
-               return null;\r
+               return result;\r
        }\r
        \r
        \r
index 761a51e8002eccd7e9bf70848c3dcb2a88cf5d4b..92bfa7606afebb4f48d0703c0626dc627a56da55 100644 (file)
@@ -12,19 +12,14 @@ import org.apache.log4j.Logger;
 import org.jdom.Element;\r
 import org.jdom.Namespace;\r
 \r
-import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
-import eu.etaxonomy.cdm.api.service.INameService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
-import eu.etaxonomy.cdm.common.DoubleResult;\r
 import eu.etaxonomy.cdm.common.ResultWrapper;\r
 import eu.etaxonomy.cdm.common.XmlHelp;\r
-import eu.etaxonomy.cdm.io.common.CdmIoBase;\r
 import eu.etaxonomy.cdm.io.common.ICdmIO;\r
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
 import eu.etaxonomy.cdm.io.common.MapWrapper;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.RelationshipTermBase;\r
-import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
@@ -154,7 +149,8 @@ public class TcsXmlTaxonRelationsIO extends TcsXmlIoBase implements ICdmIO {
                        RelationshipTermBase relType = TcsXmlTransformer.tcsRelationshipType2Relationship(strRelType, isInverse);\r
                        \r
                        //toTaxon\r
-                       TaxonBase toTaxon = getToTaxon(elRelationship, taxonMap, success);\r
+                       boolean isSynonym = relType instanceof SynonymRelationshipType;\r
+                       TaxonBase toTaxon = getToTaxon(elRelationship, taxonMap, isSynonym, success);\r
                        TaxonBase fromTaxon = taxonMap.get(fromTaxonId);\r
                        if (toTaxon != null && fromTaxon != null){\r
                                //reverse\r
@@ -175,7 +171,7 @@ public class TcsXmlTaxonRelationsIO extends TcsXmlIoBase implements ICdmIO {
                                        if (relType instanceof SynonymRelationshipType){\r
                                                SynonymRelationshipType synRelType = (SynonymRelationshipType)relType;\r
                                                if (! (fromTaxon instanceof Synonym )){\r
-                                                       logger.warn("TaxonBase fromTaxon is not of Type 'Synonym'. Relationship is not added.");\r
+                                                       logger.warn(fromTaxonId + " TaxonBase fromTaxon is not of Type 'Synonym'. Relationship is not added.");\r
                                                        success.setValue(false);\r
                                                }else{\r
                                                        Synonym synonym = (Synonym)fromTaxon;\r
@@ -226,7 +222,7 @@ public class TcsXmlTaxonRelationsIO extends TcsXmlIoBase implements ICdmIO {
                return;\r
        }\r
        \r
-       private TaxonBase getToTaxon(Element elTaxonRelationship, MapWrapper<TaxonBase> map, ResultWrapper<Boolean> success){\r
+       private TaxonBase getToTaxon(Element elTaxonRelationship, MapWrapper<TaxonBase> map, boolean isSynonym, ResultWrapper<Boolean> success){\r
                TaxonBase result = null;\r
                if (elTaxonRelationship == null || map == null){\r
                        success.setValue(false);\r
@@ -241,9 +237,13 @@ public class TcsXmlTaxonRelationsIO extends TcsXmlIoBase implements ICdmIO {
                                if (ref != null){\r
                                        result = map.get(ref);\r
                                }else{\r
-                                       String title = elTaxonRelationship.getTextNormalize();\r
+                                       String title = elToTaxonConcept.getTextNormalize();\r
                                        //TODO synonym?\r
-                                       result = Taxon.NewInstance(null, null);\r
+                                       if (isSynonym){\r
+                                               result = Synonym.NewInstance(null, null);\r
+                                       }else{\r
+                                               result = Taxon.NewInstance(null, null); \r
+                                       }\r
                                        result.setTitleCache(title);\r
                                }\r
                        }else{\r