/* (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; import java.net.URI; import java.util.List; import net.opengis.wfs20.DescribeStoredQueriesResponseType; import net.opengis.wfs20.DescribeStoredQueriesType; import net.opengis.wfs20.Wfs20Factory; import org.geoserver.platform.GeoServerExtensions; /** * Web Feature Service DescribeStoredQueries operation. * * @author Justin Deoliveira, OpenGeo * * @version $Id$ */ public class DescribeStoredQueries { /** service config */ WFSInfo wfs; /** stored query provider */ StoredQueryProvider storedQueryProvider; public DescribeStoredQueries(WFSInfo wfs, StoredQueryProvider storedQueryProvider) { this.wfs = wfs; this.storedQueryProvider = storedQueryProvider; } public DescribeStoredQueriesResponseType run(DescribeStoredQueriesType request) throws WFSException { Wfs20Factory factory = Wfs20Factory.eINSTANCE; DescribeStoredQueriesResponseType response = factory.createDescribeStoredQueriesResponseType(); List<StoredQueryProvider> providers = GeoServerExtensions.extensions(StoredQueryProvider.class); if (request.getStoredQueryId().isEmpty()) { for (StoredQuery query : storedQueryProvider.listStoredQueries()) { describeStoredQuery(query, response); } } else { for (URI id : request.getStoredQueryId()) { StoredQuery query = storedQueryProvider.getStoredQuery(id.toString()); if (query == null) { throw new WFSException(request, "No such stored query: " + id, "InvalidParameterValue"); } describeStoredQuery(query, response); } } return response; } void describeStoredQuery(StoredQuery query, DescribeStoredQueriesResponseType response) { response.getStoredQueryDescription().add(query.getQuery()); } }