Mercurial > hg > anteater
comparison src/de/mpiwg/anteater/xml/impl/EventXMLManager.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.File; | |
4 import java.io.InputStream; | |
5 import java.util.List; | |
6 | |
7 import org.jdom2.Attribute; | |
8 import org.jdom2.Element; | |
9 | |
10 import de.mpiwg.anteater.events.Applicant; | |
11 import de.mpiwg.anteater.events.Location; | |
12 import de.mpiwg.anteater.events.ResearchEvent; | |
13 import de.mpiwg.anteater.events.Species; | |
14 import de.mpiwg.anteater.places.Place; | |
15 | |
16 public class EventXMLManager extends JDOMParser { | |
17 | |
18 private String filepath; | |
19 | |
20 public EventXMLManager(String filepath) { | |
21 super(); | |
22 this.filepath = filepath; | |
23 | |
24 File resultFile = new File(filepath); | |
25 if (resultFile.exists()) | |
26 init(filepath); | |
27 else { | |
28 InputStream stream = getClass().getResourceAsStream( | |
29 "templates/eventsFile.xml"); | |
30 init(stream); | |
31 } | |
32 } | |
33 | |
34 public void addEvent(ResearchEvent event) { | |
35 | |
36 Element eventNode = new Element("event"); | |
37 File file = new File(event.getTextInformation().getFilepath()); | |
38 eventNode.setAttribute(new Attribute("text", file.getName())); | |
39 eventNode.setAttribute(new Attribute("date_filed", event.getDate())); | |
40 | |
41 Element applicantsNode = new Element("applicants"); | |
42 eventNode.addContent(applicantsNode); | |
43 | |
44 // add applicants | |
45 for (Applicant applicant : event.getApplicants()) { | |
46 Element applicantNode = new Element("applicant"); | |
47 applicantsNode.addContent(applicantNode); | |
48 | |
49 // name | |
50 Element name = new Element("name"); | |
51 applicantNode.addContent(name); | |
52 name.setText(applicant.getApplicant().getReferenceInText()); | |
53 | |
54 // appliant institution | |
55 Element appInstNode = new Element("applicant_institutions"); | |
56 applicantNode.addContent(appInstNode); | |
57 | |
58 for (Location location : applicant.getApplicantInstitution()) { | |
59 Element appInst = new Element("applicant_institution"); | |
60 appInstNode.addContent(appInst); | |
61 | |
62 createPlace(location, appInst); | |
63 } | |
64 | |
65 Element appLocs = new Element("applicant_locations"); | |
66 applicantNode.addContent(appLocs); | |
67 | |
68 for (Location location : applicant.getLocation()) { | |
69 Element appLoc = new Element("applicant_locations"); | |
70 appLocs.addContent(appLoc); | |
71 | |
72 createPlace(location, appLoc); | |
73 } | |
74 } | |
75 | |
76 Element researchLocsNode = new Element("research_locations"); | |
77 eventNode.addContent(researchLocsNode); | |
78 | |
79 // add research location | |
80 for (Location location : event.getResearchLocations()) { | |
81 Element researchLoc = new Element("research_location"); | |
82 researchLocsNode.addContent(researchLoc); | |
83 | |
84 createPlace(location, researchLoc); | |
85 } | |
86 | |
87 Element speciesNode = new Element("researched_species"); | |
88 eventNode.addContent(speciesNode); | |
89 // add species | |
90 for (Species species : event.getResearchedSpecies()) { | |
91 Element spNode = new Element("species"); | |
92 speciesNode.addContent(spNode); | |
93 | |
94 spNode.setText(species.getSpeciesName().getReferenceInText()); | |
95 spNode.setAttribute(new Attribute("identified_name", species.getSpeciesName().getIdentifiedName())); | |
96 } | |
97 | |
98 this.addElementToDoc(eventNode, "/events"); | |
99 } | |
100 | |
101 public void createPlace(Location location, Element parent) { | |
102 Element instname = new Element("name"); | |
103 instname.setText(location.getLocation().getReferenceInText()); | |
104 parent.addContent(instname); | |
105 | |
106 for (Place place : location.getLocation().getPlaces()) { | |
107 Element placeInfo = new Element("place_information"); | |
108 parent.addContent(placeInfo); | |
109 | |
110 placeInfo.setAttribute(new Attribute("type", place.getType())); | |
111 placeInfo.setText(place.getName()); | |
112 placeInfo.setAttribute(new Attribute("woeId", place.getWoeId())); | |
113 placeInfo.setAttribute(new Attribute("latitude", place.getLatitude() + "")); | |
114 placeInfo.setAttribute(new Attribute("longitude", place.getLongitude() + "")); | |
115 | |
116 } | |
117 } | |
118 | |
119 private void addElementToDoc(Element element, String xpath) { | |
120 | |
121 List<Element> nodes = executeXPath(xpath, null); | |
122 | |
123 if (nodes != null && nodes.size() > 0) { | |
124 nodes.get(0).addContent(element); | |
125 } | |
126 | |
127 save(filepath, false); | |
128 } | |
129 } |