annotate flys-client/src/main/java/de/intevation/flys/client/server/CapabilitiesParser.java @ 1487:ea2aae01e7c4

Improved CapabilitiesParser to test WMS using its main() method. flys-client/trunk@3565 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 02 Jan 2012 14:42:59 +0000
parents 42d6cf6e10b7
children 23ffee639f7c
rev   line source
1417
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.server;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import java.io.InputStream;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4 import java.io.IOException;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5 import java.net.MalformedURLException;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import java.net.URL;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 import java.net.URLConnection;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8 import java.util.ArrayList;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 import java.util.List;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10 import java.util.regex.Matcher;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import java.util.regex.Pattern;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import javax.xml.xpath.XPathConstants;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import org.w3c.dom.Document;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 import org.w3c.dom.Node;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 import org.w3c.dom.NodeList;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 import org.apache.log4j.Logger;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 import de.intevation.artifacts.common.utils.XMLUtils;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 import de.intevation.flys.client.shared.exceptions.ServerException;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 import de.intevation.flys.client.shared.model.Capabilities;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 import de.intevation.flys.client.shared.model.ContactInformation;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 import de.intevation.flys.client.shared.model.WMSLayer;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 public class CapabilitiesParser {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 private static final Logger logger =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 Logger.getLogger(CapabilitiesParser.class);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 public static final String ERR_GC_REQUEST_FAILED =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 "error_gc_req_failed";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 public static final String ERR_GC_DOC_NOT_VALID =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 "error_gc_doc_not_valid";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 public static final String ERR_MALFORMED_URL =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 "error_malformed_url";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 public static final String XPATH_WMS_CAPS =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 "/WMS_Capabilities";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 public static final String XPATH_WMT_CAPS =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 "/WMT_MS_Capabilities";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 public static final String XPATH_TITLE =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 "Service/Title/text()";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 public static final String XPATH_ONLINE_RESOURCE =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 "Service/OnlineResource/@href";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 public static final String XPATH_CONTACT_INFORMATION =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 "Service/ContactInformation";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 public static final String XPATH_CI_PERSON =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 "ContactPersonPrimary/ContactPerson/text()";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 public static final String XPATH_CI_ORGANIZATION =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 "ContactPersonPrimary/ContactOrganization/text()";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 public static final String XPATH_CI_ADDRESS =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 "ContactAddress/Address/text()";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 public static final String XPATH_CI_CITY =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 "ContactAddress/City/text()";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 public static final String XPATH_CI_POSTCODE =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 "ContactAddress/PostCode/text()";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 public static final String XPATH_CI_PHONE =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 "ContactVoiceTelephone/text()";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 public static final String XPATH_CI_EMAIL =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 "ContactElectronicMailAddress/text()";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 public static final String XPATH_FEES =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 "Service/Fees/text()";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 public static final String XPATH_ACCESS_CONSTRAINTS =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 "Service/AccessConstraints/text()";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87 public static final String XPATH_LAYERS =
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 "Capability/Layer";
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 public static final Pattern SRS_PATTERN = Pattern.compile("(EPSG:\\d+)*");
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93 private CapabilitiesParser() {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 public static void main(String[] args) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 logger.info("Do static Capabilities request/parsing.");
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 String log4jProperties = System.getenv(BaseServlet.LOG4J_PROPERTIES);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101 LoggingConfigurator.init(log4jProperties);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103 try {
1487
ea2aae01e7c4 Improved CapabilitiesParser to test WMS using its main() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1417
diff changeset
104 Capabilities caps = getCapabilities(System.getProperty("test.wms"));
ea2aae01e7c4 Improved CapabilitiesParser to test WMS using its main() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1417
diff changeset
105
ea2aae01e7c4 Improved CapabilitiesParser to test WMS using its main() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1417
diff changeset
106 logger.debug(caps.toString());
1417
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 catch (ServerException se) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109 se.printStackTrace();
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
112 logger.info("Finished fetching capabiltiies.");
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
115
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
116 public static Capabilities getCapabilities(String urlStr)
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
117 throws ServerException
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
118 {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119 try {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120 URL url = new URL(urlStr);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
121
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 logger.debug("Open connection to url: " + urlStr);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 URLConnection conn = url.openConnection();
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 conn.connect();
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127 InputStream is = conn.getInputStream();
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
129 return parse(is);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
131 catch (MalformedURLException mue) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
132 logger.warn(mue, mue);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
133 throw new ServerException(ERR_MALFORMED_URL);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
134 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
135 catch (IOException ioe) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
136 logger.warn(ioe, ioe);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
137 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
138
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
139 throw new ServerException(ERR_GC_REQUEST_FAILED);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
140 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
141
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
142
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
143 protected static Capabilities parse(InputStream is)
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
144 throws ServerException
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
145 {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
146 logger.debug("GCServiceImpl.parseCapabilitiesResponse");
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
147
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
148 Document doc = XMLUtils.parseDocument(is, false);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
149
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
150 if (doc == null) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
151 throw new ServerException(ERR_GC_DOC_NOT_VALID);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
152 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
153
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
154 return CapabilitiesParser.parse(doc);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
155 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
156
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
157
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
158 public static Capabilities parse(Document doc)
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
159 throws ServerException
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
160 {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
161 Node capabilities = getCapabilitiesNode(doc);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
162
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
163 String title = (String) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
164 capabilities,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
165 XPATH_TITLE,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
166 XPathConstants.STRING);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
167
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
168 String onlineResource = (String) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
169 capabilities,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
170 XPATH_ONLINE_RESOURCE,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
171 XPathConstants.STRING);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
172
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
173 String fees = (String) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
174 capabilities,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
175 XPATH_FEES,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
176 XPathConstants.STRING);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
177
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
178 String accessConstraints = (String) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
179 capabilities,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
180 XPATH_ACCESS_CONSTRAINTS,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
181 XPathConstants.STRING);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
182
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
183 Node contactInformation = (Node) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
184 capabilities,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
185 XPATH_CONTACT_INFORMATION,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
186 XPathConstants.NODE);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
187
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
188 ContactInformation ci = parseContactInformation(contactInformation);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
189
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
190 logger.debug("Found fees: " + fees);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
191 logger.debug("Found access constraints: " + accessConstraints);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
192
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
193 NodeList layerNodes = (NodeList) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
194 capabilities,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
195 XPATH_LAYERS,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
196 XPathConstants.NODESET);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
197
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
198 List<WMSLayer> layers = parseLayers(layerNodes, onlineResource);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
199
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
200 return new Capabilities(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
201 title,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
202 onlineResource,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
203 ci,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
204 fees,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
205 accessConstraints,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
206 layers);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
207 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
208
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
209
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
210 protected static Node getCapabilitiesNode(Document doc)
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
211 throws ServerException {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
212 Node capabilities = (Node) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
213 doc,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
214 XPATH_WMS_CAPS,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
215 XPathConstants.NODE);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
216
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
217 if (capabilities == null) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
218 logger.info("No '/WMS_Capabilities' node found.");
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
219 logger.info("Try to find a '/WMT_MS_Capabilities' node.");
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
220
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
221 capabilities = (Node) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
222 doc,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
223 XPATH_WMT_CAPS,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
224 XPathConstants.NODE);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
225 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
226
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
227 if (capabilities == null) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
228 throw new ServerException(ERR_GC_DOC_NOT_VALID);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
229 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
230
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
231 return capabilities;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
232 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
233
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
234
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
235 protected static ContactInformation parseContactInformation(Node node) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
236 String person = (String) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
237 node,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
238 XPATH_CI_PERSON,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
239 XPathConstants.STRING);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
240
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
241 String organization = (String) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
242 node,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
243 XPATH_CI_ORGANIZATION,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
244 XPathConstants.STRING);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
245
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
246 String address = (String) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
247 node,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
248 XPATH_CI_ADDRESS,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
249 XPathConstants.STRING);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
250
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
251 String postcode = (String) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
252 node,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
253 XPATH_CI_POSTCODE,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
254 XPathConstants.STRING);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
255
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
256 String city = (String) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
257 node,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
258 XPATH_CI_CITY,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
259 XPathConstants.STRING);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
260
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
261 String phone = (String) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
262 node,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
263 XPATH_CI_PHONE,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
264 XPathConstants.STRING);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
265
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
266 String email = (String) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
267 node,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
268 XPATH_CI_EMAIL,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
269 XPathConstants.STRING);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
270
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
271 ContactInformation ci = new ContactInformation();
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
272 ci.setPerson(person);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
273 ci.setOrganization(organization);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
274 ci.setAddress(address);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
275 ci.setPostcode(postcode);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
276 ci.setCity(city);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
277 ci.setPhone(phone);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
278 ci.setEmail(email);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
279
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
280 return ci;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
281 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
282
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
283
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
284 /**
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
285 * @param layersNode
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
286 * @param onlineResource
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
287 *
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
288 * @return
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
289 */
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
290 protected static List<WMSLayer> parseLayers(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
291 NodeList layersNode,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
292 String onlineResource
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
293 ) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
294 int len = layersNode != null ? layersNode.getLength() : 0;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
295
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
296 logger.debug("Node has " + len + " layers.");
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
297
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
298 List<WMSLayer> layers = new ArrayList<WMSLayer>(len);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
299
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
300 for (int i = 0; i < len; i++) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
301 layers.add(parseLayer(layersNode.item(i), onlineResource));
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
302 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
303
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
304 return layers;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
305 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
306
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
307
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
308 protected static WMSLayer parseLayer(Node layerNode, String onlineResource) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
309 String title = (String) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
310 layerNode,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
311 "Title/text()",
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
312 XPathConstants.STRING);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
313
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
314 String name = (String) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
315 layerNode,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
316 "Name/text()",
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
317 XPathConstants.STRING);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
318
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
319 logger.debug("Found layer: " + title + "(" + name + ")");
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
320
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
321 List<String> srs = parseSRS(layerNode);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
322
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
323 NodeList layersNodes = (NodeList) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
324 layerNode,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
325 "Layer",
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
326 XPathConstants.NODESET);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
327
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
328 List<WMSLayer> layers = parseLayers(layersNodes, onlineResource);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
329
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
330 return new WMSLayer(onlineResource, title, name, srs, layers);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
331 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
332
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
333
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
334 protected static List<String> parseSRS(Node layerNode) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
335 String srsStr = (String) XMLUtils.xpath(
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
336 layerNode,
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
337 "SRS/text()",
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
338 XPathConstants.STRING);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
339
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
340 if (srsStr == null || srsStr.length() == 0) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
341 logger.debug("No explicit SRS for this layer specified.");
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
342 return null;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
343 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
344
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
345 String[] splittedSrs = srsStr.split(" ");
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
346 List<String> srs = new ArrayList<String>();
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
347
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
348 for (String singleSrs: splittedSrs) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
349 Matcher m = SRS_PATTERN.matcher(singleSrs);
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
350
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
351 if (m.matches()) {
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
352 logger.debug("Found SRS '" + m.group(1) + "'");
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
353 srs.add(m.group(1));
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
354 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
355 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
356
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
357 return srs;
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
358 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
359 }
42d6cf6e10b7 Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
360 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org