/*
* Constellation - An open source and standard compliant SDI
* http://www.constellation-sdi.org
*
* Copyright 2014 Geomatys.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.constellation.wfs.ws;
import org.constellation.ws.CstlServiceException;
import org.constellation.ws.Worker;
import org.geotoolkit.gml.xml.AbstractGML;
import org.geotoolkit.wfs.xml.CreateStoredQuery;
import org.geotoolkit.wfs.xml.CreateStoredQueryResponse;
import org.geotoolkit.wfs.xml.DescribeFeatureType;
import org.geotoolkit.wfs.xml.DescribeStoredQueries;
import org.geotoolkit.wfs.xml.DescribeStoredQueriesResponse;
import org.geotoolkit.wfs.xml.DropStoredQuery;
import org.geotoolkit.wfs.xml.DropStoredQueryResponse;
import org.geotoolkit.wfs.xml.GetCapabilities;
import org.geotoolkit.wfs.xml.GetFeature;
import org.geotoolkit.wfs.xml.GetGmlObject;
import org.geotoolkit.wfs.xml.GetPropertyValue;
import org.geotoolkit.wfs.xml.ListStoredQueries;
import org.geotoolkit.wfs.xml.ListStoredQueriesResponse;
import org.geotoolkit.wfs.xml.LockFeature;
import org.geotoolkit.wfs.xml.LockFeatureResponse;
import org.geotoolkit.wfs.xml.ParameterExpression;
import org.geotoolkit.wfs.xml.Transaction;
import org.geotoolkit.wfs.xml.TransactionResponse;
import org.geotoolkit.wfs.xml.WFSCapabilities;
import org.geotoolkit.xsd.xml.v2001.Schema;
import java.util.List;
// Constellation dependencies
// Geotoolkit dependencies
/**
*
* @author Guilhem Legal (Geomatys)
*/
public interface WFSWorker extends Worker {
/**
* Describe the capabilities and the layers available of this service.
*
* @param request The {@linkplain GetCapabilities get capabilities} request.
* @return a WFSCapabilities XML document describing the capabilities of the service.
*
* @throws CstlServiceException
*/
WFSCapabilities getCapabilities(final GetCapabilities request) throws CstlServiceException;
/**
* describe the structure of any feature type it can service.
*
* @param request A desribeFeatureType request contains typeNames.
*
* @return A marshallable object representing a xsd.
* @throws CstlServiceException
*/
Object describeFeatureType(final DescribeFeatureType request) throws CstlServiceException;
/**
* Allows retrieval of features from a web feature service.
*
* @param request a request containing typeNames, comparison filter, spatial filter, etc.
* @return features instances.
* @throws CstlServiceException
*/
Object getFeature(final GetFeature request) throws CstlServiceException;
/**
* Allows retrieval of features and elements by ID from a web feature service.
*
* @param grbi a getGMLObject request containing IDs.
*
* @return A GML representation of a feature instance or element.
* @throws CstlServiceException
*/
AbstractGML getGMLObject(final GetGmlObject grbi) throws CstlServiceException;
ListStoredQueriesResponse listStoredQueries(final ListStoredQueries request) throws CstlServiceException;
DescribeStoredQueriesResponse describeStoredQueries(final DescribeStoredQueries request) throws CstlServiceException;
/**
* lock request on one or more instances of a feature type for the duration of a transaction
*
* @param gr a lockFeature request identifying which feature are to lock.
*
* @return An acknowledgment
* @throws CstlServiceException
*/
LockFeatureResponse lockFeature(final LockFeature gr) throws CstlServiceException;
/**
* Allow to insert, update, or remove feature instances.
*
* @param request A request containing feature to insert and filters identifying which feature have to be update/delete
* @return
* @throws CstlServiceException
*/
TransactionResponse transaction(final Transaction request) throws CstlServiceException;
Object getPropertyValue(final GetPropertyValue request) throws CstlServiceException;
CreateStoredQueryResponse createStoredQuery(final CreateStoredQuery request) throws CstlServiceException;
DropStoredQueryResponse dropStoredQuery(final DropStoredQuery request) throws CstlServiceException;
List<ParameterExpression> getParameterForStoredQuery(final String queryId);
Schema getXsd(final WFSConstants.GetXSD request) throws CstlServiceException;
}