Project

General

Profile

Download (4.89 KB) Statistics
| Branch: | Revision:
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
}
(5-5/8)