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
}\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
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
\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
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
* @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
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
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
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
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
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