Revision 22968

View differences:

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