/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2008-2014, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.data.wfs.internal;
import net.opengis.wfs.WFSCapabilitiesType;
import org.eclipse.emf.ecore.EObject;
import org.geotools.data.ows.Capabilities;
import org.geotools.xml.EMFUtils;
import org.w3c.dom.Document;
public class WFSGetCapabilities extends Capabilities {
protected final Document rawDocument;
protected final EObject capabilities;
private WFSGetCapabilities(EObject capabilities, Document rawDocument) {
this.capabilities = capabilities;
this.rawDocument = rawDocument;
try {
String updateSequence = (String) EMFUtils.get(capabilities, "updateSequence");
setUpdateSequence(updateSequence);
} catch (Exception e) {
//
}
}
public Document getRawDocument() {
return rawDocument;
}
public EObject getParsedCapabilities() {
return capabilities;
}
public static WFSGetCapabilities create(EObject capabilities, Document rawDocument) {
if (capabilities instanceof WFSCapabilitiesType) {
WFSCapabilitiesType caps = (WFSCapabilitiesType) capabilities;
String version = rawDocument.getDocumentElement().getAttribute("version");
if ("1.0.0".equals(version)) {
return new WFS_1_0_0(caps, rawDocument);
}
if ("1.1.0".equals(version)) {
return new WFS_1_1_0(caps, rawDocument);
}
throw new IllegalArgumentException("Unknown version: " + version);
} else if (capabilities instanceof net.opengis.wfs20.WFSCapabilitiesType) {
return new WFS_2_0_0((net.opengis.wfs20.WFSCapabilitiesType) capabilities, rawDocument);
}
throw new IllegalArgumentException("Unrecognized capabilities object: " + capabilities);
}
private static class WFS_1_0_0 extends WFSGetCapabilities {
public WFS_1_0_0(WFSCapabilitiesType caps, Document rawDocument) {
super(caps, rawDocument);
setVersion("1.0.0");
}
}
private static class WFS_1_1_0 extends WFSGetCapabilities {
public WFS_1_1_0(WFSCapabilitiesType capabilities, Document rawDocument) {
super(capabilities, rawDocument);
setVersion("1.1.0");
}
}
private static class WFS_2_0_0 extends WFSGetCapabilities {
public WFS_2_0_0(net.opengis.wfs20.WFSCapabilitiesType capabilities, Document rawDocument) {
super(capabilities, rawDocument);
setVersion("2.0.0");
}
}
}