2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.io
.redlist
.bfnXml
.in
;
12 import java
.util
.List
;
14 import org
.apache
.log4j
.Logger
;
15 import org
.jdom
.Element
;
16 import org
.jdom
.Namespace
;
17 import org
.springframework
.stereotype
.Component
;
18 import org
.springframework
.transaction
.TransactionStatus
;
20 import eu
.etaxonomy
.cdm
.common
.ResultWrapper
;
21 import eu
.etaxonomy
.cdm
.io
.common
.ICdmIO
;
22 import eu
.etaxonomy
.cdm
.io
.redlist
.bfnXml
.BfnXmlConstants
;
23 import eu
.etaxonomy
.cdm
.model
.common
.TimePeriod
;
24 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
25 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
26 import eu
.etaxonomy
.cdm
.strategy
.parser
.TimePeriodParser
;
34 public class BfnXmlImportMetaData
extends BfnXmlImportBase
implements ICdmIO
<BfnXmlImportState
> {
35 private static final Logger logger
= Logger
.getLogger(BfnXmlImportMetaData
.class);
36 private String sourceFileName
;
37 private String debVersion
;
38 private String timeStamp
;
40 public BfnXmlImportMetaData(){
45 public boolean doCheck(BfnXmlImportState state
){
46 boolean result
= true;
47 //TODO needs to be implemented
52 public void doInvoke(BfnXmlImportState state
){
53 logger
.warn("start import MetaData...");
55 //TODO only dirty quick fix for now
56 state
.setFirstClassificationName(state
.getConfig().getClassificationName());
58 ResultWrapper
<Boolean
> success
= ResultWrapper
.NewInstance(true);
60 BfnXmlImportConfigurator config
= state
.getConfig();
61 Element elDataSet
= getDataSetElement(config
);
62 Namespace bfnNamespace
= config
.getBfnXmlNamespace();
63 //create complete source object
64 if(elDataSet
.getName().equalsIgnoreCase(BfnXmlConstants
.EL_DEB_EXPORT
)){
65 sourceFileName
= elDataSet
.getAttributeValue("source");
66 debVersion
= elDataSet
.getAttributeValue("debversion");
67 timeStamp
= elDataSet
.getAttributeValue("timestamp");
69 Reference
<?
> sourceReference
= ReferenceFactory
.newGeneric();
70 sourceReference
.setTitle(sourceFileName
);
71 TimePeriod parsedTimePeriod
= TimePeriodParser
.parseString(timeStamp
);
72 sourceReference
.setDatePublished(parsedTimePeriod
);
73 state
.setCompleteSourceRef(sourceReference
);
76 List
<?
> contentXML
= elDataSet
.getContent();
77 Element currentElement
= null;
78 for(Object object
:contentXML
){
80 if(object
instanceof Element
){
81 currentElement
= (Element
)object
;
83 if(currentElement
.getName().equalsIgnoreCase("METADATEN")){
85 TransactionStatus tx
= startTransaction();
87 String bfnElementName
= "METADATEN";
88 @SuppressWarnings("unchecked")
89 List
<Element
> elMetaDataList
= currentElement
.getChildren();
91 for (Element elMetaData
: elMetaDataList
){
92 if( elMetaData
.getAttributeValue(BfnXmlConstants
.ATT_STANDARDNAME
).equalsIgnoreCase("KurzLit_A")){
93 @SuppressWarnings("unchecked")
94 List
<Element
> children
= elMetaData
.getChildren();
95 String kurzlitA
= children
.get(0).getTextNormalize();
96 Reference
<?
> sourceReference
= ReferenceFactory
.newGeneric();
97 sourceReference
.setTitle(kurzlitA
);
98 state
.setFirstListSecRef(sourceReference
);
101 else if( elMetaData
.getAttributeValue(BfnXmlConstants
.ATT_STANDARDNAME
).equalsIgnoreCase("Klassifikation_A")){
102 @SuppressWarnings("unchecked")
103 List
<Element
> children
= elMetaData
.getChildren();
104 String klassifikation_A
= children
.get(0).getTextNormalize();
105 state
.setFirstClassificationName(klassifikation_A
);
108 else if( elMetaData
.getAttributeValue(BfnXmlConstants
.ATT_STANDARDNAME
).equalsIgnoreCase("KurzLit_B")){
109 @SuppressWarnings("unchecked")
110 List
<Element
> children
= elMetaData
.getChildren();
111 String kurzlitB
= children
.get(0).getTextNormalize();
112 Reference
<?
> sourceReference
= ReferenceFactory
.newGeneric();
113 sourceReference
.setTitle(kurzlitB
);
114 state
.setSecondListSecRef(sourceReference
);
116 else if( elMetaData
.getAttributeValue(BfnXmlConstants
.ATT_STANDARDNAME
).equalsIgnoreCase("Klassifikation_B")){
117 @SuppressWarnings("unchecked")
118 List
<Element
> children
= elMetaData
.getChildren();
119 String klassifikation_B
= children
.get(0).getTextNormalize();
120 state
.setSecondClassificationName(klassifikation_B
);
126 logger
.warn("end import MetaData ...");
127 commitTransaction(tx
);
130 if (!success
.getValue()){
131 state
.setUnsuccessfull();
133 //FIXME: Only take the first RoteListeData Features
144 protected boolean isIgnore(BfnXmlImportState state
) {
145 return ! state
.getConfig().isDoMetaData();