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.feature.retype;
06:
07: import java.io.IOException;
08: import java.util.HashSet;
09: import java.util.Iterator;
10: import java.util.Set;
11:
12: import org.geoserver.feature.RetypingFeatureCollection;
13: import org.geoserver.feature.RetypingFeatureCollection.RetypingFeatureReader;
14: import org.geotools.data.DataUtilities;
15: import org.geotools.data.FeatureReader;
16: import org.geotools.data.FeatureStore;
17: import org.geotools.data.Transaction;
18: import org.geotools.feature.AttributeType;
19: import org.geotools.feature.FeatureCollection;
20: import org.opengis.filter.Filter;
21:
22: /**
23: * Renaming wrapper for a {@link FeatureStore} instance, to be used along with {@link RetypingDataStore}
24: */
25: public class RetypingFeatureStore extends RetypingFeatureSource
26: implements FeatureStore {
27:
28: public RetypingFeatureStore(RetypingDataStore ds,
29: FeatureStore wrapped, FeatureTypeMap typeMap) {
30: super (ds, wrapped, typeMap);
31: }
32:
33: protected FeatureStore featureStore() {
34: return (FeatureStore) wrapped;
35: }
36:
37: public Transaction getTransaction() {
38: return featureStore().getTransaction();
39: }
40:
41: public void setTransaction(Transaction transaction) {
42: featureStore().setTransaction(transaction);
43: }
44:
45: public void modifyFeatures(AttributeType type, Object value,
46: Filter filter) throws IOException {
47: featureStore().modifyFeatures(type, value,
48: store.retypeFilter(filter, typeMap));
49: }
50:
51: public void removeFeatures(Filter filter) throws IOException {
52: featureStore().removeFeatures(
53: store.retypeFilter(filter, typeMap));
54: }
55:
56: public void modifyFeatures(AttributeType[] type, Object[] value,
57: Filter filter) throws IOException {
58: featureStore().modifyFeatures(type, value,
59: store.retypeFilter(filter, typeMap));
60: }
61:
62: public void setFeatures(FeatureReader reader) throws IOException {
63: featureStore().setFeatures(
64: new RetypingFeatureReader(reader, typeMap
65: .getOriginalFeatureType()));
66: }
67:
68: public Set addFeatures(FeatureCollection collection)
69: throws IOException {
70: Set ids = featureStore().addFeatures(
71: new RetypingFeatureCollection(collection, typeMap
72: .getOriginalFeatureType()));
73: Set retyped = new HashSet();
74: for (Iterator it = ids.iterator(); it.hasNext();) {
75: String id = (String) it.next();
76: retyped.add(RetypingFeatureCollection
77: .reTypeId(id, typeMap.getOriginalFeatureType(),
78: typeMap.getFeatureType()));
79: }
80: return retyped;
81: }
82:
83: }
|