0
|
1 package de.mpiwg.anteater.xml.impl;
|
|
2
|
|
3 import java.io.InputStream;
|
|
4 import java.util.ArrayList;
|
|
5 import java.util.List;
|
|
6
|
|
7 import org.jdom2.Attribute;
|
|
8 import org.jdom2.DataConversionException;
|
|
9 import org.jdom2.Element;
|
|
10 import org.jdom2.Namespace;
|
|
11
|
|
12 import de.mpiwg.anteater.species.scientific.ScientificName;
|
|
13 import de.mpiwg.anteater.xml.INameFinderParser;
|
|
14
|
|
15 public class GNRDXMLParser extends JDOMParser implements INameFinderParser {
|
|
16
|
|
17 public GNRDXMLParser(String content) {
|
|
18 super(content, false);
|
|
19 }
|
|
20
|
|
21 public GNRDXMLParser(InputStream stream) {
|
|
22 super(stream);
|
|
23 }
|
|
24
|
|
25
|
|
26 /* (non-Javadoc)
|
|
27 * @see de.mpiwg.anteater.xml.impl.INameFinderParser#getStatus()
|
|
28 */
|
|
29 @Override
|
|
30 public String getStatus() {
|
|
31 List<Element> results = executeXPath("//status", null);
|
|
32 if (results.size() > 0) {
|
|
33 Element statusNode = results.get(0);
|
|
34 return stripText(statusNode);
|
|
35 }
|
|
36 return null;
|
|
37 }
|
|
38
|
|
39 /* (non-Javadoc)
|
|
40 * @see de.mpiwg.anteater.xml.impl.INameFinderParser#getTokenURL()
|
|
41 */
|
|
42 @Override
|
|
43 public String getTokenURL() {
|
|
44 List<Element> results = executeXPath("//token_url", null);
|
|
45 if (results.size() > 0) {
|
|
46 Element statusNode = results.get(0);
|
|
47 return stripText(statusNode);
|
|
48 }
|
|
49 return null;
|
|
50 }
|
|
51
|
|
52 @Override
|
|
53 public List<ScientificName> parseScientificNames() {
|
|
54 List<Element> names = executeXPath("/result/names/name", null);
|
|
55
|
|
56 List<ScientificName> scientificNames = new ArrayList<ScientificName>();
|
|
57 for (Element name : names) {
|
|
58 ScientificName scienName = new ScientificName();
|
|
59
|
|
60 Element verbNode = name.getChild("verbatim");
|
|
61 scienName.setReferenceInText(verbNode.getText());
|
|
62
|
|
63 Element identNode = name.getChild("identifiedName");
|
|
64 if (identNode != null)
|
|
65 scienName.setIdentifiedName(identNode.getText());
|
|
66
|
|
67 Element scientNode = name.getChild("scientificName", Namespace.getNamespace("http://rs.tdwg.org/dwc/terms/"));
|
|
68 if (scientNode != null)
|
|
69 scienName.setScientificName(scientNode.getText());
|
|
70
|
|
71 Element offsetNode = name.getChild("offset");
|
|
72 if (offsetNode != null) {
|
|
73 Attribute startAttr = offsetNode.getAttribute("start");
|
|
74 int start = -1;
|
|
75 if (startAttr != null) {
|
|
76 try {
|
|
77 start = startAttr.getIntValue();
|
|
78 } catch (DataConversionException e) {
|
|
79 // TODO Auto-generated catch block
|
|
80 e.printStackTrace();
|
|
81 }
|
|
82 }
|
|
83 if (start > -1) {
|
|
84 scienName.setStart(start);
|
|
85
|
|
86 Attribute endAttr = offsetNode.getAttribute("end");
|
|
87 if (endAttr != null) {
|
|
88 try {
|
|
89 scienName.setLength(endAttr.getIntValue() - start + 1);
|
|
90 } catch (DataConversionException e) {
|
|
91 // TODO Auto-generated catch block
|
|
92 e.printStackTrace();
|
|
93 }
|
|
94 }
|
|
95 }
|
|
96 }
|
|
97
|
|
98 scientificNames.add(scienName);
|
|
99 }
|
|
100
|
|
101 return scientificNames;
|
|
102 }
|
|
103 }
|