/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wfs.request;
import java.util.Arrays;
import java.util.List;
import net.opengis.ows10.Ows10Factory;
import net.opengis.ows11.Ows11Factory;
import net.opengis.wfs.GetCapabilitiesType;
import org.eclipse.emf.ecore.EObject;
/**
* WFS GetCapabilities request.
*
* @author Justin Deoliveira, OpenGeo
*/
public abstract class GetCapabilitiesRequest extends RequestObject {
public static GetCapabilitiesRequest adapt(Object request) {
if (request instanceof GetCapabilitiesType) {
return new WFS11((EObject) request);
}
else if (request instanceof net.opengis.wfs20.GetCapabilitiesType) {
return new WFS20((EObject) request);
}
return null;
}
protected GetCapabilitiesRequest(EObject adaptee) {
super(adaptee);
}
public String getUpdateSequence() {
return eGet(adaptee, "updateSequence", String.class);
}
public List<String> getAcceptVersions() {
return eGet(adaptee, "acceptVersions.version", List.class);
}
public List<String> getAcceptFormats() {
return eGet(adaptee, "acceptFormats.outputFormat", List.class);
}
public void setAcceptVersions(String... versions) {
Object acceptedVersions = createAcceptedVersions();
eAdd(acceptedVersions, "version", Arrays.asList(versions));
eSet(adaptee, "acceptVersions", acceptedVersions);
}
public String getNamespace() {
return eGet(adaptee, "namespace", String.class);
}
public void setNamespace(String namespace) {
eSet(adaptee, "namespace", namespace);
}
protected abstract Object createAcceptedVersions();
public static class WFS11 extends GetCapabilitiesRequest {
public WFS11(EObject adaptee) {
super(adaptee);
}
@Override
protected Object createAcceptedVersions() {
return Ows10Factory.eINSTANCE.createAcceptVersionsType();
}
}
public static class WFS20 extends GetCapabilitiesRequest {
public WFS20(EObject adaptee) {
super(adaptee);
}
@Override
protected Object createAcceptedVersions() {
return Ows11Factory.eINSTANCE.createAcceptVersionsType();
}
}
}