svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.sqlite / org.gvsig.sqlite.provider / src / test / java / org / gvsig / sqlite / dal / TestRead.java @ 47456
History | View | Annotate | Download (5.9 KB)
1 |
package org.gvsig.sqlite.dal; |
---|---|
2 |
|
3 |
import java.io.File; |
4 |
import java.net.URL; |
5 |
import junit.framework.TestCase; |
6 |
import org.apache.commons.io.IOUtils; |
7 |
import org.gvsig.fmap.dal.DALLocator; |
8 |
import org.gvsig.fmap.dal.DataManager; |
9 |
import org.gvsig.fmap.dal.DataTypes; |
10 |
import org.gvsig.fmap.dal.exception.ValidateDataParametersException; |
11 |
import org.gvsig.fmap.dal.feature.Feature; |
12 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
13 |
import org.gvsig.fmap.dal.feature.FeatureSet; |
14 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
15 |
import org.gvsig.fmap.dal.feature.FeatureType; |
16 |
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters; |
17 |
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer; |
18 |
import org.gvsig.fmap.geom.GeometryUtils; |
19 |
import org.gvsig.tools.ToolsLocator; |
20 |
import org.gvsig.tools.dataTypes.DataType; |
21 |
import org.gvsig.tools.dataTypes.DataTypeUtils; |
22 |
import org.gvsig.tools.dataTypes.DataTypesManager; |
23 |
import org.gvsig.tools.dispose.DisposeUtils; |
24 |
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
25 |
import org.slf4j.Logger; |
26 |
import org.slf4j.LoggerFactory; |
27 |
|
28 |
public class TestRead extends TestCase { |
29 |
private static final Logger LOGGER = LoggerFactory.getLogger(TestRead.class); |
30 |
|
31 |
public static final String DBNAME = "rte"; |
32 |
|
33 |
public TestRead(String testName) { |
34 |
super(testName);
|
35 |
} |
36 |
|
37 |
@Override
|
38 |
protected void setUp() throws Exception { |
39 |
super.setUp();
|
40 |
new DefaultLibrariesInitializer().fullInitialize();
|
41 |
} |
42 |
|
43 |
@Override
|
44 |
protected void tearDown() throws Exception { |
45 |
super.tearDown();
|
46 |
} |
47 |
|
48 |
private TestUtilsSQLite utils = null; |
49 |
|
50 |
public TestUtilsSQLite utils() {
|
51 |
if( this.utils == null ) { |
52 |
this.utils = new TestUtilsSQLite(); |
53 |
} |
54 |
return this.utils; |
55 |
} |
56 |
|
57 |
// TODO add test methods here. The name must begin with 'test'. For example:
|
58 |
// public void testHello() {}
|
59 |
|
60 |
protected FeatureStore openStore1(JDBCServerExplorer explorer) throws Exception { |
61 |
JDBCStoreParameters params = explorer.get("cats_feature");
|
62 |
|
63 |
DataManager dataManager = DALLocator.getDataManager(); |
64 |
FeatureStore store; |
65 |
try {
|
66 |
store = (FeatureStore) dataManager.openStore( |
67 |
utils().getProviderName(), |
68 |
params |
69 |
); |
70 |
} catch(ValidateDataParametersException ex) {
|
71 |
LOGGER.warn(ex.getLocalizedMessageStack()); |
72 |
throw ex;
|
73 |
} |
74 |
return store;
|
75 |
} |
76 |
|
77 |
|
78 |
public void testReadBasic1() throws Exception { |
79 |
try {
|
80 |
String dbfilename = DBNAME+".gpkg"; |
81 |
URL url = this.getClass().getResource(dbfilename); |
82 |
File tmp = new File( utils().getTargetFolder(), dbfilename); |
83 |
IOUtils.copy(url, tmp); |
84 |
|
85 |
JDBCServerExplorer explorer = utils().openServerExplorer(tmp); |
86 |
|
87 |
FeatureStore store1 = openStore1(explorer); |
88 |
FeatureType ft = store1.getDefaultFeatureType(); |
89 |
|
90 |
Object[][] expecteds = new Object[][] { |
91 |
new Object[] { 0, "id", DataTypes.INTEGER}, |
92 |
new Object[] { 1, "geometry", DataTypes.GEOMETRY}, |
93 |
new Object[] { 2, "text_attribute", DataTypes.STRING}, |
94 |
new Object[] { 3, "real_attribute", DataTypes.DOUBLE}, |
95 |
new Object[] { 4, "relation", DataTypes.STRING} |
96 |
}; |
97 |
assertEquals("Field count mismatch", expecteds.length, ft.size());
|
98 |
for (Object[] expected : expecteds) { |
99 |
int index = (int)expected[0]; |
100 |
String fieldname = (String) expected[1]; |
101 |
FeatureAttributeDescriptor attr = ft.getAttributeDescriptor(index); |
102 |
assertEquals("field "+fieldname+" name mismatch", expected[1], attr.getName()); |
103 |
assertEquals("field "+fieldname+" type mismatch", getTypeId(((Number)expected[2]).intValue()), getTypeId(attr.getType())); |
104 |
} |
105 |
|
106 |
expecteds = new Object[][] { |
107 |
new Object[] { 1, GeometryUtils.createFrom("0000000001c0110062413529f34044147906c0d66f"), "some cat", null, null }, |
108 |
new Object[] { 2, GeometryUtils.createFrom("0000000001401e9a4a755fb1e840478f5c6abe951a"), "other cat", null, null }, |
109 |
new Object[] { 3, GeometryUtils.createFrom("000000000140326b151bf99810404a77bd6b72d639"), "third cat", null, null }, |
110 |
new Object[] { 4, GeometryUtils.createFrom("000000000140338d3dcafd236840472bec6d188172"), "last cat", null, null }, |
111 |
}; |
112 |
FeatureSet set = store1.getFeatureSet(); |
113 |
assertEquals("Numero de lineas incorrecto", expecteds.length, set.size());
|
114 |
int n = 0; |
115 |
for (Feature feature : set) {
|
116 |
checkEquals("feature "+n+" id mismatch", feature, "id", expecteds[n][0]); |
117 |
checkEquals("feature "+n+" erroneo", feature, "geometry", expecteds[n][1]); |
118 |
checkEquals("feature "+n+" text_attribute mismatch", feature, "text_attribute", expecteds[n][2]); |
119 |
checkEquals("feature "+n+" real_attribute mismatch", feature, "real_attribute", expecteds[n][3]); |
120 |
checkEquals("feature "+n+" relation mismatch", feature, "relation", expecteds[n][4]); |
121 |
n++; |
122 |
} |
123 |
DisposeUtils.dispose(set); |
124 |
|
125 |
DisposeUtils.dispose(store1); |
126 |
|
127 |
} catch(Throwable t) { |
128 |
LOGGER.warn("",t);
|
129 |
throw t;
|
130 |
} |
131 |
|
132 |
} |
133 |
|
134 |
|
135 |
private void checkEquals(String s, Feature f, String attrname, Object expected) { |
136 |
s = s + " ("+attrname+")"; |
137 |
Object value = f.get(attrname);
|
138 |
if( expected == null ) { |
139 |
assertNull(s, value); |
140 |
return;
|
141 |
} |
142 |
assertEquals(s, expected, value); |
143 |
} |
144 |
|
145 |
private String getTypeId(int type) { |
146 |
DataTypesManager manager = ToolsLocator.getDataTypesManager(); |
147 |
DataType datatype = manager.get(type); |
148 |
return datatype.getName()+"("+type+")"; |
149 |
} |
150 |
} |