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.jdbc / src / test / java / org / gvsig / fmap / dal / store / jdbc2 / operations / sql / AbstractTestPerformChangesUpdateStructure.java @ 46101

History | View | Annotate | Download (11.9 KB)

1
package org.gvsig.fmap.dal.store.jdbc2.operations.sql;
2

    
3
import java.util.Collections;
4
import java.util.List;
5
import junit.framework.TestCase;
6
import org.gvsig.fmap.dal.feature.EditableFeatureType;
7
import org.gvsig.fmap.dal.feature.FeatureStore;
8
import org.gvsig.fmap.dal.feature.FeatureType;
9
import org.gvsig.fmap.dal.store.jdbc2.AbstractTestUtils;
10
import org.gvsig.fmap.dal.store.jdbc2.AbstractTestUtils.Expecteds;
11
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
12
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory;
13
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference;
14
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
15
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.PerformChangesOperation;
16
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
17
import org.slf4j.Logger;
18
import org.slf4j.LoggerFactory;
19

    
20
@SuppressWarnings("UseSpecificCatch")
21
public abstract class AbstractTestPerformChangesUpdateStructure extends TestCase {
22

    
23
    protected static final Logger LOGGER = LoggerFactory.getLogger(AbstractTestPerformChangesUpdateStructure.class);
24

    
25
    protected AbstractTestUtils utils;
26

    
27
    public AbstractTestPerformChangesUpdateStructure(String testName) {
28
        super(testName);
29
    }
30

    
31
    @Override
32
    protected void setUp() throws Exception {
33
        super.setUp();
34
        new DefaultLibrariesInitializer().fullInitialize();
35
    }
36

    
37
    @Override
38
    protected void tearDown() throws Exception {
39
        super.tearDown();
40
    }
41

    
42
    public AbstractTestUtils utils() {
43
        if (this.utils == null) {
44
            this.utils = this.createUtils();
45
        }
46
        return this.utils;
47
    }
48

    
49
    protected abstract AbstractTestUtils createUtils();
50

    
51
    public void testPerformChangesAddPk() throws Exception {
52
        JDBCHelper helper = utils().createJDBCHelper();
53
        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
54
        OperationsFactory operations = helper.getOperations();
55

    
56
        Expecteds expecteds = utils().getExpecteds("performChangesUpdateStructure.txt");
57

    
58
        FeatureStore sourceStore = utils().openSourceStore1();
59

    
60
        TableReference table = operations.createTableReference(
61
                "dbtest",
62
                sqlbuilder.default_schema(),
63
                "test",
64
                null
65
        );
66
        FeatureType featureType = sourceStore.getDefaultFeatureType();
67

    
68
        FeatureType.FeatureTypeChanged featureTypeChanged = new FeatureType.FeatureTypeChanged() {
69
            @Override
70
            public FeatureType getSource() {
71
                EditableFeatureType ft = featureType.getCopy().getEditable();
72
                ft.getEditableAttributeDescriptor("ID").setIsPrimaryKey(false);
73
                return ft;
74
            }
75

    
76
            @Override
77
            public FeatureType getTarget() {
78
                return featureType;
79
            }
80
        };
81
        List<FeatureType.FeatureTypeChanged> featureTypesChangeds = Collections.singletonList(featureTypeChanged);
82

    
83
        PerformChangesOperation performChanges = operations.createPerformChanges(
84
                table,
85
                sourceStore.getDefaultFeatureType(),
86
                null,
87
                null,
88
                null,
89
                featureTypesChangeds.iterator()
90
        );
91
        List<String> updateTableSQLs = performChanges.getUpdateTableSQLs();
92
        
93
        for (int i = 0; i < expecteds.size("PerformChangesAddPk"); i++) {
94
            System.out.println("###### EXP[" + i + "]:" + expecteds.get("PerformChangesAddPk",i) + "###");
95
        }
96
        for (int i = 0; i < updateTableSQLs.size(); i++) {
97
            System.out.println("###### SQL[" + i + "]:" + updateTableSQLs.get(i) + "###");
98
        }
99

    
100
        assertEquals("num sqls", expecteds.size("PerformChangesAddPk"), updateTableSQLs.size());
101
        for (int i = 0; i < updateTableSQLs.size(); i++) {
102
            assertEquals("Check "+i, expecteds.get("PerformChangesAddPk",i), updateTableSQLs.get(i));
103
        }
104
    }
105

    
106
    public void testChangePk1() throws Exception {
107
        JDBCHelper helper = utils().createJDBCHelper();
108
        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
109
        OperationsFactory operations = helper.getOperations();
110

    
111
        Expecteds expecteds = utils().getExpecteds("performChangesUpdateStructure.txt");
112

    
113
        FeatureStore sourceStore = utils().openCSVStore("/org/gvsig/fmap/dal/store/jdbc2/continentes_nogeom.csv");
114

    
115
        TableReference table = operations.createTableReference(
116
                "dbtest",
117
                sqlbuilder.default_schema(),
118
                "test",
119
                null
120
        );
121
        EditableFeatureType sourceFeatureType = sourceStore.getDefaultFeatureType().getCopy().getEditable();
122
        EditableFeatureType targetFeatureType = sourceStore.getDefaultFeatureType().getCopy().getEditable();
123
        
124
        sourceFeatureType.getEditableAttributeDescriptor("ID").setIsPrimaryKey(false);
125
        sourceFeatureType.getEditableAttributeDescriptor("NAME").setIsPrimaryKey(false);
126

    
127
        targetFeatureType.getEditableAttributeDescriptor("ID").setIsPrimaryKey(true);
128
        targetFeatureType.getEditableAttributeDescriptor("NAME").setIsPrimaryKey(false);
129

    
130
        FeatureType.FeatureTypeChanged featureTypeChanged = new FeatureType.FeatureTypeChanged() {
131
            @Override
132
            public FeatureType getSource() {
133
                return sourceFeatureType;
134
            }
135

    
136
            @Override
137
            public FeatureType getTarget() {
138
                return targetFeatureType;
139
            }
140
        };
141
        List<FeatureType.FeatureTypeChanged> featureTypesChangeds = Collections.singletonList(featureTypeChanged);
142

    
143
        PerformChangesOperation performChanges = operations.createPerformChanges(
144
                table,
145
                sourceStore.getDefaultFeatureType(),
146
                null,
147
                null,
148
                null,
149
                featureTypesChangeds.iterator()
150
        );
151
        List<String> updateTableSQLs = performChanges.getUpdateTableSQLs();
152
        
153
        for (int i = 0; i < expecteds.size("changePk1"); i++) {
154
            System.out.println("###### EXP[" + i + "]:" + expecteds.get("changePk1",i) + "###");
155
        }
156
        for (int i = 0; i < updateTableSQLs.size(); i++) {
157
            System.out.println("###### SQL[" + i + "]:" + updateTableSQLs.get(i) + "###");
158
        }
159

    
160
        assertEquals("num sqls", expecteds.size("changePk1"), updateTableSQLs.size());
161
        for (int i = 0; i < updateTableSQLs.size(); i++) {
162
            assertEquals("Check "+i, expecteds.get("changePk1",i), updateTableSQLs.get(i));
163
        }
164
    }
165

    
166
    public void testChangePk2() throws Exception {
167
        JDBCHelper helper = utils().createJDBCHelper();
168
        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
169
        OperationsFactory operations = helper.getOperations();
170

    
171
        Expecteds expecteds = utils().getExpecteds("performChangesUpdateStructure.txt");
172

    
173
        FeatureStore sourceStore = utils().openCSVStore("/org/gvsig/fmap/dal/store/jdbc2/continentes_nogeom.csv");
174

    
175
        TableReference table = operations.createTableReference(
176
                "dbtest",
177
                sqlbuilder.default_schema(),
178
                "test",
179
                null
180
        );
181
        EditableFeatureType sourceFeatureType = sourceStore.getDefaultFeatureType().getCopy().getEditable();
182
        EditableFeatureType targetFeatureType = sourceStore.getDefaultFeatureType().getCopy().getEditable();
183
        
184
        sourceFeatureType.getEditableAttributeDescriptor("ID").setIsPrimaryKey(true);
185
        sourceFeatureType.getEditableAttributeDescriptor("NAME").setIsPrimaryKey(false);
186

    
187
        targetFeatureType.getEditableAttributeDescriptor("ID").setIsPrimaryKey(false);
188
        targetFeatureType.getEditableAttributeDescriptor("NAME").setIsPrimaryKey(true);
189

    
190
        FeatureType.FeatureTypeChanged featureTypeChanged = new FeatureType.FeatureTypeChanged() {
191
            @Override
192
            public FeatureType getSource() {
193
                return sourceFeatureType;
194
            }
195

    
196
            @Override
197
            public FeatureType getTarget() {
198
                return targetFeatureType;
199
            }
200
        };
201
        List<FeatureType.FeatureTypeChanged> featureTypesChangeds = Collections.singletonList(featureTypeChanged);
202

    
203
        PerformChangesOperation performChanges = operations.createPerformChanges(
204
                table,
205
                sourceStore.getDefaultFeatureType(),
206
                null,
207
                null,
208
                null,
209
                featureTypesChangeds.iterator()
210
        );
211
        List<String> updateTableSQLs = performChanges.getUpdateTableSQLs();
212
        
213
        for (int i = 0; i < expecteds.size("changePk2"); i++) {
214
            System.out.println("###### EXP[" + i + "]:" + expecteds.get("changePk2",i) + "###");
215
        }
216
        for (int i = 0; i < updateTableSQLs.size(); i++) {
217
            System.out.println("###### SQL[" + i + "]:" + updateTableSQLs.get(i) + "###");
218
        }
219

    
220
        assertEquals("num sqls", expecteds.size("changePk2"), updateTableSQLs.size());
221
        for (int i = 0; i < updateTableSQLs.size(); i++) {
222
            assertEquals("Check "+i, expecteds.get("changePk2",i), updateTableSQLs.get(i));
223
        }
224
    }
225

    
226
    public void testChangePk3() throws Exception {
227
        JDBCHelper helper = utils().createJDBCHelper();
228
        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
229
        OperationsFactory operations = helper.getOperations();
230

    
231
        Expecteds expecteds = utils().getExpecteds("performChangesUpdateStructure.txt");
232

    
233
        FeatureStore sourceStore = utils().openCSVStore("/org/gvsig/fmap/dal/store/jdbc2/continentes_nogeom.csv");
234

    
235
        TableReference table = operations.createTableReference(
236
                "dbtest",
237
                sqlbuilder.default_schema(),
238
                "test",
239
                null
240
        );
241
        EditableFeatureType sourceFeatureType = sourceStore.getDefaultFeatureType().getCopy().getEditable();
242
        EditableFeatureType targetFeatureType = sourceStore.getDefaultFeatureType().getCopy().getEditable();
243
        
244
        sourceFeatureType.getEditableAttributeDescriptor("ID").setIsPrimaryKey(true);
245
        sourceFeatureType.getEditableAttributeDescriptor("NAME").setIsPrimaryKey(false);
246

    
247
        targetFeatureType.getEditableAttributeDescriptor("ID").setIsPrimaryKey(false);
248
        targetFeatureType.getEditableAttributeDescriptor("NAME").setIsPrimaryKey(false);
249
        
250
        targetFeatureType.getEditableAttributeDescriptor("ID").setIsIndexed(true);
251
        targetFeatureType.getEditableAttributeDescriptor("NAME").setIsIndexed(true);
252

    
253
        FeatureType.FeatureTypeChanged featureTypeChanged = new FeatureType.FeatureTypeChanged() {
254
            @Override
255
            public FeatureType getSource() {
256
                return sourceFeatureType;
257
            }
258

    
259
            @Override
260
            public FeatureType getTarget() {
261
                return targetFeatureType;
262
            }
263
        };
264
        List<FeatureType.FeatureTypeChanged> featureTypesChangeds = Collections.singletonList(featureTypeChanged);
265

    
266
        PerformChangesOperation performChanges = operations.createPerformChanges(
267
                table,
268
                sourceStore.getDefaultFeatureType(),
269
                null,
270
                null,
271
                null,
272
                featureTypesChangeds.iterator()
273
        );
274
        List<String> updateTableSQLs = performChanges.getUpdateTableSQLs();
275
        
276
        System.out.println("###### testChangePk3");
277
        for (int i = 0; i < expecteds.size("changePk3"); i++) {
278
            System.out.println("###### EXP[" + i + "]:" + expecteds.get("changePk3",i) + "###");
279
        }
280
        for (int i = 0; i < updateTableSQLs.size(); i++) {
281
            System.out.println("###### SQL[" + i + "]:" + updateTableSQLs.get(i) + "###");
282
        }
283

    
284
        assertEquals("num sqls", expecteds.size("changePk3"), updateTableSQLs.size());
285
        for (int i = 0; i < updateTableSQLs.size(); i++) {
286
            assertEquals("Check "+i, expecteds.get("changePk3",i), updateTableSQLs.get(i));
287
        }
288
    }
289
    
290
}