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.feature.Feature;
19:
20: import java.util.Collection;
21:
22: /** This is the interface for the FeatureIndex backend,
23: * when FeatureIndex uses non-clustered index (ie data and data index are separate).
24: *
25: * It offers a generic contract,
26: * in order to allow different implementation
27: * on how the data is actually stored
28: * (eg. in memory, in another DataStore, on disk, in a database).
29: *
30: * @author Christophe Rousson, SoC 2007, CRG-ULAVAL
31: *
32: */
33: public interface InternalStore {
34: /** Test if a feature is already in the store.
35: *
36: * @param feature a feature
37: * @return true if this feature is already stored.
38: */
39: public abstract boolean contains(Feature feature);
40:
41: /** Test if a feature is already in the store.
42: *
43: * @param featureId the Id of a feature
44: * @return true if this feature is already stored.
45: */
46: public abstract boolean contains(String featureId);
47:
48: /** Store a feature.
49: *
50: * @param f a feature
51: */
52: public abstract void put(Feature f);
53:
54: /** Returns the feature identified by id.
55: *
56: * @param featureId the id of the feature to return.
57: * @return the feature, or null if the feature does not exist in store.
58: *
59: * @task should we not return null ?
60: * what to return if feature does not existe in store ?
61: */
62: public abstract Feature get(String featureId);
63:
64: /** Returns all the features in the store as a Collection.
65: *
66: * @return all the features in the store
67: *
68: * @task should we rather return a FeatureCollection ?
69: */
70: public abstract Collection getAll();
71:
72: /** Empties the store.
73: *
74: */
75: public abstract void clear();
76:
77: /** Removes the feature identified by id.
78: *
79: * @param featureId the id of the feature to remove from store.
80: *
81: */
82: public abstract void remove(String featureId);
83: }
|