01: /* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
02: * This code is licensed under the GPL 2.0 license, availible at the root
03: * application directory.
04: */
05: package org.geoserver.wfs;
06:
07: import net.opengis.wfs.TransactionResponseType;
08: import net.opengis.wfs.TransactionType;
09: import org.eclipse.emf.ecore.EObject;
10: import org.geotools.data.FeatureStore;
11: import java.util.Map;
12: import javax.xml.namespace.QName;
13:
14: /**
15: * Transaction elements are an open ended set, both thanks to the Native element
16: * type, and to the XSD sustitution group concept (xsd inheritance). Element
17: * handlers know how to process a certain element in a wfs transaction request.
18: *
19: * @author Andrea Aime - TOPP
20: *
21: */
22: public interface TransactionElementHandler {
23: /**
24: * Returns the element class this handler can proces
25: */
26: Class getElementClass();
27:
28: /**
29: * Returns the qualified names of feature types needed to handle this
30: * element
31: */
32: QName[] getTypeNames(EObject element)
33: throws WFSTransactionException;
34:
35: /**
36: * Checks the element content is valid, throws an exception otherwise
37: *
38: * @param element
39: * the transaction element we're checking
40: * @param featureTypeInfos
41: * a map from {@link QName} to {@link FeatureTypeInfo}, where
42: * the keys contain all the feature type names reported by
43: * {@link #getTypeNames(EObject)}
44: */
45: void checkValidity(EObject element, Map featureTypeInfos)
46: throws WFSTransactionException;
47:
48: /**
49: * Executes the element against the provided feature sources
50: *
51: * @param element
52: * the tranaction element to be executed
53: * @param request
54: * the transaction request
55: * @param featureStores
56: * map from {@link QName} to {@link FeatureStore}, where the
57: * keys do contain all the feature type names reported by
58: * {@link #getTypeNames(EObject)}
59: * @param response
60: * the transaction response, that the element will update
61: * according to the processing done
62: * @param listener
63: * a transaction listener that will be called before and after
64: * each change performed against the data stores
65: */
66: void execute(EObject element, TransactionType request,
67: Map featureStores, TransactionResponseType response,
68: TransactionListener listener)
69: throws WFSTransactionException;
70: }
|