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

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