Revision 19603 trunk/libraries/libDataSourceBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/dxf/DXFFeaturesReader.java
DXFFeaturesReader.java | ||
---|---|---|
1 | 1 |
package org.gvsig.data.datastores.vectorial.driver.dxf; |
2 | 2 |
|
3 |
import java.util.ArrayList; |
|
4 |
import java.util.Collection; |
|
5 |
import java.util.Comparator; |
|
6 |
import java.util.Iterator; |
|
7 |
import java.util.TreeSet; |
|
8 |
|
|
3 | 9 |
import org.gvsig.data.datastores.vectorial.driver.IDriver; |
4 | 10 |
import org.gvsig.data.datastores.vectorial.driver.IFeaturesReader; |
11 |
import org.gvsig.data.exception.ReadException; |
|
12 |
import org.gvsig.data.vectorial.IFeature; |
|
13 |
import org.gvsig.data.vectorial.IFeatureAttributeDescriptor; |
|
5 | 14 |
import org.gvsig.data.vectorial.IFeatureCollection; |
6 | 15 |
import org.gvsig.data.vectorial.IFeatureType; |
16 |
import org.gvsig.data.vectorial.MemoryFeature; |
|
7 | 17 |
import org.gvsig.data.vectorial.expansionadapter.FeatureManager; |
18 |
import org.gvsig.data.vectorial.filter.FeatureFilterParser; |
|
19 |
import org.gvsig.data.vectorial.order.FeatureComparator; |
|
8 | 20 |
|
9 | 21 |
class DXFFeaturesReader implements IFeaturesReader { |
22 |
private DXFDriver driver; |
|
10 | 23 |
|
11 |
|
|
12 | 24 |
public void init(IDriver driver) { |
25 |
this.driver=(DXFDriver)driver; |
|
26 |
} |
|
13 | 27 |
|
28 |
public IFeatureCollection getFeatures(FeatureManager featureManager,IFeatureType type, String filter, String order) { |
|
29 |
IFeatureCollection coll; |
|
14 | 30 |
|
15 |
} |
|
31 |
//TODO aplicar filtro, orden e incluso y el featureType |
|
32 |
FeatureFilterParser parser = null; |
|
33 |
if (filter!=null){ |
|
34 |
parser = new FeatureFilterParser(filter,type); |
|
35 |
} |
|
36 |
ArrayList originalFeatures=driver.getFeatures(); |
|
37 |
int num=featureManager.getNum(); |
|
38 |
int originalSize=originalFeatures.size(); |
|
39 |
Collection allFeatures=null; |
|
40 |
if (order!=null){ |
|
41 |
Comparator comparator = new FeatureComparator(type,order); |
|
42 |
allFeatures = new TreeSet(comparator); |
|
43 |
}else{ |
|
44 |
allFeatures=new ArrayList(); |
|
45 |
} |
|
46 |
for (int i = 0; i < originalSize+num; i++) { |
|
47 |
IFeature feature=null; |
|
48 |
if (i<driver.getFeatureCount()){ |
|
49 |
feature=driver.getFeature(i); |
|
50 |
}else{ |
|
51 |
feature=featureManager.getFeature(i-originalSize); |
|
52 |
} |
|
53 |
if (!featureManager.isDeleted(feature)){ |
|
54 |
try { |
|
55 |
MemoryFeature auxfeature=new MemoryFeature(type,false); |
|
56 |
auxfeature.setDefaultGeometry(feature.getDefaultGeometry()); |
|
57 |
for (Iterator iter = type.iterator(); iter |
|
58 |
.hasNext();) { |
|
59 |
IFeatureAttributeDescriptor fad = (IFeatureAttributeDescriptor) iter.next(); |
|
60 |
String name=fad.getName(); |
|
61 |
auxfeature.set(name,feature.get(name)); |
|
62 |
} |
|
63 |
if (filter==null || parser.match(auxfeature)){ |
|
64 |
allFeatures.add(auxfeature); |
|
65 |
} |
|
16 | 66 |
|
17 |
public IFeatureCollection getFeatures(FeatureManager featureManager,IFeatureType type, String filter, String order) { |
|
18 |
// TODO Auto-generated method stub |
|
19 |
return null; |
|
67 |
} catch (ReadException e) { |
|
68 |
// TODO Auto-generated catch block |
|
69 |
e.printStackTrace(); |
|
70 |
} |
|
71 |
} |
|
72 |
|
|
73 |
} |
|
74 |
|
|
75 |
coll=new DXFFeatureCollection(allFeatures); |
|
76 |
return coll; |
|
20 | 77 |
} |
21 | 78 |
|
22 | 79 |
} |
Also available in: Unified diff