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 |
} |