Revision 19663 trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2FeatureCollectionWithFeatureID.java

View differences:

H2FeatureCollectionWithFeatureID.java
3 3
import java.util.ArrayList;
4 4
import java.util.Collection;
5 5
import java.util.Comparator;
6
import java.util.HashMap;
6 7
import java.util.Iterator;
8
import java.util.Map;
7 9
import java.util.TreeSet;
8 10

  
9 11
import org.gvsig.data.ComplexObservable;
......
14 16
import org.gvsig.data.vectorial.IFeatureID;
15 17
import org.gvsig.data.vectorial.IFeatureType;
16 18
import org.gvsig.data.vectorial.expansionadapter.FeatureManager;
19
import org.gvsig.data.vectorial.filter.FeatureFilterParser;
17 20
import org.gvsig.data.vectorial.order.FeatureComparator;
18 21

  
19 22

  
20
//FIXME: OJO Excepciones
21 23
public class H2FeatureCollectionWithFeatureID extends AbstractFeatureCollection {
22 24
	protected ComplexObservable observable = new ComplexObservable();
23 25
	protected Collection featureIDs;//<IFeatureID>
24 26
	protected IFeatureType featureType;
25 27

  
26
	public H2FeatureCollectionWithFeatureID(FeatureManager fm,H2Driver driver,IFeatureType type, String filter,String Order) {
28

  
29
	public H2FeatureCollectionWithFeatureID(FeatureManager fm,H2Driver driver,IFeatureType type, String filter,String order) throws ReadException {
27 30
		this.featureType=type;
28
		intilizeFeatureIDs(fm, driver, filter, Order);
31
		intilizeFeatureIDs(fm, driver, filter, order);
29 32
	}
30 33

  
31
	protected void intilizeFeatureIDs(FeatureManager fm,H2Driver driver, String filter,String order) {
32
//		if (order == null){
33
//			if (filter == null){
34
//				featureIDs = new ArrayList(); // Si queremos optimizar deberiamos inicializar
35
//				// el tama?o
36
//			} else {
37
//				featureIDs = new ArrayList();
38
//			}
39
//		} else {
40
//			Comparator comparator = new FeatureComparator(this.featureType,order);
41
//			featureIDs = new TreeSet(comparator);
42
//		}
43
//		IFeatureCollection coll = new H2FeatureCollection(fm,driver,this.featureType,filter);
44
//		Iterator iter = coll.iterator();
45
//		while (iter.hasNext()){
46
//			IFeature feature =(IFeature)iter.next();
47
//			featureIDs.add(feature.getID());
48
//		}
34
	protected void intilizeFeatureIDs(FeatureManager fm,H2Driver driver, String filter,String order) throws ReadException {
35
		FeatureFilterParser parser = null;
36
		IFeature feature;
37
		Collection tmpFeatures;
38
		if (order == null){
39
			if (filter == null){
40
				tmpFeatures = new ArrayList(); // Si queremos optimizar deberiamos inicializar
41
				// el tama?o
42
			} else {
43
				tmpFeatures = new ArrayList();
44
			}
45
		} else {
46
			Comparator comparator = new FeatureComparator(this.featureType,order);
47
			tmpFeatures = new TreeSet(comparator);
48
		}
49

  
50
		if (filter != null && filter != ""){
51
			parser = new FeatureFilterParser(filter,featureType);
52
		}
53
		for (int i=0;i<fm.getNum();i++){
54
			feature = fm.getFeature(i);
55
			if (fm.isDeleted(feature)){
56
				continue;
57
			}
58
			if (parser == null || parser.match(feature)){
59
				if (order != null){
60
					tmpFeatures.add(feature);
61
				} else {
62
					tmpFeatures.add(feature.getID());
63
				}
64
			}
65

  
66

  
67
		}
68

  
69
		IFeatureCollection coll = new H2FeatureCollection(driver,this.featureType,filter,order);
70
		Iterator iter = coll.iterator();
71
		while (iter.hasNext()){
72
			feature =(IFeature)iter.next();
73
			if (!fm.isDeleted(feature)){
74
				if (order != null){
75
					tmpFeatures.add(feature);
76
				} else {
77
					tmpFeatures.add(feature.getID());
78
				}
79
			}
80
		}
81

  
82
		if (order != null){
83
			featureIDs = new ArrayList();
84
			iter = tmpFeatures.iterator();
85
			while (iter.hasNext()){
86
				featureIDs.add(((IFeature)iter.next()).getID());
87
			}
88
		} else {
89
			featureIDs = tmpFeatures;
90
		}
91

  
92

  
49 93
	}
50 94

  
51 95
	public int size() {
......
133 177
		}
134 178

  
135 179
		public Object next() {
180

  
136 181
			IFeatureID fid= (IFeatureID)iter.next();
137 182
			IFeature feature;
138 183
			try {

Also available in: Unified diff