/* (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.monitor.ows.wfs;
import java.util.ArrayList;
import java.util.List;
import javax.xml.namespace.QName;
import org.eclipse.emf.ecore.EObject;
import org.geoserver.catalog.Catalog;
import org.geoserver.monitor.MonitorConfig;
import org.geoserver.ows.util.OwsUtils;
import org.geotools.xml.EMFUtils;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
public class GetFeatureHandler extends WFSRequestObjectHandler {
public GetFeatureHandler(MonitorConfig config, Catalog catalog) {
super("net.opengis.wfs.GetFeatureType", config, catalog);
}
@SuppressWarnings("unchecked")
@Override
public List<String> getLayers(Object request) {
List<Object> queries = (List<Object>) EMFUtils.get((EObject)request,"query");
if (queries == null) {
return null;
}
List<String> layers = new ArrayList<String>();
for (Object q : queries) {
List<Object> typeNames = (List<Object>) EMFUtils.get((EObject) q, "typeName");
for (Object o : typeNames) {
layers.add(toString(o));
}
}
return layers;
}
@SuppressWarnings("unchecked")
@Override
protected List<Object> getElements(Object request) {
return (List<Object>) OwsUtils.get(request, "query");
}
@SuppressWarnings("unchecked")
@Override
protected CoordinateReferenceSystem getCrsFromElement(Object element) {
List<Object> types = (List<Object>) OwsUtils.get(element, "typeName");
if(types.size()==1){
return crsFromTypeName((QName) types.get(0));
} else {
return null;
}
}
}