svn-gvsig-desktop / trunk / libraries / libDataSourceBaseDrivers / src-test / org / gvsig / data / datastores / vectorial / driver / DataStoreTest.java @ 19472
History | View | Annotate | Download (9.48 KB)
1 |
package org.gvsig.data.datastores.vectorial.driver; |
---|---|
2 |
|
3 |
import java.io.File; |
4 |
import java.util.Iterator; |
5 |
|
6 |
import junit.framework.TestCase; |
7 |
|
8 |
import org.gvsig.data.DataSourceManager; |
9 |
import org.gvsig.data.IDataStoreParameters; |
10 |
import org.gvsig.data.datastores.vectorial.driver.dbf.DBFDriverParameters; |
11 |
import org.gvsig.data.datastores.vectorial.driver.shp.ShpDriverParameters; |
12 |
import org.gvsig.data.datastores.vectorial.driver.shp.fileshp.SHP; |
13 |
import org.gvsig.data.exception.CloseException; |
14 |
import org.gvsig.data.exception.InitializeException; |
15 |
import org.gvsig.data.exception.ReadException; |
16 |
import org.gvsig.data.exception.WriteException; |
17 |
import org.gvsig.data.vectorial.IFeature; |
18 |
import org.gvsig.data.vectorial.IFeatureAttributeDescriptor; |
19 |
import org.gvsig.data.vectorial.IFeatureCollection; |
20 |
import org.gvsig.data.vectorial.IFeatureStore; |
21 |
import org.gvsig.data.vectorial.IFeatureType; |
22 |
import org.gvsig.data.visitor.IVisitor; |
23 |
|
24 |
public class DataStoreTest extends TestCase { |
25 |
|
26 |
private File dbffile = new File(DataStoreTest.class.getResource("data/prueba.dbf").getFile()); |
27 |
private File shpfile = new File(DataStoreTest.class.getResource("data/prueba.shp").getFile()); |
28 |
|
29 |
public static void main(String[] args) { |
30 |
junit.textui.TestRunner.run(DataStoreTest.class); |
31 |
} |
32 |
|
33 |
protected void setUp() throws Exception { |
34 |
super.setUp();
|
35 |
|
36 |
} |
37 |
|
38 |
public void testDBF() { |
39 |
System.out.println("======= DBF =============="); |
40 |
org.gvsig.data.datastores.vectorial.driver.dbf.Register.selfRegister(); |
41 |
org.gvsig.data.datastores.vectorial.driver.Register.selfRegister(); |
42 |
|
43 |
DataSourceManager dsm=DataSourceManager.getManager(); |
44 |
|
45 |
|
46 |
IDriverParameters dp=dsm.createDriverParameters("dbf");
|
47 |
((DBFDriverParameters)dp).setDBFFile(dbffile); |
48 |
|
49 |
driverTest(dp,null,null,true); |
50 |
|
51 |
IFeatureStore fs = createFeatureStore(dp); |
52 |
assertNotNull("Can't create Feature Store", fs);
|
53 |
|
54 |
fs.open(); |
55 |
|
56 |
Iterator it;
|
57 |
IFeatureCollection fc; |
58 |
Comparable v1,v2;
|
59 |
IFeature feature,pfeature; |
60 |
long count;
|
61 |
|
62 |
|
63 |
fc = (IFeatureCollection)fs.getDataCollection(); |
64 |
|
65 |
assertEquals(9, fc.size());
|
66 |
|
67 |
fc = (IFeatureCollection)fs.getDataCollection(null,"lower(NOMBRE) like 'b%'",null); |
68 |
|
69 |
// assertEquals(2, fc.size());
|
70 |
|
71 |
it = fc.iterator(); |
72 |
count=0;
|
73 |
while (it.hasNext()){
|
74 |
feature = (IFeature)it.next(); |
75 |
System.out.println(feature.getString("NOMBRE")); |
76 |
assertTrue("Filter error",feature.getString("NOMBRE").toLowerCase().startsWith("b")); |
77 |
count++; |
78 |
} |
79 |
assertEquals("Iteration error",2,count); |
80 |
|
81 |
|
82 |
fc = (IFeatureCollection)fs.getDataCollection(null,null,"ASC NOMBRE"); |
83 |
assertEquals(9, fc.size());
|
84 |
// FIXME: falta test
|
85 |
it = fc.iterator(); |
86 |
count=0;
|
87 |
pfeature = (IFeature)it.next(); |
88 |
count++; |
89 |
while (it.hasNext()){
|
90 |
feature = (IFeature)it.next(); |
91 |
v1 = (Comparable)pfeature.get("NOMBRE"); |
92 |
v2 = (Comparable)feature.get("NOMBRE"); |
93 |
pfeature=feature; |
94 |
System.out.println("OJO!!!! NO SE ESTAN HACINEDO COMPROBACIONES DE ORDEN"); |
95 |
// assertTrue("Short error", (v1.compareTo(v1) <= 0));
|
96 |
count++; |
97 |
} |
98 |
assertEquals("Iteration error",9,count); |
99 |
|
100 |
|
101 |
fc = (IFeatureCollection)fs.getDataCollection(null,null,"DESC NOMBRE"); |
102 |
assertEquals(9, fc.size());
|
103 |
// FIXME: falta test
|
104 |
it = fc.iterator(); |
105 |
|
106 |
count=0;
|
107 |
pfeature = (IFeature)it.next(); |
108 |
count++; |
109 |
while (it.hasNext()){
|
110 |
feature = (IFeature)it.next(); |
111 |
v1 = (Comparable)pfeature.get("NOMBRE"); |
112 |
v2 = (Comparable)feature.get("NOMBRE"); |
113 |
pfeature=feature; |
114 |
System.out.println("OJO!!!! NO SE ESTAN HACINEDO COMPROBACIONES DE ORDEN"); |
115 |
// assertTrue("Short error", (v1.compareTo(v1) >= 0));
|
116 |
count++; |
117 |
} |
118 |
assertEquals("Iteration error",9,count); |
119 |
|
120 |
|
121 |
fc = (IFeatureCollection)fs.getDataCollection(null,"lower(NOMBRE) like 'b%'","ASC NOMBRE"); |
122 |
|
123 |
assertEquals(2, fc.size());
|
124 |
|
125 |
it = fc.iterator(); |
126 |
|
127 |
count=0;
|
128 |
pfeature = (IFeature)it.next(); |
129 |
assertTrue(pfeature.getString("NOMBRE").toLowerCase().startsWith("b")); |
130 |
count++; |
131 |
while (it.hasNext()){
|
132 |
feature = (IFeature)it.next(); |
133 |
assertTrue("Filter error",feature.getString("NOMBRE").toLowerCase().startsWith("b")); |
134 |
v1 = (Comparable)pfeature.get("NOMBRE"); |
135 |
v2 = (Comparable)feature.get("NOMBRE"); |
136 |
pfeature=feature; |
137 |
System.out.println("OJO!!!! NO SE ESTAN HACINEDO COMPROBACIONES DE ORDEN"); |
138 |
// assertTrue("Short error", (v1.compareTo(v1) <= 0));
|
139 |
count++; |
140 |
} |
141 |
assertEquals("Iteration error",2,count); |
142 |
|
143 |
try {
|
144 |
fs.close(); |
145 |
} catch (CloseException e) {
|
146 |
e.printStackTrace(); |
147 |
fail("Exception:" + e);
|
148 |
} |
149 |
|
150 |
|
151 |
System.out.println("======= /DBF =============="); |
152 |
|
153 |
} |
154 |
|
155 |
public void testSHP() { |
156 |
System.out.println("======= SHP =============="); |
157 |
org.gvsig.data.datastores.vectorial.driver.shp.Register.selfRegister(); |
158 |
org.gvsig.data.datastores.vectorial.driver.dbf.Register.selfRegister(); |
159 |
org.gvsig.data.datastores.vectorial.driver.Register.selfRegister(); |
160 |
|
161 |
DataSourceManager dsm=DataSourceManager.getManager(); |
162 |
|
163 |
|
164 |
IDriverParameters dp=dsm.createDriverParameters("shp");
|
165 |
((ShpDriverParameters)dp).setSHPFile(shpfile); |
166 |
((ShpDriverParameters)dp).setSHXFile(SHP.getShxFile(shpfile)); |
167 |
((ShpDriverParameters)dp).setDBFFile(SHP.getDbfFile(shpfile)); |
168 |
|
169 |
|
170 |
driverTest(dp,null,null,true); |
171 |
|
172 |
|
173 |
|
174 |
|
175 |
System.out.println("======= /SHP =============="); |
176 |
|
177 |
} |
178 |
|
179 |
private IFeatureStore createFeatureStore(IDriverParameters dp){
|
180 |
DataSourceManager dsm=DataSourceManager.getManager(); |
181 |
|
182 |
IDataStoreParameters dsp=dsm.createDataStoreParameters(DriverStore.DATASTORE_NAME); |
183 |
|
184 |
((IDriverStoreParameters)dsp).setDriverParameters(dp); |
185 |
IFeatureStore fs=null;
|
186 |
try {
|
187 |
fs = (IFeatureStore)dsm.createDataStore(dsp); |
188 |
} catch (InitializeException e) {
|
189 |
e.printStackTrace(); |
190 |
fail("Exception:" + e);
|
191 |
} |
192 |
return fs;
|
193 |
|
194 |
} |
195 |
|
196 |
|
197 |
private void driverTest(IDriverParameters dp,String filter, String order,boolean testEdit){ |
198 |
DataSourceManager dsm=DataSourceManager.getManager(); |
199 |
|
200 |
IDataStoreParameters dsp=dsm.createDataStoreParameters(DriverStore.DATASTORE_NAME); |
201 |
|
202 |
((IDriverStoreParameters)dsp).setDriverParameters(dp); |
203 |
IFeatureStore fs=createFeatureStore(dp); |
204 |
|
205 |
fs.open(); |
206 |
|
207 |
if (fs.isEditable() && testEdit) {
|
208 |
fs.startEditing(); |
209 |
|
210 |
IFeature feature1 = fs.createDefaultFeature(false);
|
211 |
IFeature feature2 = fs.createDefaultFeature(false);
|
212 |
IFeature feature3 = fs.createDefaultFeature(false);
|
213 |
|
214 |
fs.insert(feature1); |
215 |
fs.insert(feature2); |
216 |
|
217 |
fs.update(feature3,feature1); |
218 |
fs.delete(feature3); |
219 |
fs.delete(feature2); |
220 |
} |
221 |
|
222 |
//Mostrar por consola todos los registros.
|
223 |
IFeatureType ft= fs.getDefaultFeatureType(); |
224 |
IFeatureCollection featureCollection; |
225 |
// featureCollection = (IFeatureCollection)fs.getDataCollection();
|
226 |
// featureCollection = (IFeatureCollection)fs.getDataCollection(ft,"NOMBRE = 'CALPE'",null);
|
227 |
// featureCollection = (IFeatureCollection)fs.getDataCollection(ft,"AREA > 3.2213163729E7 and AREA < 3.2213163749E7",null);
|
228 |
featureCollection = (IFeatureCollection)fs.getDataCollection(ft,filter,order); |
229 |
|
230 |
VisitorExample visitor=new VisitorExample(ft);
|
231 |
featureCollection.accept(visitor); |
232 |
|
233 |
if (fs.isEditable() && testEdit){
|
234 |
try {
|
235 |
fs.finishEditing(); |
236 |
} catch (WriteException e) {
|
237 |
e.printStackTrace(); |
238 |
fail("Exception: "+e);
|
239 |
} catch (ReadException e) {
|
240 |
e.printStackTrace(); |
241 |
fail("Exception: "+e);
|
242 |
} |
243 |
} |
244 |
try {
|
245 |
fs.close(); |
246 |
} catch (CloseException e) {
|
247 |
e.printStackTrace(); |
248 |
fail("Exception: "+e);
|
249 |
} |
250 |
fs.dispose(); |
251 |
} |
252 |
|
253 |
private class VisitorExample implements IVisitor{ |
254 |
private IFeatureType featureType;
|
255 |
public VisitorExample(IFeatureType ft){
|
256 |
this.featureType=ft;
|
257 |
} |
258 |
|
259 |
public void visit(Object obj) { |
260 |
IFeature feature=(IFeature)obj; |
261 |
System.out.println("Feature Class ------------------- "+feature.getClass().toString()); |
262 |
for (int i=0;i<featureType.size();i++){ |
263 |
|
264 |
IFeatureAttributeDescriptor descriptor=(IFeatureAttributeDescriptor)featureType.get(i); |
265 |
String type=descriptor.getDataType();
|
266 |
if (type.equals(IFeatureAttributeDescriptor.TYPE_BOOLEAN)){
|
267 |
System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getBoolean(i)+ "---- Boolean"); |
268 |
}else if (type.equals(IFeatureAttributeDescriptor.TYPE_BYTE)){ |
269 |
System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getByte(i)+ "---- Byte"); |
270 |
}else if (type.equals(IFeatureAttributeDescriptor.TYPE_DATE)){ |
271 |
System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getDate(i)+ "---- Date"); |
272 |
}else if (type.equals(IFeatureAttributeDescriptor.TYPE_DOUBLE)){ |
273 |
System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getDouble(i)+ "---- Double"); |
274 |
}else if (type.equals(IFeatureAttributeDescriptor.TYPE_FLOAT)){ |
275 |
System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getFloat(i)+ "---- Float"); |
276 |
}else if (type.equals(IFeatureAttributeDescriptor.TYPE_INT)){ |
277 |
System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getInt(i)+ "---- Integer"); |
278 |
}else if (type.equals(IFeatureAttributeDescriptor.TYPE_LONG)){ |
279 |
System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getLong(i)+ "---- Long"); |
280 |
}else if (type.equals(IFeatureAttributeDescriptor.TYPE_STRING)){ |
281 |
System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getString(i)+ "---- String"); |
282 |
} |
283 |
} |
284 |
} |
285 |
|
286 |
} |
287 |
} |