Statistics
| Revision:

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
}