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 :

http://dive4elements.wald.intevation.org