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 / STAsBinaryTest.java @ 47606

History | View | Annotate | Download (6.26 KB)

1
package org.gvsig.sqlite.dal;
2

    
3
import junit.framework.TestCase;
4
import org.gvsig.fmap.dal.DALLocator;
5
import org.gvsig.fmap.dal.DataManager;
6
import org.gvsig.fmap.dal.DataTypes;
7
import org.gvsig.fmap.dal.feature.EditableFeature;
8
import org.gvsig.fmap.dal.feature.EditableFeatureType;
9
import org.gvsig.fmap.dal.feature.Feature;
10
import org.gvsig.fmap.dal.feature.FeatureSet;
11
import org.gvsig.fmap.dal.feature.FeatureStore;
12
import org.gvsig.fmap.dal.store.jdbc.JDBCNewStoreParameters;
13
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
14
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer;
15
import org.gvsig.fmap.geom.Geometry;
16
import org.gvsig.fmap.geom.GeometryUtils;
17
import org.gvsig.fmap.geom.primitive.Envelope;
18
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
19

    
20
/**
21
 *
22
 * @author jjdelcerro
23
 */
24
public class STAsBinaryTest extends TestCase {
25

    
26
    private static final String TABLE_EMPTY_WITH_GEOM = "TABLE_EMPTY_WITH_GEOM";
27
    private static final String TABLE_WITH_NULL_GEOMS = "TABLE_WITH_NULL_GEOMS";
28
    
29
    public static final String DBNAME = "STAsBinaryTest";
30
    
31
    public STAsBinaryTest(String testName) {
32
        super(testName);
33
    }
34

    
35
    @Override
36
    protected void setUp() throws Exception {
37
        super.setUp();
38
        new DefaultLibrariesInitializer().fullInitialize();
39
    }
40

    
41
    @Override
42
    protected void tearDown() throws Exception {
43
        super.tearDown();
44
    }
45
    private void createTableWithNullGeoms(JDBCServerExplorer explorer, String tableName) throws Exception {
46
        DataManager dataManager = DALLocator.getDataManager();
47

    
48
        JDBCNewStoreParameters create_params = explorer.getAddParameters();
49
        create_params.setTable(tableName);
50
        EditableFeatureType ft = create_params.getDefaultFeatureType();
51
        ft.add("ID", DataTypes.INT).setIsPrimaryKey(true);
52
        ft.add("ISNULL", DataTypes.BOOLEAN);
53
        ft.add("GEOM", DataTypes.GEOMETRY)
54
                .setIsIndexed(true)
55
                .setGeometryType(Geometry.TYPES.POINT, Geometry.SUBTYPES.GEOM2D).
56
                setSRS("EPSG:4326");
57
        explorer.add(TestUtils.PROVIDER_NAME, create_params, false);
58

    
59
        JDBCStoreParameters open_params = explorer.getOpenParameters();
60
        open_params.setTable(tableName);
61
        FeatureStore store = (FeatureStore) dataManager.openStore(TestUtils.PROVIDER_NAME, open_params);
62
        store.edit(FeatureStore.MODE_FULLEDIT);
63
        EditableFeature f;
64
        int id=1;
65
        f = store.createNewFeature();
66
        f.set("ID", id++);
67
        f.set("ISNULL", false);
68
        f.set("GEOM", GeometryUtils.createPoint(10, 10));
69
        store.insert(f);
70
        f = store.createNewFeature();
71
        f.set("ID", id++);
72
        f.set("ISNULL", true);
73
        f.set("GEOM", null);
74
        store.insert(f);
75
        f = store.createNewFeature();
76
        f.set("ID", id++);
77
        f.set("ISNULL", true);
78
        f.set("GEOM", null);
79
        store.insert(f);
80
        f = store.createNewFeature();
81
        f.set("ID", id++);
82
        f.set("ISNULL", false);
83
        f.set("GEOM", GeometryUtils.createPoint(20, 20));
84
        store.insert(f);
85
        store.finishEditing();
86
    }
87
    
88
    private void createEmptyTable(JDBCServerExplorer explorer, String tableName) throws Exception {
89
        JDBCNewStoreParameters params = explorer.getAddParameters();
90
        params.setTable(tableName);
91
        EditableFeatureType ft = params.getDefaultFeatureType();
92
        ft.add("ID", DataTypes.INT).setIsPrimaryKey(true);
93
        ft.add("ISNULL", DataTypes.BOOLEAN);
94
        ft.add("GEOM", DataTypes.GEOMETRY)
95
                .setIsIndexed(true)
96
                .setGeometryType(Geometry.TYPES.POINT, Geometry.SUBTYPES.GEOM2D).
97
                setSRS("EPSG:4326");
98
        explorer.add(TestUtils.PROVIDER_NAME, params, false);
99
    }
100
    
101
    public void testGetEnvelopeOfEmptyTable() throws Exception {
102
        try {
103
            DataManager dataManager = DALLocator.getDataManager();
104

    
105
            JDBCServerExplorer explorer = TestUtils.openServerExplorer(DBNAME);
106
            createEmptyTable(explorer, TABLE_EMPTY_WITH_GEOM);
107

    
108
            JDBCStoreParameters params = explorer.getOpenParameters();
109
            params.setTable(TABLE_EMPTY_WITH_GEOM);
110
            FeatureStore store = (FeatureStore) dataManager.openStore(TestUtils.PROVIDER_NAME, params);
111
            Envelope env = store.getEnvelope();
112
            assertNull(env);
113
        } catch (Throwable th) {
114
            th.printStackTrace();
115
            throw th;
116
        }
117
    }
118

    
119
    public void testGetEnvelopeOfTableWithNullGeoms() throws Exception {
120
        try {
121
            DataManager dataManager = DALLocator.getDataManager();
122

    
123
            JDBCServerExplorer explorer = TestUtils.openServerExplorer(DBNAME);
124
            createTableWithNullGeoms(explorer, TABLE_WITH_NULL_GEOMS);
125

    
126
            JDBCStoreParameters params = explorer.getOpenParameters();
127
            params.setTable(TABLE_WITH_NULL_GEOMS);
128
            FeatureStore store = (FeatureStore) dataManager.openStore(TestUtils.PROVIDER_NAME, params);
129
            Envelope env = store.getEnvelope();
130
            assertNotNull(env);
131
            assertEquals("POLYGON ((10.0 10.0, 10.0 20.0, 20.0 20.0, 20.0 10.0, 10.0 10.0))", env.toString());
132
        } catch (Throwable th) {
133
            th.printStackTrace();
134
            throw th;
135
        }
136

    
137
    }
138

    
139
    public void testIterateOverTableWithNullGeoms() throws Exception {
140
        try {
141
            DataManager dataManager = DALLocator.getDataManager();
142

    
143
            JDBCServerExplorer explorer = TestUtils.openServerExplorer(DBNAME);
144
            createTableWithNullGeoms(explorer, TABLE_WITH_NULL_GEOMS);
145

    
146
            JDBCStoreParameters params = explorer.getOpenParameters();
147
            params.setTable(TABLE_WITH_NULL_GEOMS);
148
            FeatureStore store = (FeatureStore) dataManager.openStore(TestUtils.PROVIDER_NAME, params);
149
            FeatureSet set = store.getFeatureSet();
150
            int sz = (int) set.getSize();
151
    //        System.out.println("#### count: "+sz);
152
            for (Feature f : set ) {
153
    //            System.out.println("#### feature: "+f.toString());
154
                if( !f.getBoolean("ISNULL") ) {
155
                    assertNotNull(f.getGeometry("GEOM"));
156
                }
157
            }
158
            assertEquals(4, sz);
159
        } catch (Exception ex) {
160
            ex.printStackTrace();
161
            throw ex;
162
        }
163
    }
164
}