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 46101 jjdelcerro
package org.gvsig.fmap.dal.store.jdbc2.operations.sql;
2 45472 jjdelcerro
3 46101 jjdelcerro
import java.util.Collections;
4 45472 jjdelcerro
import java.util.List;
5
import junit.framework.TestCase;
6 46050 omartinez
import org.gvsig.fmap.dal.feature.EditableFeatureType;
7 45472 jjdelcerro
import org.gvsig.fmap.dal.feature.FeatureStore;
8
import org.gvsig.fmap.dal.feature.FeatureType;
9 46101 jjdelcerro
import org.gvsig.fmap.dal.store.jdbc2.AbstractTestUtils;
10
import org.gvsig.fmap.dal.store.jdbc2.AbstractTestUtils.Expecteds;
11 45472 jjdelcerro
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 46101 jjdelcerro
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.PerformChangesOperation;
16 45472 jjdelcerro
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
17
import org.slf4j.Logger;
18
import org.slf4j.LoggerFactory;
19
20 46010 jjdelcerro
@SuppressWarnings("UseSpecificCatch")
21 46101 jjdelcerro
public abstract class AbstractTestPerformChangesUpdateStructure extends TestCase {
22 45472 jjdelcerro
23 46101 jjdelcerro
    protected static final Logger LOGGER = LoggerFactory.getLogger(AbstractTestPerformChangesUpdateStructure.class);
24 45472 jjdelcerro
25 46101 jjdelcerro
    protected AbstractTestUtils utils;
26 45472 jjdelcerro
27 46101 jjdelcerro
    public AbstractTestPerformChangesUpdateStructure(String testName) {
28
        super(testName);
29
    }
30 45472 jjdelcerro
31 46101 jjdelcerro
    @Override
32
    protected void setUp() throws Exception {
33
        super.setUp();
34
        new DefaultLibrariesInitializer().fullInitialize();
35
    }
36 45472 jjdelcerro
37 46101 jjdelcerro
    @Override
38
    protected void tearDown() throws Exception {
39
        super.tearDown();
40
    }
41 45472 jjdelcerro
42 46101 jjdelcerro
    public AbstractTestUtils utils() {
43
        if (this.utils == null) {
44
            this.utils = this.createUtils();
45
        }
46
        return this.utils;
47
    }
48 45472 jjdelcerro
49 46101 jjdelcerro
    protected abstract AbstractTestUtils createUtils();
50
51
    public void testPerformChangesAddPk() throws Exception {
52
        JDBCHelper helper = utils().createJDBCHelper();
53 46050 omartinez
        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
54
        OperationsFactory operations = helper.getOperations();
55 45472 jjdelcerro
56 46101 jjdelcerro
        Expecteds expecteds = utils().getExpecteds("performChangesUpdateStructure.txt");
57 46050 omartinez
58 46101 jjdelcerro
        FeatureStore sourceStore = utils().openSourceStore1();
59 46050 omartinez
60
        TableReference table = operations.createTableReference(
61 46101 jjdelcerro
                "dbtest",
62
                sqlbuilder.default_schema(),
63
                "test",
64 46050 omartinez
                null
65
        );
66
        FeatureType featureType = sourceStore.getDefaultFeatureType();
67
68 46101 jjdelcerro
        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 46050 omartinez
                table,
85 46101 jjdelcerro
                sourceStore.getDefaultFeatureType(),
86 46050 omartinez
                null,
87
                null,
88
                null,
89 46101 jjdelcerro
                featureTypesChangeds.iterator()
90 46050 omartinez
        );
91 46101 jjdelcerro
        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 46050 omartinez
        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
109
        OperationsFactory operations = helper.getOperations();
110
111 46101 jjdelcerro
        Expecteds expecteds = utils().getExpecteds("performChangesUpdateStructure.txt");
112 46050 omartinez
113 46101 jjdelcerro
        FeatureStore sourceStore = utils().openCSVStore("/org/gvsig/fmap/dal/store/jdbc2/continentes_nogeom.csv");
114 46050 omartinez
115
        TableReference table = operations.createTableReference(
116 46101 jjdelcerro
                "dbtest",
117
                sqlbuilder.default_schema(),
118
                "test",
119 46050 omartinez
                null
120
        );
121 46101 jjdelcerro
        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 46050 omartinez
127 46101 jjdelcerro
        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 46050 omartinez
                table,
145 46101 jjdelcerro
                sourceStore.getDefaultFeatureType(),
146 46050 omartinez
                null,
147
                null,
148
                null,
149 46101 jjdelcerro
                featureTypesChangeds.iterator()
150 46050 omartinez
        );
