Mercurial > hg > anteater
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 } |