01: /*
02: * GeoTools - OpenSource mapping toolkit
03: * http://geotools.org
04: * (C) 2002-2006, GeoTools Project Managment Committee (PMC)
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation;
09: * version 2.1 of the License.
10: *
11: * This library is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: */
16: package org.geotools.caching;
17:
18: import org.geotools.data.FeatureSource;
19: import org.geotools.data.Query;
20:
21: import org.geotools.feature.Feature;
22: import org.geotools.feature.FeatureCollection;
23: import org.geotools.feature.SchemaException;
24:
25: import java.io.IOException;
26:
27: /** Provides an indexed store where to keep features
28: * on behalf of a DataCache.
29: * Features are likely to be stored by ID, but
30: * indexation can be used to speed the lookup of features in the cache.
31: * Implementation will choose the indexation method that fits best with the purpose of the cache.
32: * An index instance should store only one type of feature.
33: *
34: * @author Christophe Rousson, SoC 2007, CRG-ULAVAL
35: *
36: */
37: public interface FeatureIndex extends FeatureSource {
38: /** Store a Feature in the index.
39: *
40: * @param f the feature to store
41: */
42: public abstract void add(Feature f);
43:
44: /** Get a feature by its ID.
45: *
46: * @param featureID the id of the feature to retrieve.
47: * @return
48: */
49: public abstract Feature get(String featureID);
50:
51: /** Delete a feature from the index.
52: *
53: * @param featureID the id of the feature to remove.
54: */
55: public abstract void remove(String featureID);
56:
57: /** Delete all features from the index.
58: *
59: */
60: public abstract void clear();
61:
62: /* (non-Javadoc)
63: * @see org.geotools.data.FeatureSource#getFeatures(org.geotools.data.Query)
64: */
65: public abstract FeatureCollection getFeatures(Query q)
66: throws IOException;
67:
68: /** Return a FeatureSource from where to get the features yielded by query q.
69: *
70: * @param q the query defining the view, ie a selection of the features in the index.
71: * @return
72: */
73: public abstract FeatureSource getView(Query q)
74: throws SchemaException;
75: }
|