Refactored string constants
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / io / redlist / bfnXml / in / BfnXmlImportMetaData.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
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.
8 */
9
10 package eu.etaxonomy.cdm.io.redlist.bfnXml.in;
11
12 import java.util.List;
13
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;
19
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;
27 /**
28 *
29 * @author a.oppermann
30 * @date 04.07.2013
31 *
32 */
33 @Component
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;
39
40 public BfnXmlImportMetaData(){
41 super();
42 }
43
44 @Override
45 public boolean doCheck(BfnXmlImportState state){
46 boolean result = true;
47 //TODO needs to be implemented
48 return result;
49 }
50
51 @Override
52 public void doInvoke(BfnXmlImportState state){
53 logger.warn("start import MetaData...");
54
55 //TODO only dirty quick fix for now
56 state.setFirstClassificationName(state.getConfig().getClassificationName());
57
58 ResultWrapper<Boolean> success = ResultWrapper.NewInstance(true);
59
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");
68
69 Reference<?> sourceReference = ReferenceFactory.newGeneric();
70 sourceReference.setTitle(sourceFileName);
71 TimePeriod parsedTimePeriod = TimePeriodParser.parseString(timeStamp);
72 sourceReference.setDatePublished(parsedTimePeriod);
73 state.setCompleteSourceRef(sourceReference);
74 }
75
76 List<?> contentXML = elDataSet.getContent();
77 Element currentElement = null;
78 for(Object object:contentXML){
79
80 if(object instanceof Element){
81 currentElement = (Element)object;
82
83 if(currentElement.getName().equalsIgnoreCase("METADATEN")){
84
85 TransactionStatus tx = startTransaction();
86
87 String bfnElementName = "METADATEN";
88 @SuppressWarnings("unchecked")
89 List<Element> elMetaDataList = currentElement.getChildren();
90 //for each taxonName
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);
99
100 }
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);
106
107 }
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);
115 }
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);
121
122 }
123
124 }
125
126 logger.warn("end import MetaData ...");
127 commitTransaction(tx);
128
129
130 if (!success.getValue()){
131 state.setUnsuccessfull();
132 }
133 //FIXME: Only take the first RoteListeData Features
134
135 return;
136 }
137 }
138 }
139 return;
140
141 }
142
143 @Override
144 protected boolean isIgnore(BfnXmlImportState state) {
145 return ! state.getConfig().isDoMetaData();
146 }
147
148 }