2 Copyright (C) 2001, 2006 United States Government
3 as represented by the Administrator of the
4 National Aeronautics and Space Administration.
7 package gov
.nasa
.worldwind
.examples
;
9 import gov
.nasa
.worldwind
.*;
10 import gov
.nasa
.worldwind
.wms
.*;
15 import javax
.swing
.border
.*;
16 import javax
.xml
.parsers
.*;
18 import java
.awt
.event
.*;
24 * @version $Id: WMSCapabilitiesParsing.java 2131 2007-06-22 22:45:35Z jason $
26 public class WMSCapabilitiesParsing
28 private static final String TAB
= "\t";
30 private static final String
[] servers
= new String
[]
32 "http://neowms.sci.gsfc.nasa.gov/wms/wms"
35 private static class MainFrame
extends JFrame
37 private static JComboBox serverList
= new JComboBox(servers
);
38 private static JTextArea outputArea
= new JTextArea(40, 80);
40 private static class RunAction
extends AbstractAction
44 super("Get Capabilities");
47 public void actionPerformed(ActionEvent actionEvent
)
49 outputArea
.setText("");
53 DocumentBuilderFactory docBuilderFactory
= DocumentBuilderFactory
.newInstance();
54 docBuilderFactory
.setNamespaceAware(true);
55 DocumentBuilder docBuilder
= docBuilderFactory
.newDocumentBuilder();
58 String s
= (String
) serverList
.getSelectedItem();
59 if (s
.startsWith("file://"))
61 File f
= new File(s
.substring(7, s
.length()));
64 System
.out
.println(f
.getPath() + " does not exist.");
67 doc
= docBuilder
.parse(f
);
71 CapabilitiesRequest req
= new CapabilitiesRequest(new URI(s
));
72 doc
= docBuilder
.parse(req
.toString());
75 Capabilities caps
= Capabilities
.parse(doc
);
77 print("version", caps
.getVersion());
78 print("update sequence", caps
.getUpdateSequence());
79 print("abstract", caps
.getAbstract());
80 print("title", caps
.getTitle());
81 print("name", caps
.getName());
82 print("fees", caps
.getFees());
83 print("access constraints", caps
.getAccessConstraints());
84 print("layer limit", caps
.getLayerLimit());
85 print("max width", caps
.getMaxWidth());
86 print("max height", caps
.getMaxHeight());
87 print("exception formats", caps
.getExceptionFormats());
88 print("map get url", caps
.getGetMapRequestGetURL());
89 print("capabilities get url", caps
.getGetCapabilitiesRequestGetURL());
90 print("feature info get url", caps
.getFeatureInfoRequestGetURL());
91 print("map post url", caps
.getGetMapRequestPostURL());
92 print("capabilities post url", caps
.getGetCapabilitiesRequestPostURL());
93 print("feature info post url", caps
.getFeatureInfoRequestPostURL());
94 print("keywords", caps
.getKeywordList());
96 Element
[] elements
= caps
.getNamedLayers();
97 if (elements
== null || elements
.length
== 0)
98 print("named layers", "empty");
100 for (Element e
: elements
)
102 print("named layer", caps
.getLayerName(e
));
105 Element layer
= caps
.getLayer();
107 printLayer(caps
, layer
);
109 catch (URISyntaxException e
)
113 catch (MalformedURLException e
)
117 catch (IOException e
)
121 catch (ParserConfigurationException e
)
125 catch (SAXException e
)
132 private static String indent
= "";
134 private static void printLayer(Capabilities caps
, Element layer
)
136 print(indent
, "===== LAYER =====");
137 String lastIndent
= indent
;
140 print("layer title", caps
.getLayerTitle(layer
));
141 print("layer name", caps
.getLayerName(layer
));
142 print("layer abstract", caps
.getLayerAbstract(layer
));
143 print("layer srs", caps
.getLayerSRS(layer
));
144 print("layer crs", caps
.getLayerCRS(layer
));
146 print("layer scale", "min " + caps
.getLayerMinScaleDenominator(layer
) + ", "
147 + ", max " + caps
.getLayerMaxScaleDenominator(layer
));
148 print("layer queryable", caps
.getLayerQueryable(layer
));
149 print("layer cascaded", caps
.getLayerCascaded(layer
));
150 print("layer opaque", caps
.getLayerOpaque(layer
));
151 print("layer nosubsets", caps
.getLayerNoSubsets(layer
));
152 print("layer fixed width, height", caps
.getLayerFixedWidth(layer
) + ", "
153 + caps
.getLayerFixedHeight(layer
));
154 BoundingBox bbox
= caps
.getLayerGeographicBoundingBox(layer
);
155 print("layer geographic bounding box", bbox
!= null ? bbox
.toString() : "empty");
157 print("layer keywords", caps
.getLayerKeywordList(layer
));
159 print("layer attribution url title", caps
.getLayerAttributionTitle(layer
));
160 print("layer attribution url online resource", caps
.getLayerAttributionURL(layer
));
161 print("layer attribution url logo format", caps
.getLayerAttributionLogoFormat(layer
));
162 print("layer attribution url logo online resource", caps
.getLayerAttributionLogoURL(layer
));
164 print("layer data url format", caps
.getLayerDataURLFormat(layer
));
165 print("layer data URL", caps
.getLayerDataURL(layer
));
167 print("layer feature list url format", caps
.getLayerFeatureListFormat(layer
));
168 print("layer feature list URL", caps
.getLayerFeatureListURL(layer
));
172 elements
= caps
.getLayerStyles(layer
);
173 if (elements
== null || elements
.length
== 0)
174 print("layer styles", "empty");
176 for (Element e
: elements
)
178 print("layer style name", caps
.getStyleName(e
));
179 print("layer style title", caps
.getStyleTitle(e
));
180 print("layer style abstract", caps
.getStyleAbstract(e
));
181 print("layer style legend URL", caps
.getStyleLegendURL(e
));
182 print("layer style legend format", caps
.getStyleLegendFormat(e
));
183 print("layer style legend width", caps
.getStyleLegendWidth(e
));
184 print("layer style legend height", caps
.getStyleLegendHeight(e
));
185 print("layer style sheet URL", caps
.getStyleSheetURL(e
));
186 print("layer style sheet format", caps
.getStyleSheetURLFormat(e
));
189 elements
= caps
.getLayerAuthorityURLs(layer
);
190 if (elements
== null || elements
.length
== 0)
191 print("layer authority URL", "empty");
193 for (Element e
: elements
)
195 print("layer authority URL", caps
.getAuthorityName(e
) + ": " + caps
.getAuthorityURL(e
));
198 elements
= caps
.getLayerMetadataURLs(layer
);
199 if (elements
== null || elements
.length
== 0)
200 print("layer metadata URL", "empty");
202 for (Element e
: elements
)
204 print("metadata URL", caps
.getMetadataType(e
) + ": " + caps
.getMetadataFormat(e
) + ", "
205 + caps
.getAuthorityURL(e
));
208 elements
= caps
.getLayerIdentifiers(layer
);
209 if (elements
== null || elements
.length
== 0)
210 print("layer identifiers URL", "empty");
212 for (Element e
: elements
)
214 print("layer identifiers authority ", caps
.getIdentifierAuthority(e
)
215 + ", identifier " + caps
.getIdentifier(e
));
218 elements
= caps
.getLayerDimensions(layer
);
219 if (elements
== null || elements
.length
== 0)
220 print("layer dimensions", "empty");
222 for (Element e
: elements
)
224 print("layer dimension current", caps
.getDimensionCurrent(e
));
225 print("layer dimension default", caps
.getDimensionDefault(e
));
226 print("layer dimension extent", caps
.getDimensionExtent(e
));
227 print("layer dimension multiple values", caps
.getDimensionMultipleValues(e
));
228 print("layer dimension name", caps
.getDimensionName(e
));
229 print("layer dimension nearest value", caps
.getDimensionNearestValue(e
));
230 print("layer dimension units", caps
.getDimensionUnits(e
));
231 print("layer dimension unit symbol", caps
.getDimensionUnitSymbol(e
));
234 elements
= caps
.getLayerExtents(layer
);
235 if (elements
== null || elements
.length
== 0)
236 print("layer extents", "empty");
238 for (Element e
: elements
)
240 print("layer extent current", caps
.getExtentCurrent(e
));
241 print("layer extent default", caps
.getExtentDefault(e
));
242 print("layer extent multiple values", caps
.getExtentMultipleValues(e
));
243 print("layer extent name", caps
.getExtentName(e
));
244 print("layer extent nearest value", caps
.getExtentNearestValue(e
));
245 print("layer extent extent", caps
.getExtentText(e
));
248 BoundingBox
[] bboxes
= caps
.getLayerBoundingBoxes(layer
);
249 if (bboxes
== null || bboxes
.length
== 0)
250 print("layer bounding boxes", "empty");
252 for (BoundingBox bb
: bboxes
)
254 print("bounding box", bb
.toString());
257 Element
[] children
= caps
.getLayerSubLayers(layer
);
258 if (children
== null || children
.length
== 0)
259 print("layer sublayers", "empty");
260 else if (children
!= null)
262 for (Element l
: children
)
271 private static void print(String name
, String s
)
273 outputArea
.append(indent
);
276 outputArea
.append(name
+ ": ");
278 outputArea
.append(s
== null ?
"null" : s
.equals("") ?
"empty" : s
.replaceAll("\n", " ").trim());
279 outputArea
.append("\n");
282 private static void print(String name
, String
[] ss
)
284 outputArea
.append(indent
+ name
+ "\n");
295 print(TAB
, s
.trim());
303 JPanel mainPanel
= new JPanel();
304 mainPanel
.setLayout(new BorderLayout());
305 mainPanel
.setBorder(BorderFactory
.createEmptyBorder(9, 9, 9, 9));
307 JPanel outputContainer
= new JPanel();
308 outputContainer
.setBorder(new TitledBorder("Capabilities"));
309 outputArea
.setLineWrap(true);
310 outputContainer
.add(new JScrollPane(outputArea
), BorderLayout
.CENTER
);
312 JPanel controlContainer
= new JPanel(new BorderLayout());
313 controlContainer
.setBorder(new TitledBorder("Server"));
314 JButton btn
= new JButton(new RunAction());
315 controlContainer
.add(btn
, BorderLayout
.WEST
);
316 serverList
.setEditable(false);
317 controlContainer
.add(serverList
, BorderLayout
.CENTER
);
319 mainPanel
.add(controlContainer
, BorderLayout
.NORTH
);
320 mainPanel
.add(outputContainer
, BorderLayout
.CENTER
);
321 this.getContentPane().add(mainPanel
, BorderLayout
.CENTER
);
325 java
.awt
.Dimension prefSize
= this.getPreferredSize();
326 prefSize
.setSize(prefSize
.getWidth(), 1.1 * prefSize
.getHeight());
327 this.setSize(prefSize
);
329 java
.awt
.Dimension parentSize
;
330 java
.awt
.Point parentLocation
= new java
.awt
.Point(0, 0);
331 parentSize
= Toolkit
.getDefaultToolkit().getScreenSize();
332 int x
= parentLocation
.x
+ (parentSize
.width
- prefSize
.width
) / 2;
333 int y
= parentLocation
.y
+ (parentSize
.height
- prefSize
.height
) / 2;
334 this.setLocation(x
, y
);
335 this.setResizable(true);
346 if (Configuration
.isMacOS())
348 System
.setProperty("apple.laf.useScreenMenuBar", "true");
349 System
.setProperty("com.apple.mrj.application.apple.menu.about.name", "World Wind wms Caps Parsing");
350 System
.setProperty("com.apple.mrj.application.growbox.intrudes", "false");
354 public static void main(String
[] arg
)
356 final MainFrame frame
= new MainFrame();
357 frame
.setDefaultCloseOperation(JFrame
.EXIT_ON_CLOSE
);
358 frame
.setVisible(true);