comparison src/de/mpiwg/anteater/xml/impl/GNRDXMLParser.java @ 0:036535fcd179

anteater
author jdamerow
date Fri, 14 Sep 2012 10:30:43 +0200
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:036535fcd179
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 }