151 46101 jjdelcerro
        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 46050 omartinez
        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
169
        OperationsFactory operations = helper.getOperations();
170
171 46101 jjdelcerro
        Expecteds expecteds = utils().getExpecteds("performChangesUpdateStructure.txt");
172 46050 omartinez
173 46101 jjdelcerro
        FeatureStore sourceStore = utils().openCSVStore("/org/gvsig/fmap/dal/store/jdbc2/continentes_nogeom.csv");
174 46050 omartinez
175
        TableReference table = operations.createTableReference(
176 46101 jjdelcerro
                "dbtest",
177
                sqlbuilder.default_schema(),
178
                "test",
179 46050 omartinez
                null
180
        );
181 46101 jjdelcerro
        EditableFeatureType sourceFeatureType = sourceStore.getDefaultFeatureType().getCopy().getEditable();
182
        EditableFeatureType targetFeatureType = sourceStore.getDefaultFeatureType().getCopy().getEditable();
183 46050 omartinez
184 46101 jjdelcerro
        sourceFeatureType.getEditableAttributeDescriptor("ID").setIsPrimaryKey(true);
185
        sourceFeatureType.getEditableAttributeDescriptor("NAME").setIsPrimaryKey(false);
186 46050 omartinez
187 46101 jjdelcerro
        targetFeatureType.getEditableAttributeDescriptor("ID").setIsPrimaryKey(false);
188
        targetFeatureType.getEditableAttributeDescriptor("NAME").setIsPrimaryKey(true);
189 46050 omartinez
190 46101 jjdelcerro
        FeatureType.FeatureTypeChanged featureTypeChanged = new FeatureType.FeatureTypeChanged() {
191
            @Override
192
            public FeatureType getSource() {
193
                return sourceFeatureType;
194
            }
195 46050 omartinez
196 46101 jjdelcerro
            @Override
197
            public FeatureType getTarget() {
198
                return targetFeatureType;
199
            }
200
        };
201
        List<FeatureType.FeatureTypeChanged> featureTypesChangeds = Collections.singletonList(featureTypeChanged);
202 46050 omartinez
203 46101 jjdelcerro
        PerformChangesOperation performChanges = operations.createPerformChanges(
204 46050 omartinez
                table,
205 46101 jjdelcerro
                sourceStore.getDefaultFeatureType(),
206 46050 omartinez
                null,
207
                null,
208 46101 jjdelcerro
                null,
209
                featureTypesChangeds.iterator()
210 46050 omartinez
        );
211 46101 jjdelcerro
        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 46050 omartinez
        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
229
        OperationsFactory operations = helper.getOperations();
230
231 46101 jjdelcerro
        Expecteds expecteds = utils().getExpecteds("performChangesUpdateStructure.txt");
232 46050 omartinez
233 46101 jjdelcerro
        FeatureStore sourceStore = utils().openCSVStore("/org/gvsig/fmap/dal/store/jdbc2/continentes_nogeom.csv");
234 46050 omartinez
235
        TableReference table = operations.createTableReference(
236 46101 jjdelcerro
                "dbtest",
237
                sqlbuilder.default_schema(),
238
                "test",
239 46050 omartinez
                null
240
        );
241 46101 jjdelcerro
        EditableFeatureType sourceFeatureType = sourceStore.getDefaultFeatureType().getCopy().getEditable();
242
        EditableFeatureType targetFeatureType = sourceStore.getDefaultFeatureType().getCopy().getEditable();
243 46050 omartinez
244 46101 jjdelcerro
        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 46050 omartinez
250 46101 jjdelcerro
        targetFeatureType.getEditableAttributeDescriptor("ID").setIsIndexed(true);
251
        targetFeatureType.getEditableAttributeDescriptor("NAME").setIsIndexed(true);
252 46050 omartinez
253 46101 jjdelcerro
        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 46050 omartinez
                table,
268 46101 jjdelcerro
                sourceStore.getDefaultFeatureType(),
269 46050 omartinez
                null,
270
                null,
271 46101 jjdelcerro
                null,
272
                featureTypesChangeds.iterator()
273 46050 omartinez
        );
274 46101 jjdelcerro
        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 46010 jjdelcerro
        }
280 46101 jjdelcerro
        for (int i = 0; i < updateTableSQLs.size(); i++) {
281
            System.out.println("###### SQL[" + i + "]:" + updateTableSQLs.get(i) + "###");
282
        }
283 46010 jjdelcerro
284 46101 jjdelcerro
        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 46050 omartinez
        }
288
    }
289 45472 jjdelcerro
290
}