Revision 22968
branches/v2_0_0_prep/libraries/libFMap_dataFile/src/org/gvsig/fmap/data/feature/file/dbf/DBFStore.java | ||
---|---|---|
160 | 160 |
|
161 | 161 |
} |
162 | 162 |
|
163 |
public Feature getFeatureByID(FeatureID id,FeatureType featureType) throws ReadException { |
|
163 |
public Feature getFeatureByID(FeatureID id, FeatureType featureType) |
|
164 |
throws ReadException { |
|
164 | 165 |
if (featureType == null){ |
165 | 166 |
featureType=this.getDefaultFeatureType(); |
166 | 167 |
} else{ |
... | ... | |
173 | 174 |
return featureManager.getFeature(id,this,featureType); |
174 | 175 |
} |
175 | 176 |
} |
176 |
DBFFeature feature=new DBFFeature(featureType,this,((DBFFeatureID)id).getIndex()); |
|
177 |
return this.getFeatureByIndex(((DBFFeatureID) id).getIndex(), |
|
178 |
featureType); |
|
179 |
} |
|
180 |
|
|
181 |
/** |
|
182 |
* |
|
183 |
* NOT supported in Alter Mode |
|
184 |
* |
|
185 |
* @param index |
|
186 |
* @param featureType |
|
187 |
* @return |
|
188 |
* @throws ReadException |
|
189 |
*/ |
|
190 |
protected Feature getFeatureByIndex(long index, FeatureType featureType) |
|
191 |
throws ReadException { |
|
192 |
if (this.alterMode){ |
|
193 |
throw new ReadException(this.getName(), |
|
194 |
"Unsupported operation in alter mode"); |
|
195 |
} |
|
196 |
DBFFeature feature = new DBFFeature(featureType, this, index); |
|
177 | 197 |
return feature; |
178 | 198 |
} |
179 | 199 |
|
200 |
/*** |
|
201 |
* NOT supported in Alter Mode |
|
202 |
* |
|
203 |
* @param index |
|
204 |
* @return |
|
205 |
* @throws ReadException |
|
206 |
*/ |
|
207 |
protected Feature getFeatureByIndex(long index) throws ReadException { |
|
208 |
return this.getFeatureByIndex(index, this.getDefaultFeatureType()); |
|
209 |
} |
|
210 |
|
|
180 | 211 |
public List getFeatureTypes() { |
181 | 212 |
featureTypes.add(0,getDefaultFeatureType()); |
182 | 213 |
return featureTypes; |
branches/v2_0_0_prep/libraries/libFMap_dataFile/src/org/gvsig/fmap/data/feature/file/dbf/DBFFeatureCollectionBitSet.java | ||
---|---|---|
10 | 10 |
import org.gvsig.fmap.data.ReadException; |
11 | 11 |
import org.gvsig.fmap.data.feature.AbstractFeatureCollection; |
12 | 12 |
import org.gvsig.fmap.data.feature.Feature; |
13 |
import org.gvsig.fmap.data.feature.FeatureID; |
|
14 | 13 |
import org.gvsig.fmap.data.feature.FeatureType; |
15 | 14 |
import org.gvsig.fmap.data.feature.expressionevaluator.FeatureFilter; |
16 | 15 |
import org.gvsig.util.observer.DefaultObservable; |
... | ... | |
34 | 33 |
} |
35 | 34 |
driverFeatureCount=store.getFeatureCount(); |
36 | 35 |
this.store=store; |
37 |
intilizeFeatureIDs();
|
|
36 |
intilizeBitSet();
|
|
38 | 37 |
|
39 | 38 |
} |
40 | 39 |
|
41 |
protected void intilizeFeatureIDs() throws ReadException {
|
|
40 |
protected void intilizeBitSet() throws ReadException {
|
|
42 | 41 |
try{ |
43 | 42 |
bitSet.clear(); |
44 | 43 |
if (filter==null){ |
... | ... | |
47 | 46 |
} |
48 | 47 |
}else{ |
49 | 48 |
for (int i = 0; i < driverFeatureCount; i++) { |
50 |
FeatureID featureID=createCurrentFeatureID(i);
|
|
51 |
if (parser.match(featureID.getFeature(featureType))){
|
|
49 |
Feature feature = getFeature(i);
|
|
50 |
if (parser.match(feature)) {
|
|
52 | 51 |
bitSet.set(i); |
53 | 52 |
} |
54 | 53 |
} |
... | ... | |
58 | 57 |
} |
59 | 58 |
} |
60 | 59 |
|
61 |
protected FeatureID createCurrentFeatureID(long pos){ |
|
62 |
if (pos<driverFeatureCount){ |
|
63 |
return new DBFFeatureID(store,pos); |
|
64 |
} else { |
|
65 |
return null; |
|
66 |
} |
|
67 |
} |
|
68 |
|
|
69 | 60 |
public int size() { |
70 | 61 |
checkModified(); |
71 | 62 |
return bitSet.cardinality(); |
... | ... | |
169 | 160 |
current = bs.nextSetBit(current+1); |
170 | 161 |
|
171 | 162 |
try { |
172 |
feature = createCurrentFeatureID(current).getFeature(featureType);//new DBFFeature(featureType,store,current);
|
|
163 |
feature = getFeature(current);
|
|
173 | 164 |
} catch (ReadException e) { |
174 | 165 |
throw new RuntimeException(e); |
175 | 166 |
} |
... | ... | |
192 | 183 |
public Feature getFeature(int index) throws ReadException { |
193 | 184 |
Feature feature=null; |
194 | 185 |
if (index<driverFeatureCount){ |
195 |
return new DBFFeatureID(store, index).getFeature(featureType);
|
|
186 |
return store.getFeatureByIndex(index, featureType);
|
|
196 | 187 |
}else{ |
197 | 188 |
feature = null; |
198 | 189 |
} |
199 | 190 |
return feature; |
200 |
|
|
201 |
|
|
202 |
// |
|
203 |
// if (this.alterMode){ |
|
204 |
// DBFFeatureID id=new DBFFeatureID((DBFStore)store,index); |
|
205 |
// if (featureManager.contains(id)) { |
|
206 |
// return featureManager.getFeature(id,(DBFStore)store,featureType); |
|
207 |
// } |
|
208 |
// } |
|
209 |
// DBFFeature feature=new DBFFeature(featureType,(DBFStore)store,index); |
|
210 |
// return feature; |
|
211 | 191 |
} |
212 | 192 |
|
213 | 193 |
public boolean isFromStore(DataStore store) { |
branches/v2_0_0_prep/libraries/libFMap_dataFile/src/org/gvsig/fmap/data/feature/file/shp/SHPFeatureCollectionBitSet.java | ||
---|---|---|
1 | 1 |
package org.gvsig.fmap.data.feature.file.shp; |
2 | 2 |
|
3 | 3 |
import org.gvsig.fmap.data.ReadException; |
4 |
import org.gvsig.fmap.data.feature.Feature; |
|
5 |
import org.gvsig.fmap.data.feature.FeatureID; |
|
6 | 4 |
import org.gvsig.fmap.data.feature.FeatureType; |
7 | 5 |
import org.gvsig.fmap.data.feature.file.dbf.DBFFeatureCollectionBitSet; |
8 |
import org.gvsig.fmap.data.feature.file.dbf.DBFFeatureID; |
|
9 |
import org.gvsig.fmap.data.feature.file.dbf.DBFStore; |
|
10 | 6 |
|
11 | 7 |
public class SHPFeatureCollectionBitSet extends DBFFeatureCollectionBitSet{ |
12 | 8 |
|
13 | 9 |
protected SHPFeatureCollectionBitSet(SHPStore store, FeatureType type, String filter) throws ReadException { |
14 | 10 |
super(store, type, filter); |
15 | 11 |
} |
16 |
protected FeatureID createCurrentFeatureID(long pos){ |
|
17 |
if (pos<driverFeatureCount){ |
|
18 |
return new ShpFeatureID((SHPStore)store,pos); |
|
19 |
} else { |
|
20 |
return null; |
|
21 |
} |
|
22 |
} |
|
23 |
public Feature getFeature(int index) { |
|
24 |
Feature feature=null; |
|
25 |
if (index<driverFeatureCount){ |
|
26 |
try { |
|
27 |
return new ShpFeatureID((SHPStore)store,index).getFeature(featureType); |
|
28 |
} catch (ReadException e) { |
|
29 |
throw new RuntimeException(e); |
|
30 |
} |
|
31 |
}else{ |
|
32 |
feature = null; |
|
33 |
} |
|
34 |
return feature; |
|
35 |
} |
|
12 |
|
|
36 | 13 |
} |
branches/v2_0_0_prep/libraries/libFMap_dataFile/src/org/gvsig/fmap/data/feature/file/shp/SHPStore.java | ||
---|---|---|
22 | 22 |
import org.gvsig.fmap.data.feature.Feature; |
23 | 23 |
import org.gvsig.fmap.data.feature.FeatureAttributeDescriptor; |
24 | 24 |
import org.gvsig.fmap.data.feature.FeatureCollection; |
25 |
import org.gvsig.fmap.data.feature.FeatureID; |
|
26 | 25 |
import org.gvsig.fmap.data.feature.FeatureType; |
27 | 26 |
import org.gvsig.fmap.data.feature.FeaturesWriter; |
28 | 27 |
import org.gvsig.fmap.data.feature.IsNotAttributeSettingException; |
29 | 28 |
import org.gvsig.fmap.data.feature.file.FileExplorerParameters; |
30 |
import org.gvsig.fmap.data.feature.file.dbf.DBFFeature; |
|
31 |
import org.gvsig.fmap.data.feature.file.dbf.DBFFeatureID; |
|
32 | 29 |
import org.gvsig.fmap.data.feature.file.dbf.DBFStore; |
33 | 30 |
import org.gvsig.fmap.geom.primitive.Envelope; |
34 | 31 |
import org.gvsig.metadata.IMetadata; |
... | ... | |
106 | 103 |
return coll; |
107 | 104 |
} |
108 | 105 |
|
109 |
public Feature getFeatureByID(FeatureID id,FeatureType featureType) throws ReadException { |
|
110 |
if (featureType==null){ |
|
111 |
featureType=getDefaultFeatureType(); |
|
112 |
}else{ |
|
113 |
if (!featureType.isSubtypeOf(this.getDefaultFeatureType())){ |
|
114 |
throw new ReadException("invalid type",this.getName()); |
|
115 |
} |
|
106 |
/** |
|
107 |
* |
|
108 |
* NOT supported in Alter Mode |
|
109 |
* |
|
110 |
* @param index |
|
111 |
* @param featureType |
|
112 |
* @return |
|
113 |
* @throws ReadException |
|
114 |
*/ |
|
115 |
protected Feature getFeatureByIndex(long index, FeatureType featureType) |
|
116 |
throws ReadException { |
|
117 |
if (this.alterMode) { |
|
118 |
throw new ReadException(this.getName(), |
|
119 |
"Unsupported operation in alter mode"); |
|
116 | 120 |
} |
117 |
if (this.alterMode){ |
|
118 |
if (featureManager.contains(id)) { |
|
119 |
return featureManager.getFeature(id,this,featureType); |
|
120 |
} |
|
121 |
} |
|
122 |
long position=((ShpFeatureID)id).getIndex(); |
|
123 |
ShpFeature feature=new ShpFeature(featureType,this,position); |
|
121 |
ShpFeature feature = new ShpFeature(featureType, this, index); |
|
124 | 122 |
return feature; |
125 | 123 |
} |
126 | 124 |
|
... | ... | |
179 | 177 |
} |
180 | 178 |
|
181 | 179 |
public boolean isEditable() { |
182 |
if (super.isEditable() && this.shp.isEditable()) return true; |
|
180 |
if (super.isEditable() && this.shp.isEditable()) { |
|
181 |
return true; |
|
182 |
} |
|
183 | 183 |
return false; |
184 | 184 |
} |
185 | 185 |
|
... | ... | |
202 | 202 |
while(featureIterator.hasNext()){ |
203 | 203 |
Feature feature=(Feature)featureIterator.next(); |
204 | 204 |
Envelope boundExtent=feature.getExtent(); |
205 |
if (boundExtent!=null) |
|
205 |
if (boundExtent!=null) {
|
|
206 | 206 |
extent.add(boundExtent); |
207 |
} |
|
207 | 208 |
} |
208 | 209 |
} |
209 | 210 |
} |
Also available in: Unified diff