Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.db / org.gvsig.fmap.dal.db.h2 / src / test / java / org / gvsig / fmap / dal / store / h2 / STAsBinaryTest.java @ 44669

History | View | Annotate | Download (5.76 KB)

1
package org.gvsig.fmap.dal.store.h2;
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
                .setGeometryType(Geometry.TYPES.POINT, Geometry.SUBTYPES.GEOM2D).
55
                setSRS("EPSG:4326");
56
        explorer.add(TestUtils.PROVIDER_NAME, create_params, false);
57

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

    
102
        JDBCServerExplorer explorer = TestUtils.openServerExplorer(DBNAME);
103
        createEmptyTable(explorer, TABLE_EMPTY_WITH_GEOM);
104
        
105
        JDBCStoreParameters params = explorer.getOpenParameters();
106
        params.setTable(TABLE_EMPTY_WITH_GEOM);
107
        FeatureStore store = (FeatureStore) dataManager.openStore(TestUtils.PROVIDER_NAME, params);
108
        Envelope env = store.getEnvelope();
109
        assertNull(env);
110
    }
111

    
112
    public void testGetEnvelopeOfTableWithNullGeoms() throws Exception {
113
        DataManager dataManager = DALLocator.getDataManager();
114

    
115
        JDBCServerExplorer explorer = TestUtils.openServerExplorer(DBNAME);
116
        createTableWithNullGeoms(explorer, TABLE_WITH_NULL_GEOMS);
117
        
118
        JDBCStoreParameters params = explorer.getOpenParameters();
119
        params.setTable(TABLE_WITH_NULL_GEOMS);
120
        FeatureStore store = (FeatureStore) dataManager.openStore(TestUtils.PROVIDER_NAME, params);
121
        Envelope env = store.getEnvelope();
122
        assertNotNull(env);
123
        assertEquals("POLYGON ((10.0 10.0, 10.0 20.0, 20.0 20.0, 20.0 10.0, 10.0 10.0))", env.toString());
124
    }
125

    
126
    public void testIterateOverTableWithNullGeoms() throws Exception {
127
        DataManager dataManager = DALLocator.getDataManager();
128

    
129
        JDBCServerExplorer explorer = TestUtils.openServerExplorer(DBNAME);
130
        createTableWithNullGeoms(explorer, TABLE_WITH_NULL_GEOMS);
131
        
132
        JDBCStoreParameters params = explorer.getOpenParameters();
133
        params.setTable(TABLE_WITH_NULL_GEOMS);
134
        FeatureStore store = (FeatureStore) dataManager.openStore(TestUtils.PROVIDER_NAME, params);
135
        FeatureSet set = store.getFeatureSet();
136
        int sz = (int) set.getSize();
137
//        System.out.println("#### count: "+sz);
138
        for (Feature f : set ) {
139
//            System.out.println("#### feature: "+f.toString());
140
            if( !f.getBoolean("ISNULL") ) {
141
                assertNotNull(f.getGeometry("GEOM"));
142
            }
143
        }
144
        assertEquals(4, sz);
145
    }
146
}