Mercurial > dive4elements > river
comparison flys-client/src/main/java/de/intevation/flys/client/server/GCServiceImpl.java @ 1409:ec6e4dad1279
Read and display all FLYS relevant information of Capabilities documents.
flys-client/trunk@3296 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 21 Nov 2011 18:15:44 +0000 |
parents | 5b5a20e4c4e5 |
children | 63be3137abac |
comparison
equal
deleted
inserted
replaced
1408:5b5a20e4c4e5 | 1409:ec6e4dad1279 |
---|---|
9 import javax.xml.xpath.XPathConstants; | 9 import javax.xml.xpath.XPathConstants; |
10 | 10 |
11 import com.google.gwt.user.server.rpc.RemoteServiceServlet; | 11 import com.google.gwt.user.server.rpc.RemoteServiceServlet; |
12 | 12 |
13 import org.w3c.dom.Document; | 13 import org.w3c.dom.Document; |
14 import org.w3c.dom.Node; | |
14 | 15 |
15 import org.apache.log4j.Logger; | 16 import org.apache.log4j.Logger; |
16 | 17 |
17 import de.intevation.artifacts.common.utils.XMLUtils; | 18 import de.intevation.artifacts.common.utils.XMLUtils; |
18 | 19 |
19 import de.intevation.flys.client.shared.exceptions.ServerException; | 20 import de.intevation.flys.client.shared.exceptions.ServerException; |
20 import de.intevation.flys.client.shared.model.Capabilities; | 21 import de.intevation.flys.client.shared.model.Capabilities; |
22 import de.intevation.flys.client.shared.model.ContactInformation; | |
21 import de.intevation.flys.client.client.services.GCService; | 23 import de.intevation.flys.client.client.services.GCService; |
22 | 24 |
23 | 25 |
24 /** | 26 /** |
25 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 27 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
35 "error_gc_doc_not_valid"; | 37 "error_gc_doc_not_valid"; |
36 | 38 |
37 public static final String ERR_MALFORMED_URL = | 39 public static final String ERR_MALFORMED_URL = |
38 "error_malformed_url"; | 40 "error_malformed_url"; |
39 | 41 |
42 public static final String XPATH_TITLE = | |
43 "/WMS_Capabilities/Service/Title/text()"; | |
44 | |
45 public static final String XPATH_ONLINE_RESOURCE = | |
46 "/WMS_Capabilities/Service/OnlineResource/@href"; | |
47 | |
48 public static final String XPATH_CONTACT_INFORMATION = | |
49 "/WMS_Capabilities/Service/ContactInformation"; | |
50 | |
51 public static final String XPATH_CI_PERSON = | |
52 "ContactPersonPrimary/ContactPerson/text()"; | |
53 | |
54 public static final String XPATH_CI_ORGANIZATION = | |
55 "ContactPersonPrimary/ContactOrganization/text()"; | |
56 | |
57 public static final String XPATH_CI_ADDRESS = | |
58 "ContactAddress/Address/text()"; | |
59 | |
60 public static final String XPATH_CI_CITY = | |
61 "ContactAddress/City/text()"; | |
62 | |
63 public static final String XPATH_CI_POSTCODE = | |
64 "ContactAddress/PostCode/text()"; | |
65 | |
66 public static final String XPATH_CI_PHONE = | |
67 "ContactVoiceTelephone/text()"; | |
68 | |
69 public static final String XPATH_CI_EMAIL = | |
70 "ContactElectronicMailAddress/text()"; | |
71 | |
40 public static final String XPATH_FEES = | 72 public static final String XPATH_FEES = |
41 "/WMS_Capabilities/Service/Fees/text()"; | 73 "/WMS_Capabilities/Service/Fees/text()"; |
42 | 74 |
43 public static final String XPATH_ACCESS_CONSTRAINTS = | 75 public static final String XPATH_ACCESS_CONSTRAINTS = |
44 "/WMS_Capabilities/Service/AccessConstraints/text()"; | 76 "/WMS_Capabilities/Service/AccessConstraints/text()"; |
85 | 117 |
86 if (doc == null) { | 118 if (doc == null) { |
87 throw new ServerException(ERR_GC_DOC_NOT_VALID); | 119 throw new ServerException(ERR_GC_DOC_NOT_VALID); |
88 } | 120 } |
89 | 121 |
122 String title = (String) XMLUtils.xpath( | |
123 doc, | |
124 XPATH_TITLE, | |
125 XPathConstants.STRING); | |
126 | |
127 String onlineResource = (String) XMLUtils.xpath( | |
128 doc, | |
129 XPATH_ONLINE_RESOURCE, | |
130 XPathConstants.STRING); | |
131 | |
90 String fees = (String) XMLUtils.xpath( | 132 String fees = (String) XMLUtils.xpath( |
91 doc, | 133 doc, |
92 XPATH_FEES, | 134 XPATH_FEES, |
93 XPathConstants.STRING); | 135 XPathConstants.STRING); |
94 | 136 |
95 String accessConstraints = (String) XMLUtils.xpath( | 137 String accessConstraints = (String) XMLUtils.xpath( |
96 doc, | 138 doc, |
97 XPATH_ACCESS_CONSTRAINTS, | 139 XPATH_ACCESS_CONSTRAINTS, |
98 XPathConstants.STRING); | 140 XPathConstants.STRING); |
141 | |
142 Node contactInformation = (Node) XMLUtils.xpath( | |
143 doc, | |
144 XPATH_CONTACT_INFORMATION, | |
145 XPathConstants.NODE); | |
146 | |
147 ContactInformation ci = parseContactInformation(contactInformation); | |
99 | 148 |
100 logger.debug("Found fees: " + fees); | 149 logger.debug("Found fees: " + fees); |
101 logger.debug("Found access constraints: " + accessConstraints); | 150 logger.debug("Found access constraints: " + accessConstraints); |
102 | 151 |
103 // TODO PARSE LAYERS | 152 // TODO PARSE LAYERS |
104 | 153 |
105 return new Capabilities(fees, accessConstraints, null); | 154 return new Capabilities( |
155 title, | |
156 onlineResource, | |
157 ci, | |
158 fees, | |
159 accessConstraints, | |
160 null); | |
161 } | |
162 | |
163 | |
164 protected ContactInformation parseContactInformation(Node node) { | |
165 String person = (String) XMLUtils.xpath( | |
166 node, | |
167 XPATH_CI_PERSON, | |
168 XPathConstants.STRING); | |
169 | |
170 String organization = (String) XMLUtils.xpath( | |
171 node, | |
172 XPATH_CI_ORGANIZATION, | |
173 XPathConstants.STRING); | |
174 | |
175 String address = (String) XMLUtils.xpath( | |
176 node, | |
177 XPATH_CI_ADDRESS, | |
178 XPathConstants.STRING); | |
179 | |
180 String postcode = (String) XMLUtils.xpath( | |
181 node, | |
182 XPATH_CI_POSTCODE, | |
183 XPathConstants.STRING); | |
184 | |
185 String city = (String) XMLUtils.xpath( | |
186 node, | |
187 XPATH_CI_CITY, | |
188 XPathConstants.STRING); | |
189 | |
190 String phone = (String) XMLUtils.xpath( | |
191 node, | |
192 XPATH_CI_PHONE, | |
193 XPathConstants.STRING); | |
194 | |
195 String email = (String) XMLUtils.xpath( | |
196 node, | |
197 XPATH_CI_EMAIL, | |
198 XPathConstants.STRING); | |
199 | |
200 ContactInformation ci = new ContactInformation(); | |
201 ci.setPerson(person); | |
202 ci.setOrganization(organization); | |
203 ci.setAddress(address); | |
204 ci.setPostcode(postcode); | |
205 ci.setCity(city); | |
206 ci.setPhone(phone); | |
207 ci.setEmail(email); | |
208 | |
209 return ci; | |
106 } | 210 } |
107 } | 211 } |
108 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 212 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |