package org.geoserver.wfs.request;
import java.math.BigInteger;
import java.util.Calendar;
import java.util.List;
import net.opengis.wfs.FeatureCollectionType;
import net.opengis.wfs.WfsFactory;
import net.opengis.wfs20.Wfs20Factory;
import org.eclipse.emf.ecore.EObject;
import org.geotools.feature.FeatureCollection;
/**
* Response object for a feature collection, most notably from a GetFeature request.
*
* @author Justin Deoliveira, OpenGeo
*/
public abstract class FeatureCollectionResponse extends RequestObject {
public static FeatureCollectionResponse adapt(Object adaptee) {
if (adaptee instanceof FeatureCollectionType) {
return new WFS11((EObject) adaptee);
}
else if (adaptee instanceof net.opengis.wfs20.FeatureCollectionType) {
return new WFS20((EObject) adaptee);
}
return null;
}
protected FeatureCollectionResponse(EObject adaptee) {
super(adaptee);
}
public String getLockId() {
return eGet(adaptee, "lockId", String.class);
}
public void setLockId(String lockId) {
eSet(adaptee, "lockId", lockId);
}
public Calendar getTimeStamp() {
return eGet(adaptee, "timeStamp", Calendar.class);
}
public void setTimeStamp(Calendar timeStamp) {
eSet(adaptee, "timeStamp", timeStamp);
}
public abstract FeatureCollectionResponse create();
public abstract BigInteger getNumberOfFeatures();
public abstract void setNumberOfFeatures(BigInteger n);
public abstract BigInteger getTotalNumberOfFeatures();
public abstract void setTotalNumberOfFeatures(BigInteger n);
public abstract void setPrevious(String previous);
public abstract String getPrevious();
public abstract void setNext(String next);
public abstract String getNext();
public abstract List<FeatureCollection> getFeatures();
public List<FeatureCollection> getFeature() {
//alias
return getFeatures();
}
public static class WFS11 extends FeatureCollectionResponse {
public WFS11(EObject adaptee) {
super(adaptee);
}
@Override
public FeatureCollectionResponse create() {
return FeatureCollectionResponse.adapt(((WfsFactory)getFactory()).createFeatureCollectionType());
}
@Override
public BigInteger getNumberOfFeatures() {
return eGet(adaptee, "numberOfFeatures", BigInteger.class);
}
@Override
public void setNumberOfFeatures(BigInteger n) {
eSet(adaptee, "numberOfFeatures", n);
}
@Override
public BigInteger getTotalNumberOfFeatures() {
//noop
return null;
}
@Override
public void setTotalNumberOfFeatures(BigInteger n) {
//noop
}
@Override
public String getPrevious() {
//noop
return null;
}
@Override
public void setPrevious(String previous) {
//noop
}
@Override
public String getNext() {
//noop
return null;
}
@Override
public void setNext(String next) {
//noop
}
@Override
public List<FeatureCollection> getFeatures() {
return eGet(adaptee, "feature", List.class);
}
}
public static class WFS20 extends FeatureCollectionResponse {
public WFS20(EObject adaptee) {
super(adaptee);
}
@Override
public FeatureCollectionResponse create() {
return FeatureCollectionResponse.adapt(((Wfs20Factory)getFactory()).createFeatureCollectionType());
}
@Override
public BigInteger getNumberOfFeatures() {
return eGet(adaptee, "numberReturned", BigInteger.class);
}
@Override
public void setNumberOfFeatures(BigInteger n) {
eSet(adaptee, "numberReturned", n);
}
@Override
public BigInteger getTotalNumberOfFeatures() {
return eGet(adaptee, "numberMatched", BigInteger.class);
}
@Override
public void setTotalNumberOfFeatures(BigInteger n) {
eSet(adaptee, "numberMatched", n);
}
@Override
public String getPrevious() {
return eGet(adaptee, "previous", String.class);
}
@Override
public void setPrevious(String previous) {
eSet(adaptee, "previous", previous);
}
@Override
public String getNext() {
return eGet(adaptee, "next", String.class);
}
@Override
public void setNext(String next) {
eSet(adaptee, "next", next);
}
@Override
public List<FeatureCollection> getFeatures() {
return eGet(adaptee, "member", List.class);
}
}
}