\r
package eu.etaxonomy.cdm.io.reference.endnote.in;\r
\r
-import static eu.etaxonomy.cdm.io.common.ImportHelper.OBLIGATORY;\r
-import static eu.etaxonomy.cdm.io.common.ImportHelper.OVERWRITE;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.HashSet;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Set;\r
-\r
import org.apache.log4j.Logger;\r
-import org.jdom.Content;\r
import org.jdom.Element;\r
import org.jdom.Namespace;\r
-import org.jdom.Text;\r
\r
-import eu.etaxonomy.cdm.common.CdmUtils;\r
-import eu.etaxonomy.cdm.common.ResultWrapper;\r
-import eu.etaxonomy.cdm.common.XmlHelp;\r
import eu.etaxonomy.cdm.io.common.CdmImportBase;\r
-import eu.etaxonomy.cdm.io.common.CdmIoBase;\r
-import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
-import eu.etaxonomy.cdm.io.common.ImportHelper;\r
-import eu.etaxonomy.cdm.io.common.MapWrapper;\r
-import eu.etaxonomy.cdm.io.tcsrdf.CdmSingleAttributeXmlMapperBase;\r
-import eu.etaxonomy.cdm.model.agent.Team;\r
-import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
-import eu.etaxonomy.cdm.model.reference.IGeneric;\r
-import eu.etaxonomy.cdm.model.reference.Reference;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceType;\r
\r
/**\r
* @author a.mueller\r
public abstract class EndNoteImportBase extends CdmImportBase<EndnoteImportConfigurator, EndnoteImportState> {\r
private static final Logger logger = Logger.getLogger(EndNoteImportBase.class);\r
\r
- protected static Namespace nsTcom = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/Common#");\r
- protected static Namespace nsTn = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/TaxonName#");\r
- protected static Namespace nsTgeo = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/GeographicRegion#");\r
- protected static Namespace nsTc = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/TaxonConcept#");\r
- protected static Namespace nsTpub = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/PublicationCitation#");\r
- protected static Namespace nsTpalm = Namespace.getNamespace("http://wp5.e-taxonomy.eu/import/palmae/common");\r
- \r
- protected abstract void doInvoke(EndnoteImportState state);\r
+// protected abstract void doInvoke(EndnoteImportState state);\r
\r
- \r
-// /* (non-Javadoc)\r
-// * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doInvoke(eu.etaxonomy.cdm.io.common.IImportConfigurator, eu.etaxonomy.cdm.api.application.CdmApplicationController, java.util.Map)\r
-// */\r
-// @Override\r
-// protected boolean doInvoke(IImportConfigurator config, \r
-// Map<String, MapWrapper<? extends CdmBase>> stores){ \r
-// TcsXmlImportState state = ((TcsXmlImportConfigurator)config).getState();\r
-// state.setConfig((TcsXmlImportConfigurator)config);\r
-// return doInvoke(state);\r
-// }\r
- \r
- \r
- protected boolean makeStandardMapper(Element parentElement, CdmBase ref, Set<String> omitAttributes, CdmSingleAttributeXmlMapperBase[] classMappers){\r
- if (omitAttributes == null){\r
- omitAttributes = new HashSet<String>();\r
- }\r
- boolean result = true; \r
- for (CdmSingleAttributeXmlMapperBase mapper : classMappers){\r
- Object value = getValue(mapper, parentElement);\r
- //write to destination\r
- if (value != null){\r
- String destinationAttribute = mapper.getDestinationAttribute();\r
- if (! omitAttributes.contains(destinationAttribute)){\r
- result &= ImportHelper.addValue(value, ref, destinationAttribute, mapper.getTypeClass(), OVERWRITE, OBLIGATORY);\r
- }\r
- }\r
- }\r
- return true;\r
- }\r
- \r
- private Object getValue(CdmSingleAttributeXmlMapperBase mapper, Element parentElement){\r
- String sourceAttribute = mapper.getSourceAttribute();\r
- Namespace sourceNamespace = mapper.getSourceNamespace(parentElement);\r
- Element child = parentElement.getChild(sourceAttribute, sourceNamespace);\r
- if (child == null){\r
- return null;\r
- }\r
- if (child.getContentSize() > 1){\r
- logger.warn("Element is not String");\r
- }\r
- Object value = child.getTextTrim();\r
- return value;\r
- }\r
- \r
- protected boolean checkAdditionalContents(Element parentElement, CdmSingleAttributeXmlMapperBase[] classMappers, CdmSingleAttributeXmlMapperBase[] operationalMappers, CdmSingleAttributeXmlMapperBase[] unclearMappers){\r
- List<Content> additionalContentList = new ArrayList<Content>();\r
- List<Content> contentList = parentElement.getContent();\r
- List<CdmSingleAttributeXmlMapperBase> mapperList = new ArrayList<CdmSingleAttributeXmlMapperBase>();\r
- \r
- mapperList.addAll(Arrays.asList(classMappers));\r
- mapperList.addAll(Arrays.asList(operationalMappers));\r
- mapperList.addAll(Arrays.asList(unclearMappers));\r
- \r
- for(Content content: contentList){\r
- boolean contentExists = false;\r
- if (content instanceof Element){\r
- for (CdmSingleAttributeXmlMapperBase mapper : mapperList){\r
- if (mapper.mapsSource(content, parentElement)){\r
- contentExists = true;\r
- break;\r
- }\r
- }\r
- \r
- }else if (content instanceof Text){\r
- //empty Text\r
- if (((Text)content).getTextNormalize().equals("")){\r
- contentExists = true;\r
- }else{\r
- //\r
- }\r
- }\r
- \r
- if (contentExists == false){\r
- additionalContentList.add(content);\r
- }\r
- }\r
- for (Content additionalContent : additionalContentList){\r
- logger.warn("Additional content: " + additionalContent);\r
- }\r
- return (additionalContentList.size() == 0);\r
- }\r
- \r
protected Element getXmlElement(EndnoteImportConfigurator tcsConfig){\r
Element root = tcsConfig.getSourceRoot();\r
\r
\r
return root;\r
}\r
- \r
-// static public boolean checkFirstTwoFunctionElements(List<Object> objList){\r
-// if (! (objList.get(0) instanceof TcsXmlImportConfigurator)){\r
-// logger.error("first method object has wrong type. Must be " + TcsXmlImportConfigurator.class.getSimpleName() + " but is " + (objList.get(0) == null ? "null": objList.get(0).getClass().getSimpleName()));\r
-// return false;\r
-// }\r
-// if (! (objList.get(1) == null) && ! (objList.get(1) instanceof Element)){\r
-// logger.error("first method object has wrong type. Must be " + Element.class.getSimpleName() + " but is " + (objList.get(1) == null ? "null": objList.get(1).getClass().getSimpleName()));\r
-// return false;\r
-// }\r
-// return true;\r
-// }\r
- \r
- \r
- protected boolean testAdditionalElements(Element parentElement, List<String> excludeList){\r
- boolean result = true;\r
- List<Element> list = parentElement.getChildren();\r
- for (Element element : list){\r
- if (! excludeList.contains(element.getName())){\r
- logger.warn("Unknown element (" + element.getName() + ") in parent element (" + parentElement.getName() + ")");\r
- result = false;\r
- }\r
- }\r
- return result;\r
- }\r
- \r
- \r
- protected <T extends IdentifiableEntity> T makeReferenceType(Element element, ReferenceType refType, MapWrapper<? extends T> objectMap, ResultWrapper<Boolean> success){\r
- T result = null;\r
- \r
- String linkType = element.getAttributeValue("linkType");\r
- String ref = element.getAttributeValue("ref");\r
- if(ref == null && linkType == null){\r
- result = (T) ReferenceFactory.newReference(refType);\r
- \r
- if (result != null){\r
- String title = element.getTextNormalize();\r
- result.setTitleCache(title, true);\r
- }\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
- if (result == null){\r
- success.setValue(false);\r
- }\r
- return result;\r
- }\r
- \r
- \r
- protected Reference makeAccordingTo(Element elAccordingTo, MapWrapper<Reference> referenceMap, ResultWrapper<Boolean> success){\r
- Reference result = null;\r
- if (elAccordingTo != null){\r
- String childName = "AccordingToDetailed";\r
- boolean obligatory = false;\r
- Element elAccordingToDetailed = XmlHelp.getSingleChildElement(success, elAccordingTo, childName, elAccordingTo.getNamespace(), obligatory);\r
-\r
- childName = "Simple";\r
- obligatory = true;\r
- Element elSimple = XmlHelp.getSingleChildElement(success, elAccordingTo, childName, elAccordingTo.getNamespace(), obligatory);\r
- \r
- if (elAccordingToDetailed != null){\r
- result = makeAccordingToDetailed(elAccordingToDetailed, referenceMap, success);\r
- }else{\r
- result = ReferenceFactory.newGeneric();\r
- String title = elSimple.getTextNormalize();\r
- result.setTitleCache(title, true);\r
- }\r
- }\r
- return result;\r
- }\r
- \r
- \r
- private Reference makeAccordingToDetailed(Element elAccordingToDetailed, MapWrapper<Reference> referenceMap, ResultWrapper<Boolean> success){\r
- Reference result = null;\r
- Namespace tcsNamespace = elAccordingToDetailed.getNamespace();\r
- if (elAccordingToDetailed != null){\r
- //AuthorTeam\r
- String childName = "AuthorTeam";\r
- boolean obligatory = false;\r
- Element elAuthorTeam = XmlHelp.getSingleChildElement(success, elAccordingToDetailed, childName, tcsNamespace, obligatory);\r
- makeAccordingToAuthorTeam(elAuthorTeam, success);\r
- \r
- //PublishedIn\r
- childName = "PublishedIn";\r
- obligatory = false;\r
- Element elPublishedIn = XmlHelp.getSingleChildElement(success, elAccordingToDetailed, childName, tcsNamespace, obligatory);\r
- result = makeReferenceType(elPublishedIn, ReferenceType.Generic, referenceMap, success);\r
- \r
- //MicroReference\r
- childName = "MicroReference";\r
- obligatory = false;\r
- Element elMicroReference = XmlHelp.getSingleChildElement(success, elAccordingToDetailed, childName, tcsNamespace, obligatory);\r
- String microReference = elMicroReference.getTextNormalize();\r
- if (CdmUtils.Nz(microReference).equals("")){\r
- //TODO\r
- logger.warn("MicroReference not yet implemented for AccordingToDetailed"); \r
- }\r
- }\r
- return result;\r
- }\r
-\r
- private Team makeAccordingToAuthorTeam(Element elAuthorTeam, ResultWrapper<Boolean> succes){\r
- Team result = null;\r
- if (elAuthorTeam != null){\r
- //TODO\r
- logger.warn("AuthorTeam not yet implemented for AccordingToDetailed");\r
- }\r
- return result;\r
- }\r
-\r
-\r
-\r
}\r