Revision 3446
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.lib/org.gvsig.vcsgis.lib.api/src/main/java/org/gvsig/vcsgis/lib/server/VCSGisServerController.java | ||
---|---|---|
37 | 37 |
public VCSGisServerHandler createCommitHandler(); |
38 | 38 |
|
39 | 39 |
public VCSGisServerHandler createCheckoutHandler(); |
40 |
|
|
41 |
public VCSGisServerHandler createHistoryHandler(); |
|
40 | 42 |
|
41 | 43 |
public VCSGisServerHandler createUpdateHandler(); |
42 | 44 |
|
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.lib/org.gvsig.vcsgis.lib.impl/src/test/resources/org/gvsig/vcsgis/lib/impl/expecteds/S01Entities.txt | ||
---|---|---|
16 | 16 |
"Entities":[ |
17 | 17 |
{ |
18 | 18 |
"DataTableName":"VCSGIS_DATA", |
19 |
"Description":"",
|
|
19 |
"Description":null,
|
|
20 | 20 |
"EntityCode":"00000000000004abcdef0123456789", |
21 | 21 |
"EntityName":"test", |
22 | 22 |
"FeatureIdFieldName":"VCSGISCODE", |
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.lib/org.gvsig.vcsgis.lib.impl/src/test/java/org/gvsig/vcsgis/lib/impl/Test20ExportToEffectiveDate.java | ||
---|---|---|
1 |
package org.gvsig.vcsgis.lib.impl; |
|
2 |
|
|
3 |
import java.io.File; |
|
4 |
import java.sql.Timestamp; |
|
5 |
import java.util.List; |
|
6 |
import junit.framework.TestCase; |
|
7 |
import static junit.framework.TestCase.assertEquals; |
|
8 |
import org.apache.commons.io.FileUtils; |
|
9 |
import org.codehaus.plexus.util.StringUtils; |
|
10 |
import org.gvsig.expressionevaluator.Expression; |
|
11 |
import org.gvsig.fmap.dal.exception.DataException; |
|
12 |
import org.gvsig.fmap.dal.feature.EditableFeature; |
|
13 |
import org.gvsig.fmap.dal.feature.Feature; |
|
14 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
|
15 |
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer; |
|
16 |
import org.gvsig.tools.dispose.DisposeUtils; |
|
17 |
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
|
18 |
import org.gvsig.vcsgis.lib.SequentialCodeGenerator; |
|
19 |
import org.gvsig.vcsgis.lib.VCSGisEntity; |
|
20 |
import org.gvsig.vcsgis.lib.VCSGisLocator; |
|
21 |
import org.gvsig.vcsgis.lib.VCSGisManager; |
|
22 |
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_NO_ERROR; |
|
23 |
import org.gvsig.vcsgis.lib.repository.VCSGisRepository; |
|
24 |
import org.gvsig.vcsgis.lib.repository.VCSGisRepositoryChange; |
|
25 |
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace; |
|
26 |
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspaceChanges; |
|
27 |
import org.slf4j.Logger; |
|
28 |
import org.slf4j.LoggerFactory; |
|
29 |
|
|
30 |
public class Test20ExportToEffectiveDate extends TestCase { |
|
31 |
|
|
32 |
private static final Logger LOGGER = LoggerFactory.getLogger(Test20ExportToEffectiveDate.class); |
|
33 |
|
|
34 |
public Test20ExportToEffectiveDate(String testName) { |
|
35 |
super(testName); |
|
36 |
} |
|
37 |
|
|
38 |
@Override |
|
39 |
protected void setUp() throws Exception { |
|
40 |
super.setUp(); |
|
41 |
new DefaultLibrariesInitializer().fullInitialize(); |
|
42 |
} |
|
43 |
|
|
44 |
@Override |
|
45 |
protected void tearDown() throws Exception { |
|
46 |
super.tearDown(); |
|
47 |
} |
|
48 |
|
|
49 |
// TODO add test methods here. The name must begin with 'test'. For example: |
|
50 |
// public void testHello() {} |
|
51 |
|
|
52 |
private void insert(FeatureStore store, int id, String text) throws DataException{ |
|
53 |
EditableFeature ef = store.createNewFeature(); |
|
54 |
ef.set("id",id); |
|
55 |
ef.set("text",text); |
|
56 |
store.insert(ef); |
|
57 |
} |
|
58 |
|
|
59 |
private void update(FeatureStore store, int id, String text) throws DataException{ |
|
60 |
Feature f = store.findFirst("id="+id); |
|
61 |
EditableFeature ef = f.getEditable(); |
|
62 |
ef.set("text", text); |
|
63 |
store.update(ef); |
|
64 |
} |
|
65 |
|
|
66 |
private void delete(FeatureStore store, int id, String text) throws DataException{ |
|
67 |
Feature f = store.findFirst("id="+id); |
|
68 |
store.delete(f); |
|
69 |
} |
|
70 |
|
|
71 |
private void check(List<Feature> features, int index, int id, String text){ |
|
72 |
assertEquals(id , features.get(index).getInt("id")); |
|
73 |
assertEquals(text, features.get(index).getString("text")); |
|
74 |
} |
|
75 |
|
|
76 |
private void check(FeatureStore store2, String relatedFeatureCode, int id, String text) throws Exception { |
|
77 |
Feature f = store2.findFirst("VCSGISCODE = '"+relatedFeatureCode+"'"); |
|
78 |
assertEquals(id, f.getInt("id")); |
|
79 |
assertEquals(text, f.getString("text")); |
|
80 |
} |
|
81 |
|
|
82 |
public void testExportToEffectiveDateConsecutive() throws Exception { |
|
83 |
VCSGisManager manager = VCSGisLocator.getVCSGisManager(); |
|
84 |
manager.setCodeGenerator(new SequentialCodeGenerator()); |
|
85 |
|
|
86 |
JDBCServerExplorer server = TestUtils.openServerExplorer("srv-update"); |
|
87 |
File ws1file = TestUtils.getFile(FileUtils.getFile("test-dbs","ws1-update")); |
|
88 |
File ws2file = TestUtils.getFile(FileUtils.getFile("test-dbs","ws2-update")); |
|
89 |
|
|
90 |
int r; |
|
91 |
Feature f; |
|
92 |
EditableFeature ef; |
|
93 |
List<Feature> features; |
|
94 |
FeatureStore store1; |
|
95 |
FeatureStore store2; |
|
96 |
|
|
97 |
// ------------------------------------------------------------ |
|
98 |
// Inicializamos el repositorio y lo abrimos |
|
99 |
r = manager.initRepository(server.getParameters(), null); |
|
100 |
assertEquals("init_server status", ERR_NO_ERROR, r); |
|
101 |
|
|
102 |
VCSGisRepository repo = manager.openRepository(server.getParameters()); |
|
103 |
TestUtils.h2sql_repository(repo); |
|
104 |
|
|
105 |
// ------------------------------------------------------------ |
|
106 |
// Creamos workspace1 y lo abrimos. |
|
107 |
r = manager.initWorkspace(ws1file, repo, "Test update1",null); |
|
108 |
assertEquals("init_ws1 status", ERR_NO_ERROR, r); |
|
109 |
|
|
110 |
VCSGisWorkspace ws1 = manager.openWorkspace(ws1file); |
|
111 |
TestUtils.h2sql_workspace(ws1); |
|
112 |
|
|
113 |
// ------------------------------------------------------------ |
|
114 |
// Adicionamos al workspace1 la tabla "test" y la commitamos. |
|
115 |
//REV 0 |
|
116 |
FeatureStore sourceTest = TestUtils.openSourceStore2(); |
|
117 |
r = ws1.add("test", sourceTest, "text"); |
|
118 |
DisposeUtils.disposeQuietly(sourceTest); |
|
119 |
assertEquals("ws1.add status", ERR_NO_ERROR, r); |
|
120 |
|
|
121 |
store1 = ws1.getFeatureStore("test"); |
|
122 |
store1.edit(); |
|
123 |
insert(store1, 4, "DDD"); |
|
124 |
insert(store1, 5, "EEE"); |
|
125 |
|
|
126 |
store1.finishEditing(); |
|
127 |
DisposeUtils.disposeQuietly(store1); |
|
128 |
|
|
129 |
r = ws1.commit(null, Timestamp.valueOf("2021-01-01 00:00:00.000"), "2021-01-01 00:00:00.000", null); |
|
130 |
assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r); |
|
131 |
|
|
132 |
//REV 1 |
|
133 |
store1 = ws1.getFeatureStore("test"); |
|
134 |
store1.edit(); |
|
135 |
insert(store1, 6, "FFF"); |
|
136 |
insert(store1, 7, "GGG"); |
|
137 |
insert(store1, 8, "HHH"); |
|
138 |
insert(store1, 9, "III"); |
|
139 |
insert(store1, 10, "JJJ"); |
|
140 |
delete(store1, 5, "EEE"); |
|
141 |
update(store1, 2, "BB2"); |
|
142 |
update(store1, 4, "DD2"); |
|
143 |
|
|
144 |
store1.finishEditing(); |
|
145 |
DisposeUtils.disposeQuietly(store1); |
|
146 |
|
|
147 |
r = ws1.commit(null, Timestamp.valueOf("2021-02-01 00:00:00.000"), "2021-02-01 00:00:00.000", null); |
|
148 |
assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r); |
|
149 |
|
|
150 |
//REV 2 |
|
151 |
|
|
152 |
store1 = ws1.getFeatureStore("test"); |
|
153 |
store1.edit(); |
|
154 |
insert(store1, 11, "KKK"); |
|
155 |
insert(store1, 12, "LLL"); |
|
156 |
insert(store1, 13, "MMM"); |
|
157 |
delete(store1, 4, "DD2"); |
|
158 |
delete(store1, 7, "GGG"); |
|
159 |
|
|
160 |
store1.finishEditing(); |
|
161 |
DisposeUtils.disposeQuietly(store1); |
|
162 |
|
|
163 |
r = ws1.commit(null, Timestamp.valueOf("2021-03-01 00:00:00.000"), "2021-03-01 00:00:00.000", null); |
|
164 |
assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r); |
|
165 |
|
|
166 |
|
|
167 |
//REV 3 |
|
168 |
|
|
169 |
store1 = ws1.getFeatureStore("test"); |
|
170 |
store1.edit(); |
|
171 |
|
|
172 |
insert(store1, 14, "NNN"); |
|
173 |
insert(store1, 15, "OOO"); |
|
174 |
insert(store1, 16, "PPP"); |
|
175 |
insert(store1, 17, "QQQ"); |
|
176 |
delete(store1, 3, "CCC"); |
|
177 |
delete(store1, 10, "JJJ"); |
|
178 |
update(store1, 13, "MM2"); |
|
179 |
|
|
180 |
store1.finishEditing(); |
|
181 |
DisposeUtils.disposeQuietly(store1); |
|
182 |
|
|
183 |
r = ws1.commit(null, Timestamp.valueOf("2021-04-01 00:00:00.000"), "2021-04-01 00:00:00.000", null); |
|
184 |
assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r); |
|
185 |
|
|
186 |
//REV 4 |
|
187 |
|
|
188 |
store1 = ws1.getFeatureStore("test"); |
|
189 |
store1.edit(); |
|
190 |
|
|
191 |
insert(store1, 18, "RRR"); |
|
192 |
insert(store1, 19, "SSS"); |
|
193 |
insert(store1, 20, "TTT"); |
|
194 |
insert(store1, 21, "UUU"); |
|
195 |
delete(store1, 9, "III"); |
|
196 |
update(store1, 17, "QQ2"); |
|
197 |
delete(store1, 16, "PPP"); |
|
198 |
|
|
199 |
store1.finishEditing(); |
|
200 |
DisposeUtils.disposeQuietly(store1); |
|
201 |
|
|
202 |
r = ws1.commit(null, Timestamp.valueOf("2021-05-01 00:00:00.000"), "2021-05-01 00:00:00.000", null); |
|
203 |
assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r); |
|
204 |
|
|
205 |
//REV 5 |
|
206 |
|
|
207 |
store1 = ws1.getFeatureStore("test"); |
|
208 |
store1.edit(); |
|
209 |
|
|
210 |
insert(store1, 22, "VVV"); |
|
211 |
insert(store1, 23, "WWW"); |
|
212 |
insert(store1, 24, "XXX"); |
|
213 |
insert(store1, 25, "YYY"); |
|
214 |
insert(store1, 26, "ZZZ"); |
|
215 |
delete(store1, 13, "MM2"); |
|
216 |
delete(store1, 19, "SSS"); |
|
217 |
|
|
218 |
store1.finishEditing(); |
|
219 |
DisposeUtils.disposeQuietly(store1); |
|
220 |
|
|
221 |
r = ws1.commit(null, Timestamp.valueOf("2021-06-01 00:00:00.000"), "2021-06-01 00:00:00.000", null); |
|
222 |
assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r); |
|
223 |
|
|
224 |
//Export enero |
|
225 |
r = ws1.export("test", "exp_enero", null, Timestamp.valueOf("2021-01-15 00:00:00.000"), null); |
|
226 |
assertEquals("ws1.export-1 status", 0, r); |
|
227 |
store2 = ws1.openFeatureStore("exp_enero"); |
|
228 |
features = store2.getFeatures((Expression)null, "id", true); |
|
229 |
|
|
230 |
check(features, 0, 1, "AAA"); |
|
231 |
check(features, 1, 2, "BBB"); |
|
232 |
check(features, 2, 3, "CCC"); |
|
233 |
check(features, 3, 4, "DDD"); |
|
234 |
check(features, 4, 5, "EEE"); |
|
235 |
|
|
236 |
DisposeUtils.disposeQuietly(features); |
|
237 |
DisposeUtils.disposeQuietly(store2); |
|
238 |
|
|
239 |
//Export febrero |
|
240 |
r = ws1.export("test", "exp_febrero", null, Timestamp.valueOf("2021-02-15 00:00:00.000"), null); |
|
241 |
assertEquals("ws1.export-1 status", 0, r); |
|
242 |
store2 = ws1.openFeatureStore("exp_febrero"); |
|
243 |
features = store2.getFeatures((Expression)null, "id", true); |
|
244 |
|
|
245 |
check(features, 0, 1, "AAA"); |
|
246 |
check(features, 1, 2, "BB2"); |
|
247 |
check(features, 2, 3, "CCC"); |
|
248 |
check(features, 3, 4, "DD2"); |
|
249 |
check(features, 4, 6, "FFF"); |
|
250 |
check(features, 5, 7, "GGG"); |
|
251 |
check(features, 6, 8, "HHH"); |
|
252 |
check(features, 7, 9, "III"); |
|
253 |
check(features, 8, 10, "JJJ"); |
|
254 |
|
|
255 |
|
|
256 |
DisposeUtils.disposeQuietly(features); |
|
257 |
DisposeUtils.disposeQuietly(store2); |
|
258 |
|
|
259 |
|
|
260 |
//Export marzo |
|
261 |
r = ws1.export("test", "exp_marzo", null, Timestamp.valueOf("2021-03-15 00:00:00.000"), null); |
|
262 |
assertEquals("ws1.export-1 status", 0, r); |
|
263 |
store2 = ws1.openFeatureStore("exp_marzo"); |
|
264 |
features = store2.getFeatures((Expression)null, "id", true); |
|
265 |
|
|
266 |
check(features, 0, 1, "AAA"); |
|
267 |
check(features, 1, 2, "BB2"); |
|
268 |
check(features, 2, 3, "CCC"); |
|
269 |
check(features, 3, 6, "FFF"); |
|
270 |
check(features, 4, 8, "HHH"); |
|
271 |
check(features, 5, 9, "III"); |
|
272 |
check(features, 6, 10, "JJJ"); |
|
273 |
check(features, 7, 11, "KKK"); |
|
274 |
check(features, 8, 12, "LLL"); |
|
275 |
check(features, 9, 13, "MMM"); |
|
276 |
|
|
277 |
DisposeUtils.disposeQuietly(features); |
|
278 |
DisposeUtils.disposeQuietly(store2); |
|
279 |
|
|
280 |
|
|
281 |
//Export abril |
|
282 |
r = ws1.export("test", "exp_abril", null, Timestamp.valueOf("2021-04-15 00:00:00.000"), null); |
|
283 |
assertEquals("ws1.export-1 status", 0, r); |
|
284 |
store2 = ws1.openFeatureStore("exp_abril"); |
|
285 |
features = store2.getFeatures((Expression)null, "id", true); |
|
286 |
|
|
287 |
check(features, 0, 1, "AAA"); |
|
288 |
check(features, 1, 2, "BB2"); |
|
289 |
check(features, 2, 6, "FFF"); |
|
290 |
check(features, 3, 8, "HHH"); |
|
291 |
check(features, 4, 9, "III"); |
|
292 |
check(features, 5, 11, "KKK"); |
|
293 |
check(features, 6, 12, "LLL"); |
|
294 |
check(features, 7, 13, "MM2"); |
|
295 |
check(features, 8, 14, "NNN"); |
|
296 |
check(features, 9, 15, "OOO"); |
|
297 |
check(features, 10, 16, "PPP"); |
|
298 |
check(features, 11, 17, "QQQ"); |
|
299 |
|
|
300 |
|
|
301 |
DisposeUtils.disposeQuietly(features); |
|
302 |
DisposeUtils.disposeQuietly(store2); |
|
303 |
|
|
304 |
//Export mayo |
|
305 |
r = ws1.export("test", "exp_mayo", null, Timestamp.valueOf("2021-05-15 00:00:00.000"), null); |
|
306 |
assertEquals("ws1.export-1 status", 0, r); |
|
307 |
store2 = ws1.openFeatureStore("exp_mayo"); |
|
308 |
features = store2.getFeatures((Expression)null, "id", true); |
|
309 |
|
|
310 |
check(features, 0, 1, "AAA"); |
|
311 |
check(features, 1, 2, "BB2"); |
|
312 |
check(features, 2, 6, "FFF"); |
|
313 |
check(features, 3, 8, "HHH"); |
|
314 |
check(features, 4, 11, "KKK"); |
|
315 |
check(features, 5, 12, "LLL"); |
|
316 |
check(features, 6, 13, "MM2"); |
|
317 |
check(features, 7, 14, "NNN"); |
|
318 |
check(features, 8, 15, "OOO"); |
|
319 |
check(features, 9, 17, "QQ2"); |
|
320 |
check(features, 10, 18, "RRR"); |
|
321 |
check(features, 11, 19, "SSS"); |
|
322 |
check(features, 12, 20, "TTT"); |
|
323 |
check(features, 13, 21, "UUU"); |
|
324 |
|
|
325 |
|
|
326 |
DisposeUtils.disposeQuietly(features); |
|
327 |
DisposeUtils.disposeQuietly(store2); |
|
328 |
|
|
329 |
//Export junio |
|
330 |
r = ws1.export("test", "exp_junio", null, Timestamp.valueOf("2021-06-15 00:00:00.000"), null); |
|
331 |
assertEquals("ws1.export-2 status", 0, r); |
|
332 |
store2 = ws1.openFeatureStore("exp_junio"); |
|
333 |
features = store2.getFeatures((Expression)null, "id", true); |
|
334 |
|
|
335 |
int n=0; |
|
336 |
check(features, 0, 1, "AAA"); |
|
337 |
check(features, 1, 2, "BB2"); |
|
338 |
check(features, 2, 6, "FFF"); |
|
339 |
check(features, 3, 8, "HHH"); |
|
340 |
check(features, 4, 11, "KKK"); |
|
341 |
check(features, 5, 12, "LLL"); |
|
342 |
check(features, 6, 14, "NNN"); |
|
343 |
check(features, 7, 15, "OOO"); |
|
344 |
check(features, 8, 17, "QQ2"); |
|
345 |
check(features, 9, 18, "RRR"); |
|
346 |
check(features, 10, 20, "TTT"); |
|
347 |
check(features, 11, 21, "UUU"); |
|
348 |
check(features, 12, 22, "VVV"); |
|
349 |
check(features, 13, 23, "WWW"); |
|
350 |
check(features, 14, 24, "XXX"); |
|
351 |
check(features, 15, 25, "YYY"); |
|
352 |
check(features, 16, 26, "ZZZ"); |
|
353 |
|
|
354 |
DisposeUtils.disposeQuietly(features); |
|
355 |
DisposeUtils.disposeQuietly(store2); |
|
356 |
} |
|
357 |
|
|
358 |
public void testExportToEffectiveDateAlteredOrder() throws Exception { |
|
359 |
VCSGisManager manager = VCSGisLocator.getVCSGisManager(); |
|
360 |
manager.setCodeGenerator(new SequentialCodeGenerator()); |
|
361 |
|
|
362 |
JDBCServerExplorer server = TestUtils.openServerExplorer("srv-update"); |
|
363 |
File ws1file = TestUtils.getFile(FileUtils.getFile("test-dbs","ws1-update")); |
|
364 |
File ws2file = TestUtils.getFile(FileUtils.getFile("test-dbs","ws2-update")); |
|
365 |
|
|
366 |
int r; |
|
367 |
Feature f; |
|
368 |
EditableFeature ef; |
|
369 |
List<Feature> features; |
|
370 |
FeatureStore store1; |
|
371 |
FeatureStore store2; |
|
372 |
|
|
373 |
// ------------------------------------------------------------ |
|
374 |
// Inicializamos el repositorio y lo abrimos |
|
375 |
r = manager.initRepository(server.getParameters(), null); |
|
376 |
assertEquals("init_server status", ERR_NO_ERROR, r); |
|
377 |
|
|
378 |
VCSGisRepository repo = manager.openRepository(server.getParameters()); |
|
379 |
TestUtils.h2sql_repository(repo); |
|
380 |
|
|
381 |
// ------------------------------------------------------------ |
|
382 |
// Creamos workspace1 y lo abrimos. |
|
383 |
r = manager.initWorkspace(ws1file, repo, "Test update1",null); |
|
384 |
assertEquals("init_ws1 status", ERR_NO_ERROR, r); |
|
385 |
|
|
386 |
VCSGisWorkspace ws1 = manager.openWorkspace(ws1file); |
|
387 |
TestUtils.h2sql_workspace(ws1); |
|
388 |
|
|
389 |
// ------------------------------------------------------------ |
|
390 |
// Adicionamos al workspace1 la tabla "test" y la commitamos. |
|
391 |
//REV 0 |
|
392 |
FeatureStore sourceTest = TestUtils.openSourceStore2(); |
|
393 |
r = ws1.add("test", sourceTest, "text"); |
|
394 |
DisposeUtils.disposeQuietly(sourceTest); |
|
395 |
assertEquals("ws1.add status", ERR_NO_ERROR, r); |
|
396 |
|
|
397 |
store1 = ws1.getFeatureStore("test"); |
|
398 |
store1.edit(); |
|
399 |
insert(store1, 4, "DDD"); |
|
400 |
insert(store1, 5, "EEE"); |
|
401 |
|
|
402 |
store1.finishEditing(); |
|
403 |
DisposeUtils.disposeQuietly(store1); |
|
404 |
|
|
405 |
r = ws1.commit(null, Timestamp.valueOf("2021-01-01 00:00:00.000"), "2021-01-01 00:00:00.000", null); |
|
406 |
assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r); |
|
407 |
|
|
408 |
//REV 1 |
|
409 |
store1 = ws1.getFeatureStore("test"); |
|
410 |
store1.edit(); |
|
411 |
insert(store1, 6, "FFF"); |
|
412 |
insert(store1, 7, "GGG"); |
|
413 |
insert(store1, 8, "HHH"); |
|
414 |
insert(store1, 9, "III"); |
|
415 |
insert(store1, 10, "JJJ"); |
|
416 |
|
|
417 |
delete(store1, 5, "EEE"); |
|
418 |
update(store1, 2, "BB2"); |
|
419 |
update(store1, 4, "DD2"); |
|
420 |
|
|
421 |
store1.finishEditing(); |
|
422 |
DisposeUtils.disposeQuietly(store1); |
|
423 |
|
|
424 |
r = ws1.commit(null, Timestamp.valueOf("2021-02-01 00:00:00.000"), "2021-02-01 00:00:00.000", null); |
|
425 |
assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r); |
|
426 |
|
|
427 |
//REV 2 |
|
428 |
|
|
429 |
store1 = ws1.getFeatureStore("test"); |
|
430 |
store1.edit(); |
|
431 |
insert(store1, 11, "KKK"); |
|
432 |
insert(store1, 12, "LLL"); |
|
433 |
insert(store1, 13, "MMM"); |
|
434 |
|
|
435 |
delete(store1, 4, "DD2"); |
|
436 |
delete(store1, 7, "GGG"); |
|
437 |
|
|
438 |
store1.finishEditing(); |
|
439 |
DisposeUtils.disposeQuietly(store1); |
|
440 |
|
|
441 |
r = ws1.commit(null, Timestamp.valueOf("2021-04-01 00:00:00.000"), "2021-04-01 00:00:00.000", null); |
|
442 |
assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r); |
|
443 |
|
|
444 |
|
|
445 |
//REV 3 |
|
446 |
|
|
447 |
store1 = ws1.getFeatureStore("test"); |
|
448 |
store1.edit(); |
|
449 |
|
|
450 |
insert(store1, 14, "NNN"); |
|
451 |
insert(store1, 15, "OOO"); |
|
452 |
insert(store1, 16, "PPP"); |
|
453 |
insert(store1, 17, "QQQ"); |
|
454 |
delete(store1, 3, "CCC"); |
|
455 |
delete(store1, 10, "JJJ"); |
|
456 |
update(store1, 13, "MM2"); |
|
457 |
|
|
458 |
store1.finishEditing(); |
|
459 |
DisposeUtils.disposeQuietly(store1); |
|
460 |
|
|
461 |
r = ws1.commit(null, Timestamp.valueOf("2021-03-01 00:00:00.000"), "2021-03-01 00:00:00.000", null); |
|
462 |
assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r); |
|
463 |
|
|
464 |
//REV 4 |
|
465 |
|
|
466 |
store1 = ws1.getFeatureStore("test"); |
|
467 |
store1.edit(); |
|
468 |
|
|
469 |
insert(store1, 18, "RRR"); |
|
470 |
insert(store1, 19, "SSS"); |
|
471 |
insert(store1, 20, "TTT"); |
|
472 |
insert(store1, 21, "UUU"); |
|
473 |
|
|
474 |
delete(store1, 9, "III"); |
|
475 |
update(store1, 17, "QQ2"); |
|
476 |
delete(store1, 16, "PPP"); |
|
477 |
|
|
478 |
store1.finishEditing(); |
|
479 |
DisposeUtils.disposeQuietly(store1); |
|
480 |
|
|
481 |
r = ws1.commit(null, Timestamp.valueOf("2021-06-01 00:00:00.000"), "2021-06-01 00:00:00.000", null); |
|
482 |
assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r); |
|
483 |
|
|
484 |
//REV 5 |
|
485 |
|
|
486 |
store1 = ws1.getFeatureStore("test"); |
|
487 |
store1.edit(); |
|
488 |
|
|
489 |
insert(store1, 22, "VVV"); |
|
490 |
insert(store1, 23, "WWW"); |
|
491 |
insert(store1, 24, "XXX"); |
|
492 |
insert(store1, 25, "YYY"); |
|
493 |
insert(store1, 26, "ZZZ"); |
|
494 |
delete(store1, 13, "MM2"); |
|
495 |
delete(store1, 19, "SSS"); |
|
496 |
|
|
497 |
store1.finishEditing(); |
|
498 |
DisposeUtils.disposeQuietly(store1); |
|
499 |
|
|
500 |
r = ws1.commit(null, Timestamp.valueOf("2021-05-01 00:00:00.000"), "2021-05-01 00:00:00.000", null); |
|
501 |
assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r); |
|
502 |
|
|
503 |
//Export enero |
|
504 |
r = ws1.export("test", "exp_enero", null, Timestamp.valueOf("2021-01-15 00:00:00.000"), null); |
|
505 |
assertEquals("ws1.export-1 status", 0, r); |
|
506 |
store2 = ws1.openFeatureStore("exp_enero"); |
|
507 |
features = store2.getFeatures((Expression)null, "id", true); |
|
508 |
|
|
509 |
check(features, 0, 1, "AAA"); |
|
510 |
check(features, 1, 2, "BBB"); |
|
511 |
check(features, 2, 3, "CCC"); |
|
512 |
check(features, 3, 4, "DDD"); |
|
513 |
check(features, 4, 5, "EEE"); |
|
514 |
|
|
515 |
DisposeUtils.disposeQuietly(features); |
|
516 |
DisposeUtils.disposeQuietly(store2); |
|
517 |
|
|
518 |
//Export febrero |
|
519 |
r = ws1.export("test", "exp_febrero", null, Timestamp.valueOf("2021-02-15 00:00:00.000"), null); |
|
520 |
assertEquals("ws1.export-1 status", 0, r); |
|
521 |
store2 = ws1.openFeatureStore("exp_febrero"); |
|
522 |
features = store2.getFeatures((Expression)null, "id", true); |
|
523 |
|
|
524 |
check(features, 0, 1, "AAA"); |
|
525 |
check(features, 1, 2, "BB2"); |
|
526 |
check(features, 2, 3, "CCC"); |
|
527 |
check(features, 3, 4, "DD2"); |
|
528 |
check(features, 4, 6, "FFF"); |
|
529 |
check(features, 5, 7, "GGG"); |
|
530 |
check(features, 6, 8, "HHH"); |
|
531 |
check(features, 7, 9, "III"); |
|
532 |
check(features, 8, 10, "JJJ"); |
|
533 |
|
|
534 |
|
|
535 |
DisposeUtils.disposeQuietly(features); |
|
536 |
DisposeUtils.disposeQuietly(store2); |
|
537 |
|
|
538 |
|
|
539 |
//Export marzo |
|
540 |
r = ws1.export("test", "exp_marzo", null, Timestamp.valueOf("2021-03-15 00:00:00.000"), null); |
|
541 |
assertEquals("ws1.export-1 status", 0, r); |
|
542 |
store2 = ws1.openFeatureStore("exp_marzo"); |
|
543 |
features = store2.getFeatures((Expression)null, "id", true); |
|
544 |
|
|
545 |
check(features, 0, 1, "AAA"); |
|
546 |
check(features, 1, 2, "BB2"); |
|
547 |
check(features, 2, 4, "DD2"); |
|
548 |
check(features, 3, 6, "FFF"); |
|
549 |
check(features, 4, 7, "GGG"); |
|
550 |
check(features, 5, 8, "HHH"); |
|
551 |
check(features, 6, 9, "III"); |
|
552 |
check(features, 7, 13, "MM2"); |
|
553 |
check(features, 8, 14, "NNN"); |
|
554 |
check(features, 9, 15, "OOO"); |
|
555 |
check(features, 10, 16, "PPP"); |
|
556 |
check(features, 11, 17, "QQQ"); |
|
557 |
|
|
558 |
// update(store1, 13, "MM2"); |
|
559 |
|
|
560 |
|
|
561 |
DisposeUtils.disposeQuietly(features); |
|
562 |
DisposeUtils.disposeQuietly(store2); |
|
563 |
|
|
564 |
//Export abril |
|
565 |
r = ws1.export("test", "exp_abril", null, Timestamp.valueOf("2021-04-15 00:00:00.000"), null); |
|
566 |
assertEquals("ws1.export-1 status", 0, r); |
|
567 |
store2 = ws1.openFeatureStore("exp_abril"); |
|
568 |
features = store2.getFeatures((Expression)null, "id", true); |
|
569 |
|
|
570 |
check(features, 0, 1, "AAA"); |
|
571 |
check(features, 1, 2, "BB2"); |
|
572 |
check(features, 2, 6, "FFF"); |
|
573 |
check(features, 3, 8, "HHH"); |
|
574 |
check(features, 4, 9, "III"); |
|
575 |
check(features, 5, 11, "KKK"); |
|
576 |
check(features, 6, 12, "LLL"); |
|
577 |
check(features, 7, 13, "MM2"); |
|
578 |
check(features, 8, 14, "NNN"); |
|
579 |
check(features, 9, 15, "OOO"); |
|
580 |
check(features, 10, 16, "PPP"); |
|
581 |
check(features, 11, 17, "QQQ"); |
|
582 |
|
|
583 |
|
|
584 |
|
|
585 |
DisposeUtils.disposeQuietly(features); |
|
586 |
DisposeUtils.disposeQuietly(store2); |
|
587 |
|
|
588 |
//Export mayo |
|
589 |
r = ws1.export("test", "exp_mayo", null, Timestamp.valueOf("2021-05-15 00:00:00.000"), null); |
|
590 |
assertEquals("ws1.export-1 status", 0, r); |
|
591 |
store2 = ws1.openFeatureStore("exp_mayo"); |
|
592 |
features = store2.getFeatures((Expression)null, "id", true); |
|
593 |
|
|
594 |
check(features, 0, 1, "AAA"); |
|
595 |
check(features, 1, 2, "BB2"); |
|
596 |
check(features, 2, 6, "FFF"); |
|
597 |
check(features, 3, 8, "HHH"); |
|
598 |
check(features, 4, 9, "III"); |
|
599 |
check(features, 5, 11, "KKK"); |
|
600 |
check(features, 6, 12, "LLL"); |
|
601 |
check(features, 7, 14, "NNN"); |
|
602 |
check(features, 8, 15, "OOO"); |
|
603 |
check(features, 9, 16, "PPP"); |
|
604 |
check(features, 10, 17, "QQQ"); |
|
605 |
check(features, 11, 22, "VVV"); |
|
606 |
check(features, 12, 23, "WWW"); |
|
607 |
check(features, 13, 24, "XXX"); |
|
608 |
check(features, 14, 25, "YYY"); |
|
609 |
check(features, 15, 26, "ZZZ"); |
|
610 |
|
|
611 |
// delete(store1, 13, "MM2"); |
|
612 |
// delete(store1, 19, "SSS"); |
|
613 |
|
|
614 |
|
|
615 |
DisposeUtils.disposeQuietly(features); |
|
616 |
DisposeUtils.disposeQuietly(store2); |
|
617 |
|
|
618 |
//Export junio |
|
619 |
r = ws1.export("test", "exp_junio", null, Timestamp.valueOf("2021-06-15 00:00:00.000"), null); |
|
620 |
assertEquals("ws1.export-2 status", 0, r); |
|
621 |
store2 = ws1.openFeatureStore("exp_junio"); |
|
622 |
features = store2.getFeatures((Expression)null, "id", true); |
|
623 |
|
|
624 |
int n=0; |
|
625 |
check(features, 0, 1, "AAA"); |
|
626 |
check(features, 1, 2, "BB2"); |
|
627 |
check(features, 2, 6, "FFF"); |
|
628 |
check(features, 3, 8, "HHH"); |
|
629 |
check(features, 4, 11, "KKK"); |
|
630 |
check(features, 5, 12, "LLL"); |
|
631 |
check(features, 6, 14, "NNN"); |
|
632 |
check(features, 7, 15, "OOO"); |
|
633 |
check(features, 8, 17, "QQ2"); |
|
634 |
check(features, 9, 18, "RRR"); |
|
635 |
check(features, 10, 20, "TTT"); |
|
636 |
check(features, 11, 21, "UUU"); |
|
637 |
check(features, 12, 22, "VVV"); |
|
638 |
check(features, 13, 23, "WWW"); |
|
639 |
check(features, 14, 24, "XXX"); |
|
640 |
check(features, 15, 25, "YYY"); |
|
641 |
check(features, 16, 26, "ZZZ"); |
|
642 |
|
|
643 |
DisposeUtils.disposeQuietly(features); |
|
644 |
DisposeUtils.disposeQuietly(store2); |
|
645 |
} |
|
646 |
|
|
647 |
|
|
648 |
} |
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.lib/org.gvsig.vcsgis.lib.impl/src/main/resources/org/gvsig/vcsgis/lib/PostgreSQL.sql | ||
---|---|---|
74 | 74 |
|
75 | 75 |
@begin getDataOfEntityFromEfectiveDate |
76 | 76 |
-- TABLE_NAME, |
77 |
-- DATA_FEATURERELATEDCODE, |
|
78 |
-- DATA_REVNUMBER, |
|
79 |
-- COD_ENTITY, |
|
80 |
-- entityCode, |
|
81 |
-- DATA_EFECTIVEDATE, |
|
82 | 77 |
-- efectiveDate, |
83 |
SELECT "%1$s".* FROM |
|
84 |
( SELECT "%2$s", MAX("%3$s") AS "MAX_EFECTIVEDATE" FROM |
|
85 |
"%1$s" |
|
86 |
WHERE "%4$s" = '%5$s' AND "%6$s" <= timestamp::'%7$s' |
|
87 |
GROUP BY "%2$s" |
|
88 |
) AS T1 |
|
89 |
LEFT JOIN |
|
90 |
"%1$s" |
|
91 |
ON T1."%2$s" = "%1$s"."%2$s" AND |
|
92 |
T1."MAX_EFECTIVEDATE" = "%1$s"."%3$s" |
|
78 |
select |
|
79 |
"VCSGISREPO_DATA1"."COD_DATA", |
|
80 |
"VCSGISREPO_DATA1"."COD_REVISION", |
|
81 |
"VCSGISREPO_DATA1"."COD_ENTITY", |
|
82 |
case when "VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and max("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 then 2 else "VCSGISREPO_DATA1"."DAT_OPERATION" end as "DAT_OPERATION", |
|
83 |
"VCSGISREPO_DATA1"."DAT_REVNUMBER", |
|
84 |
"VCSGISREPO_DATA1"."DAT_EFECTIVEDATE", |
|
85 |
"VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE", |
|
86 |
"VCSGISREPO_DATA1"."DAT_GEOM", |
|
87 |
"VCSGISREPO_DATA1"."DAT_DATA", |
|
88 |
(case when min("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 then 1 else 0 end) as "DEL", |
|
89 |
(case when max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 then 1 else 0 end) as "UPD", |
|
90 |
(case when max("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 then 1 else 0 end) as "INS", |
|
91 |
max("VCSGISREPO_DATA2"."DAT_EFECTIVEDATE") as MAXEFFECTIVEDATE, |
|
92 |
max("VCSGISREPO_DATA2"."DAT_REVNUMBER") as MAXREV |
|
93 |
from "VCSGISREPO_DATA" as "VCSGISREPO_DATA1" |
|
94 |
left join "VCSGISREPO_DATA" as "VCSGISREPO_DATA2" on |
|
95 |
"VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE" = "VCSGISREPO_DATA2"."DAT_FEATURERELATEDCODE" |
|
96 |
and "VCSGISREPO_DATA2"."DAT_EFECTIVEDATE" <= to_timestamp('%2$s', 'YYYY-MM-DD HH24:MI:SS') |
|
97 |
and "VCSGISREPO_DATA2"."DAT_REVNUMBER" != "VCSGISREPO_DATA1"."DAT_REVNUMBER" |
|
98 |
where |
|
99 |
"VCSGISREPO_DATA1"."COD_ENTITY" = '%1$s' |
|
100 |
and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= to_timestamp('%2$s', 'YYYY-MM-DD HH24:MI:SS') |
|
101 |
group by "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE", "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE", "VCSGISREPO_DATA1"."DAT_REVNUMBER", "VCSGISREPO_DATA1"."DAT_OPERATION", "VCSGISREPO_DATA1"."DAT_DATA" |
|
102 |
having not ( |
|
103 |
("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 and ( "INS" = 1 )) |
|
104 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and "DEL" = 1) |
|
105 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and ("DEL" = 1 or "UPD" = 1)) |
|
106 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 and "DEL" = 0 and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= MAXEFFECTIVEDATE and "VCSGISREPO_DATA1"."DAT_REVNUMBER" != MAXREV) |
|
107 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and "UPD" = 1 and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= MAXEFFECTIVEDATE and "VCSGISREPO_DATA1"."DAT_REVNUMBER" != MAXREV) |
|
108 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and "INS" = 1 and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= MAXEFFECTIVEDATE and "VCSGISREPO_DATA1"."DAT_REVNUMBER" != MAXREV) ) |
|
109 |
order by "VCSGISREPO_DATA1"."DAT_OPERATION" desc |
|
110 |
|
|
93 | 111 |
@end getDataOfEntityFromEfectiveDate |
94 | 112 |
|
113 |
@begin dateFormat |
|
114 |
yyyy-MM-dd HH:mm:ss |
|
115 |
@end dateFormat |
|
116 |
|
|
95 | 117 |
@begin createWorkspaceIndex1 |
96 | 118 |
create index if not exists idx_wschanges_1 on VCSGIS_WSCHANGES (COD_ENTITY ASC, WSCH_OPERATION DESC, COD_WSCHANGE ASC) |
97 | 119 |
@end createWorkspaceIndex1 |
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.lib/org.gvsig.vcsgis.lib.impl/src/main/resources/org/gvsig/vcsgis/lib/Oracle.sql | ||
---|---|---|
53 | 53 |
@end getDataOfEntityToRevisionNumber |
54 | 54 |
|
55 | 55 |
@begin getDataOfEntityFromEfectiveDate |
56 |
-- TABLE_NAME, |
|
57 |
-- DATA_FEATURERELATEDCODE, |
|
58 |
-- DATA_REVNUMBER, |
|
59 |
-- COD_ENTITY, |
|
60 |
-- entityCode, |
|
61 |
-- DATA_EFECTIVEDATE, |
|
62 |
-- efectiveDate, |
|
63 |
SELECT "%1$s".* FROM |
|
64 |
( SELECT "%2$s", MAX("%6$s") AS "MAX_EFECTIVEDATE" FROM |
|
65 |
"%1$s" |
|
66 |
WHERE "%4$s" = '%5$s' AND "%6$s" <= TO_TIMESTAMP('%7$s','YYYY-MM-DD HH24:MI:SS.FF') |
|
67 |
GROUP BY "%2$s" |
|
68 |
) AS T1 |
|
69 |
LEFT JOIN |
|
70 |
"%1$s" |
|
71 |
ON T1."%2$s" = "%1$s"."%2$s" AND |
|
72 |
T1."MAX_EFECTIVEDATE" = "%1$s"."%6$s" |
|
56 |
select * from "VCSGISREPO_DATA" where "VCSGISREPO_DATA"."COD_DATA" in ( |
|
57 |
select |
|
58 |
MIN("VCSGISREPO_DATA1"."COD_DATA") |
|
59 |
from "VCSGISREPO_DATA" "VCSGISREPO_DATA1" |
|
60 |
left join "VCSGISREPO_DATA" "VCSGISREPO_DATA2" on |
|
61 |
"VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE" = "VCSGISREPO_DATA2"."DAT_FEATURERELATEDCODE" |
|
62 |
and "VCSGISREPO_DATA2"."DAT_EFECTIVEDATE" <= to_date('%2$s', 'YYYY-MM-DD HH24:MI:SS') |
|
63 |
where |
|
64 |
"VCSGISREPO_DATA1"."COD_ENTITY" = '%1$s' |
|
65 |
and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= to_date('%2$s', 'YYYY-MM-DD HH24:MI:SS') |
|
66 |
group by "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE", "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE", "VCSGISREPO_DATA1"."DAT_REVNUMBER", "VCSGISREPO_DATA1"."DAT_OPERATION" |
|
67 |
having not ( |
|
68 |
("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 and MAX("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 ) |
|
69 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 ) |
|
70 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and (MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 or max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 )) |
|
71 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 and MIN("VCSGISREPO_DATA2"."DAT_OPERATION") <> 0 and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER")) |
|
72 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and (max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1) and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= max("VCSGISREPO_DATA2"."DAT_EFECTIVEDATE") and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER")) |
|
73 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and max("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= max("VCSGISREPO_DATA2"."DAT_EFECTIVEDATE") and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER")) ) |
|
74 |
) |
|
75 |
|
|
73 | 76 |
@end getDataOfEntityFromEfectiveDate |
74 | 77 |
|
78 |
@begin dateFormat |
|
79 |
yyyy-MM-dd HH:mm:ss |
|
80 |
@end dateFormat |
|
81 |
|
|
75 | 82 |
@begin createWorkspaceIndex1 |
76 | 83 |
create index idx_wschanges_1 on VCSGIS_WSCHANGES (COD_ENTITY ASC, WSCH_OPERATION DESC, COD_WSCHANGE ASC) |
77 | 84 |
@end createWorkspaceIndex1 |
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.lib/org.gvsig.vcsgis.lib.impl/src/main/resources/org/gvsig/vcsgis/lib/H2Spatial.sql | ||
---|---|---|
74 | 74 |
|
75 | 75 |
@begin getDataOfEntityFromEfectiveDate |
76 | 76 |
-- TABLE_NAME, |
77 |
-- DATA_FEATURERELATEDCODE, |
|
78 |
-- DATA_REVNUMBER, |
|
79 |
-- COD_ENTITY, |
|
80 |
-- entityCode, |
|
81 |
-- DATA_EFECTIVEDATE, |
|
82 | 77 |
-- efectiveDate, |
83 |
SELECT "%1$s".* FROM |
|
84 |
( SELECT "%2$s", MAX("%3$s") AS "MAX_EFECTIVEDATE" FROM |
|
85 |
"%1$s" |
|
86 |
WHERE "%4$s" = '%5$s' AND "%6$s" <= '%7$s' |
|
87 |
GROUP BY "%2$s" |
|
88 |
) AS T1 |
|
89 |
LEFT JOIN |
|
90 |
"%1$s" |
|
91 |
ON T1."%2$s" = "%1$s"."%2$s" AND |
|
92 |
T1."MAX_EFECTIVEDATE" = "%1$s"."%3$s" |
|
78 |
select |
|
79 |
"VCSGISREPO_DATA1"."COD_DATA", |
|
80 |
"VCSGISREPO_DATA1"."COD_REVISION", |
|
81 |
"VCSGISREPO_DATA1"."COD_ENTITY", |
|
82 |
case when "VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and max("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 then 2 else "VCSGISREPO_DATA1"."DAT_OPERATION" end as "DAT_OPERATION", |
|
83 |
"VCSGISREPO_DATA1"."DAT_REVNUMBER", |
|
84 |
"VCSGISREPO_DATA1"."DAT_EFECTIVEDATE", |
|
85 |
"VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE", |
|
86 |
"VCSGISREPO_DATA1"."DAT_GEOM", |
|
87 |
"VCSGISREPO_DATA1"."DAT_DATA", |
|
88 |
(case when min("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 then 1 else 0 end) as "DEL", |
|
89 |
(case when max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 then 1 else 0 end) as "UPD", |
|
90 |
(case when max("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 then 1 else 0 end) as "INS", |
|
91 |
max("VCSGISREPO_DATA2"."DAT_EFECTIVEDATE") as MAXEFFECTIVEDATE, |
|
92 |
max("VCSGISREPO_DATA2"."DAT_REVNUMBER") as MAXREV |
|
93 |
from "VCSGISREPO_DATA" as "VCSGISREPO_DATA1" |
|
94 |
left join "VCSGISREPO_DATA" as "VCSGISREPO_DATA2" on |
|
95 |
"VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE" = "VCSGISREPO_DATA2"."DAT_FEATURERELATEDCODE" |
|
96 |
and "VCSGISREPO_DATA2"."DAT_EFECTIVEDATE" <= '%2$s' |
|
97 |
and "VCSGISREPO_DATA2"."DAT_REVNUMBER" != "VCSGISREPO_DATA1"."DAT_REVNUMBER" |
|
98 |
where |
|
99 |
"VCSGISREPO_DATA1"."COD_ENTITY" = '%1$s' |
|
100 |
and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= '%2$s' |
|
101 |
group by "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE", "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE", "VCSGISREPO_DATA1"."DAT_REVNUMBER", "VCSGISREPO_DATA1"."DAT_OPERATION", "VCSGISREPO_DATA1"."DAT_DATA" |
|
102 |
having not ( |
|
103 |
("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 and ( "INS" = 1 )) |
|
104 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and "DEL" = 1) |
|
105 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and ("DEL" = 1 or "UPD" = 1)) |
|
106 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 and "DEL" = 0 and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= MAXEFFECTIVEDATE and "VCSGISREPO_DATA1"."DAT_REVNUMBER" != MAXREV) |
|
107 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and "UPD" = 1 and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= MAXEFFECTIVEDATE and "VCSGISREPO_DATA1"."DAT_REVNUMBER" != MAXREV) |
|
108 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and "INS" = 1 and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= MAXEFFECTIVEDATE and "VCSGISREPO_DATA1"."DAT_REVNUMBER" != MAXREV) ) |
|
109 |
order by "VCSGISREPO_DATA1"."DAT_OPERATION" desc |
|
110 |
|
|
93 | 111 |
@end getDataOfEntityFromEfectiveDate |
94 | 112 |
|
113 |
@begin dateFormat |
|
114 |
yyyy-MM-dd HH:mm:ss.S |
|
115 |
@end dateFormat |
|
116 |
|
|
95 | 117 |
@begin createWorkspaceIndex1 |
96 | 118 |
create index if not exists idx_wschanges_1 on VCSGIS_WSCHANGES (COD_ENTITY ASC, WSCH_OPERATION DESC, COD_WSCHANGE ASC) |
97 | 119 |
@end createWorkspaceIndex1 |
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.lib/org.gvsig.vcsgis.lib.impl/src/main/java/org/gvsig/vcsgis/lib/server/VCSGisServerControllerImpl.java | ||
---|---|---|
27 | 27 |
import org.gvsig.vcsgis.lib.server.handlers.CheckoutHandler; |
28 | 28 |
import org.gvsig.vcsgis.lib.server.handlers.CommitHandler; |
29 | 29 |
import org.gvsig.vcsgis.lib.server.handlers.EntitiesHandler; |
30 |
import org.gvsig.vcsgis.lib.server.handlers.HistoryHandler; |
|
30 | 31 |
import org.gvsig.vcsgis.lib.server.handlers.RowCreateHandler; |
31 | 32 |
import org.gvsig.vcsgis.lib.server.handlers.RowDeleteHandler; |
32 | 33 |
import org.gvsig.vcsgis.lib.server.handlers.RowUpdateHandler; |
... | ... | |
82 | 83 |
} |
83 | 84 |
|
84 | 85 |
@Override |
86 |
public VCSGisServerHandler createHistoryHandler() { |
|
87 |
VCSGisServerHandler handler = new HistoryHandler(repository); |
|
88 |
return handler; |
|
89 |
} |
|
90 |
|
|
91 |
@Override |
|
85 | 92 |
public VCSGisServerHandler createRowCreateHandler() { |
86 | 93 |
VCSGisServerHandler handler = new RowCreateHandler(repository); |
87 | 94 |
return handler; |
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.lib/org.gvsig.vcsgis.lib.impl/src/main/java/org/gvsig/vcsgis/lib/VCSGisRevisionImpl.java | ||
---|---|---|
23 | 23 |
package org.gvsig.vcsgis.lib; |
24 | 24 |
|
25 | 25 |
import java.sql.Timestamp; |
26 |
import java.util.Objects; |
|
26 | 27 |
import javax.json.JsonObject; |
27 | 28 |
import javax.json.stream.JsonGenerator; |
28 | 29 |
import org.gvsig.json.Json; |
... | ... | |
155 | 156 |
JsonObjectBuilder builder = Json.createObjectBuilder(); |
156 | 157 |
builder.add("EntityCode", revision.getEntityCode()); |
157 | 158 |
builder.add("RevisionCode", revision.getRevisionCode()); |
158 |
builder.add("EfectiveDate", revision.getEfectiveDate());
|
|
159 |
builder.add("RevisionDate", revision.getRevisionDate());
|
|
159 |
builder.add("EfectiveDate", Objects.toString(revision.getEfectiveDate(), null));
|
|
160 |
builder.add("RevisionDate", Objects.toString(revision.getRevisionDate(), null));
|
|
160 | 161 |
builder.add("UserCode", revision.getUserCode()); |
161 | 162 |
builder.add("Comment", revision.getComment()); |
162 | 163 |
builder.add("Tags", revision.getTags()); |
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.lib/org.gvsig.vcsgis.lib.impl/src/main/java/org/gvsig/vcsgis/lib/repository/remoteclient/requests/CheckoutRequestClient.java | ||
---|---|---|
24 | 24 |
import java.io.BufferedReader; |
25 | 25 |
import java.io.OutputStream; |
26 | 26 |
import java.sql.Timestamp; |
27 |
import java.util.Objects; |
|
27 | 28 |
import javax.json.JsonObject; |
28 | 29 |
import javax.json.stream.JsonParser; |
29 | 30 |
import org.apache.commons.io.IOUtils; |
... | ... | |
120 | 121 |
JsonObjectBuilder parametersBuilder = Json.createObjectBuilder(); |
121 | 122 |
|
122 | 123 |
parametersBuilder.add("EntityName", this.getEntityName()); |
123 |
parametersBuilder.add("EfectiveDate", this.getEfectiveDate());
|
|
124 |
parametersBuilder.add("EfectiveDate", Objects.toString(this.getEfectiveDate(),null));
|
|
124 | 125 |
parametersBuilder.add("RevisionCode", this.getRevisionCode()); |
125 | 126 |
|
126 | 127 |
JsonObjectBuilder builder = Json.createObjectBuilder(); |
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.lib/org.gvsig.vcsgis.lib.impl/src/main/java/org/gvsig/vcsgis/lib/repository/remoteclient/requests/HistoryRequestClient.java | ||
---|---|---|
25 | 25 |
import java.io.BufferedReader; |
26 | 26 |
import java.io.OutputStream; |
27 | 27 |
import java.sql.Timestamp; |
28 |
import java.util.Objects; |
|
28 | 29 |
import javax.json.JsonObject; |
29 | 30 |
import javax.json.stream.JsonParser; |
30 | 31 |
import org.apache.commons.io.IOUtils; |
... | ... | |
38 | 39 |
import org.gvsig.vcsgis.lib.VCSGisRevision; |
39 | 40 |
import org.gvsig.vcsgis.lib.VCSGisRevisionImpl; |
40 | 41 |
import org.gvsig.vcsgis.lib.repository.remoteclient.VCSGisRepositoryClient; |
41 |
import org.gvsig.vcsgis.lib.requests.EntitiesRequestHelper;
|
|
42 |
import org.gvsig.vcsgis.lib.repository.requests.VCSGisHistoryRequest;
|
|
42 | 43 |
import org.gvsig.vcsgis.lib.requests.HistoryRequestHelper; |
43 |
import org.gvsig.vcsgis.lib.repository.requests.VCSGisHistoryRequest; |
|
44 | 44 |
|
45 | 45 |
/** |
46 | 46 |
* |
... | ... | |
49 | 49 |
@SuppressWarnings("UseSpecificCatch") |
50 | 50 |
public class HistoryRequestClient extends AbstractRequestClient implements VCSGisHistoryRequest { |
51 | 51 |
|
52 |
public HistoryRequestClient(VCSGisRepositoryClient repository) { |
|
52 |
public HistoryRequestClient(VCSGisRepositoryClient repository, String entityName) {
|
|
53 | 53 |
super( |
54 |
new EntitiesRequestHelper(repository),
|
|
54 |
new HistoryRequestHelper(repository, entityName),
|
|
55 | 55 |
"history" |
56 | 56 |
); |
57 | 57 |
} |
... | ... | |
83 | 83 |
JsonObjectBuilder parametersBuilder = Json.createObjectBuilder(); |
84 | 84 |
|
85 | 85 |
parametersBuilder.add("EntityName", this.getEntityName()); |
86 |
parametersBuilder.add("MaxDate", this.getMaxDate());
|
|
87 |
parametersBuilder.add("MinDate", this.getMinDate());
|
|
86 |
parametersBuilder.add("MaxDate", Objects.toString(this.getMaxDate(), null));
|
|
87 |
parametersBuilder.add("MinDate", Objects.toString(this.getMinDate(), null)); //DataTypeUtils.toTimestamp....
|
|
88 | 88 |
parametersBuilder.add("MaxRevisionNumber", this.getMaxRevisionNumber()); |
89 | 89 |
parametersBuilder.add("MinRevisionNumber", this.getMinRevisionNumber()); |
90 | 90 |
parametersBuilder.add("MaxNumberOfRevisions", this.helper().maxNumberOfRevisions); |
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.lib/org.gvsig.vcsgis.lib.impl/src/main/java/org/gvsig/vcsgis/lib/repository/remoteclient/VCSGisRepositoryClient.java | ||
---|---|---|
36 | 36 |
import org.gvsig.vcsgis.lib.repository.remoteclient.requests.CheckoutRequestClient; |
37 | 37 |
import org.gvsig.vcsgis.lib.repository.remoteclient.requests.CommitRequestClient; |
38 | 38 |
import org.gvsig.vcsgis.lib.repository.remoteclient.requests.EntitiesRequestClient; |
39 |
import org.gvsig.vcsgis.lib.repository.remoteclient.requests.HistoryRequestClient; |
|
39 | 40 |
import org.gvsig.vcsgis.lib.repository.remoteclient.requests.RowCreateRequestClient; |
40 | 41 |
import org.gvsig.vcsgis.lib.repository.remoteclient.requests.RowDeleteRequestClient; |
41 | 42 |
import org.gvsig.vcsgis.lib.repository.remoteclient.requests.RowUpdateRequestClient; |
... | ... | |
169 | 170 |
|
170 | 171 |
@Override |
171 | 172 |
public VCSGisHistoryRequest createHistoryRequest(String entityName) { |
172 |
return null; //new LogRequestLocaldb(this, entityName); |
|
173 |
return new HistoryRequestClient(this, entityName); //null; //new LogRequestLocaldb(this, entityName);
|
|
173 | 174 |
} |
174 | 175 |
|
175 | 176 |
@Override |
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.lib/org.gvsig.vcsgis.lib.impl/src/main/java/org/gvsig/vcsgis/lib/repository/localdb/tables/DataRepoTable.java | ||
---|---|---|
1 | 1 |
package org.gvsig.vcsgis.lib.repository.localdb.tables; |
2 | 2 |
|
3 | 3 |
import java.sql.Timestamp; |
4 |
import java.text.SimpleDateFormat; |
|
4 | 5 |
import javax.json.JsonObject; |
5 | 6 |
import org.gvsig.expressionevaluator.spi.JsonUtils; |
6 | 7 |
import org.gvsig.vcsgis.lib.repository.localdb.VCSGisRepositoryLocaldb; |
... | ... | |
234 | 235 |
public DisposableIterable<Feature> getDataOfEntityFromEfectiveDate(VCSGisRepositoryLocaldb repository, String entityCode, Timestamp efectiveDate) { |
235 | 236 |
FeatureStore store = null; |
236 | 237 |
DisposableIterable<Feature> features = null; |
238 |
SimpleDateFormat dateFormat = new SimpleDateFormat( |
|
239 |
VCSGisUtils.getSqlTemplate( |
|
240 |
repository.getServerExplorer().getProviderName(), |
|
241 |
"dateFormat") |
|
242 |
); |
|
237 | 243 |
try { |
238 | 244 |
String sql = String.format( |
239 | 245 |
VCSGisUtils.getSqlTemplate( |
240 | 246 |
repository.getServerExplorer().getProviderName(), |
241 | 247 |
"getDataOfEntityFromEfectiveDate" |
242 | 248 |
), |
243 |
TABLE_NAME, |
|
244 |
DATA_FEATURERELATEDCODE, |
|
245 |
DATA_REVNUMBER, |
|
246 |
COD_ENTITY, |
|
247 | 249 |
entityCode, |
248 |
DATA_EFECTIVEDATE, |
|
249 |
efectiveDate // FIXME: Hay que formatear la fecha correctamente |
|
250 |
dateFormat.format(efectiveDate) |
|
250 | 251 |
); |
251 | 252 |
|
252 | 253 |
store = repository.openFeatureStore(TABLE_NAME,sql); |
253 | 254 |
FeatureSet fset = store.getFeatureSet(); |
254 |
// dumpData("Data", fset); |
|
255 | 255 |
features = fset.iterable(); |
256 | 256 |
return features; |
257 | 257 |
} catch (Exception ex) { |
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.server/org.gvsig.vcsgis.server.lib/src/main/java/org/gvsig/vcsgis/server/lib/VCSGisHistoryServlet.java | ||
---|---|---|
1 |
/* |
|
2 |
* gvSIG. Desktop Geographic Information System. |
|
3 |
* |
|
4 |
* Copyright (C) 2007-2020 gvSIG Association. |
|
5 |
* |
|
6 |
* This program is free software; you can redistribute it and/or |
|
7 |
* modify it under the terms of the GNU General Public License |
|
8 |
* as published by the Free Software Foundation; either version 3 |
|
9 |
* of the License, or (at your option) any later version. |
|
10 |
* |
|
11 |
* This program is distributed in the hope that it will be useful, |
|
12 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
13 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
14 |
* GNU General Public License for more details. |
|
15 |
* |
|
16 |
* You should have received a copy of the GNU General Public License |
|
17 |
* along with this program. If not, see <https://www.gnu.org/licenses/>. |
|
18 |
* |
|
19 |
* For any additional information, do not hesitate to contact us |
|
20 |
* at info AT gvsig.com, or visit our website www.gvsig.com. |
|
21 |
*/ |
|
22 |
package org.gvsig.vcsgis.server.lib; |
|
23 |
|
|
24 |
/** |
|
25 |
* |
|
26 |
* @author gvSIG Team |
|
27 |
*/ |
|
28 |
import java.io.IOException; |
|
29 |
import javax.servlet.ServletException; |
|
30 |
import javax.servlet.http.HttpServletRequest; |
|
31 |
import javax.servlet.http.HttpServletResponse; |
|
32 |
import org.gvsig.vcsgis.lib.server.VCSGisServerController; |
|
33 |
import org.gvsig.vcsgis.lib.server.VCSGisServerHandler; |
|
34 |
|
|
35 |
|
|
36 |
public class VCSGisHistoryServlet extends AbstractVCSGisServlet { |
|
37 |
|
|
38 |
@Override |
|
39 |
protected VCSGisServerHandler createHandler(VCSGisServerController vcsgisserver) { |
|
40 |
return vcsgisserver.createHistoryHandler(); |
|
41 |
} |
|
42 |
|
|
43 |
@Override |
|
44 |
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { |
|
45 |
doPost(req, resp); |
|
46 |
} |
|
47 |
|
|
48 |
|
|
49 |
} |
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.server/org.gvsig.vcsgis.server.lib/src/main/java/org/gvsig/vcsgis/server/lib/VCSGisServerUtils.java | ||
---|---|---|
92 | 92 |
context.addServlet(VCSGisEntitiesServlet.class, "/entities"); |
93 | 93 |
context.addServlet(VCSGisCommitServlet.class, "/commit"); |
94 | 94 |
context.addServlet(VCSGisCheckoutServlet.class, "/checkout"); |
95 |
context.addServlet(VCSGisHistoryServlet.class, "/history"); |
|
95 | 96 |
context.addServlet(VCSGisUpdateServlet.class, "/update"); |
96 | 97 |
context.addServlet(VCSGisAuthenticateServlet.class, "/authenticate"); |
97 | 98 |
|
org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.swing/org.gvsig.vcsgis.swing.impl/src/main/java/org/gvsig/vcsgis/swing/impl/export/VCSGisJExportView.xml | ||
---|---|---|
24 | 24 |
</at> |
25 | 25 |
<at name="componentclass">com.jeta.forms.gui.form.FormComponent</at> |
26 | 26 |
</super> |
27 |
<at name="id">/home/jjdelcerro/datos/devel/org.gvsig.vcsgis/org.gvsig.vcsgis.swing/org.gvsig.vcsgis.swing.impl/src/main/java/org/gvsig/vcsgis/swing/impl/export/VCSGisJExportView.xml</at>
|
|
27 |
<at name="id">/home/fdiaz/projects/gvSIG/org.gvsig.vcsgis/org.gvsig.vcsgis.swing/org.gvsig.vcsgis.swing.impl/src/main/java/org/gvsig/vcsgis/swing/impl/export/VCSGisJExportView.xml</at>
|
|
28 | 28 |
<at name="path">src/main/java/org/gvsig/vcsgis/swing/impl/export/VCSGisJExportView.xml</at> |
29 |
<at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:MIN(16PX;DEFAULT):NONE,CENTER:MIN(16PX;DEFAULT):NONE,CENTER:MIN(16PX;DEFAULT):NONE,CENTER:2DLU:NONE</at> |
|
29 |
<at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:MIN(16PX;DEFAULT):NONE,CENTER:MIN(16PX;DEFAULT):NONE,CENTER:MIN(16PX;DEFAULT):NONE,CENTER:2DLU:NONE</at>
|
|
30 | 30 |
<at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE</at> |
31 | 31 |
<at name="components"> |
32 | 32 |
<object classname="java.util.LinkedList"> |
... | ... | |
75 | 75 |
</object> |
76 | 76 |
</at> |
77 | 77 |
<at name="name">lblWorkspace</at> |
78 |
<at name="width">85</at>
|
|
78 |
<at name="width">67</at>
|
|
79 | 79 |
<at name="text">_Workspace</at> |
80 | 80 |
<at name="fill"> |
81 | 81 |
<object classname="com.jeta.forms.store.properties.effects.PaintProperty"> |
82 | 82 |
<at name="name">fill</at> |
83 | 83 |
</object> |
84 | 84 |
</at> |
85 |
<at name="height">15</at>
|
|
85 |
<at name="height">14</at>
|
|
86 | 86 |
</object> |
87 | 87 |
</at> |
88 | 88 |
</object> |
... | ... | |
135 | 135 |
</object> |
136 | 136 |
</at> |
137 | 137 |
<at name="name">cboWorkspaces</at> |
138 |
<at name="width">724</at>
|
|
138 |
<at name="width">1178</at>
|
|
139 | 139 |
<at name="items"> |
140 | 140 |
<object classname="com.jeta.forms.store.properties.ItemsProperty"> |
141 | 141 |
<at name="name">items</at> |
142 | 142 |
</object> |
143 | 143 |
</at> |
144 |
<at name="height">24</at>
|
|
144 |
<at name="height">20</at>
|
|
145 | 145 |
</object> |
146 | 146 |
</at> |
147 | 147 |
</object> |
... | ... | |
200 | 200 |
<at name="actionCommand">...</at> |
201 | 201 |
<at name="opaque">false</at> |
202 | 202 |
<at name="name">btnInitWorkspace</at> |
203 |
<at name="width">19</at>
|
|
203 |
<at name="width">16</at>
|
|
204 | 204 |
<at name="text">...</at> |
205 |
<at name="height">19</at>
|
|
205 |
<at name="height">18</at>
|
|
206 | 206 |
</object> |
207 | 207 |
</at> |
208 | 208 |
</object> |
... | ... | |
255 | 255 |
</object> |
256 | 256 |
</at> |
257 | 257 |
<at name="name">lblTable</at> |
258 |
<at name="width">85</at>
|
|
258 |
<at name="width">67</at>
|
|
259 | 259 |
<at name="text">_Table</at> |
260 | 260 |
<at name="fill"> |
261 | 261 |
<object classname="com.jeta.forms.store.properties.effects.PaintProperty"> |
262 | 262 |
<at name="name">fill</at> |
263 | 263 |
</object> |
264 | 264 |
</at> |
265 |
<at name="height">15</at>
|
|
265 |
<at name="height">14</at>
|
|
266 | 266 |
</object> |
267 | 267 |
</at> |
268 | 268 |
</object> |
... | ... | |
315 | 315 |
</object> |
316 | 316 |
</at> |
317 | 317 |
<at name="name">txtFilter</at> |
318 |
<at name="width">822</at>
|
|
319 |
<at name="height">19</at>
|
|
318 |
<at name="width">1256</at>
|
|
319 |
<at name="height">20</at>
|
|
320 | 320 |
</object> |
321 | 321 |
</at> |
322 | 322 |
</object> |
... | ... | |
371 | 371 |
<at name="scrollableTracksViewportHeight">true</at> |
372 | 372 |
<at name="scrollableTracksViewportWidth">true</at> |
373 | 373 |
<at name="name">lstTables</at> |
374 |
<at name="width">851</at>
|
|
374 |
<at name="width">1281</at>
|
|
375 | 375 |
<at name="items"> |
376 | 376 |
<object classname="com.jeta.forms.store.properties.ItemsProperty"> |
377 | 377 |
<at name="name">items</at> |
... | ... | |
404 | 404 |
</at> |
405 | 405 |
</object> |
406 | 406 |
</at> |
407 |
<at name="height">77</at>
|
|
407 |
<at name="height">258</at>
|
|
408 | 408 |
</object> |
409 | 409 |
</at> |
410 | 410 |
</object> |
... | ... | |
464 | 464 |
</object> |
465 | 465 |
</at> |
466 | 466 |
<at name="name">rdbEffectiveDate</at> |
467 |
<at name="width">854</at>
|
|
467 |
<at name="width">1283</at>
|
|
468 | 468 |
<at name="text">_Effective_date</at> |
469 |
<at name="height">17</at>
|
|
469 |
<at name="height">16</at>
|
|
470 | 470 |
</object> |
471 | 471 |
</at> |
472 | 472 |
</object> |
... | ... | |
526 | 526 |
</object> |
527 | 527 |
</at> |
528 | 528 |
<at name="name">rdbRevision</at> |
529 |
<at name="width">854</at>
|
|
529 |
<at name="width">1283</at>
|
|
530 | 530 |
<at name="text">_Revision</at> |
531 |
<at name="height">17</at>
|
|
531 |
<at name="height">16</at>
|
|
532 | 532 |
</object> |
533 | 533 |
</at> |
534 | 534 |
</object> |
... | ... | |
587 | 587 |
<at name="actionCommand">...</at> |
588 | 588 |
<at name="opaque">false</at> |
589 | 589 |
<at name="name">btnTable</at> |
590 |
<at name="width">19</at>
|
|
590 |
<at name="width">16</at>
|
|
591 | 591 |
<at name="text">...</at> |
592 |
<at name="height">19</at>
|
|
592 |
<at name="height">18</at>
|
|
593 | 593 |
</object> |
594 | 594 |
</at> |
595 | 595 |
</object> |
... | ... | |
604 | 604 |
<at name="cellconstraints"> |
605 | 605 |
<object classname="com.jeta.forms.store.memento.CellConstraintsMemento"> |
606 | 606 |
<at name="column">2</at> |
607 |
<at name="row">17</at>
|
|
607 |
<at name="row">18</at>
|
|
608 | 608 |
<at name="colspan">5</at> |
609 | 609 |
<at name="rowspan">1</at> |
610 | 610 |
<at name="halign">default</at> |
... | ... | |
642 | 642 |
</object> |
643 | 643 |
</at> |
644 | 644 |
<at name="name">lblAddTableToProject</at> |
645 |
<at name="width">854</at>
|
|
645 |
<at name="width">1283</at>
|
|
646 | 646 |
<at name="text">_Add_the_table_to_the_project</at> |
647 | 647 |
<at name="fill"> |
648 | 648 |
<object classname="com.jeta.forms.store.properties.effects.PaintProperty"> |
649 | 649 |
<at name="name">fill</at> |
650 | 650 |
</object> |
651 | 651 |
</at> |
652 |
<at name="height">15</at>
|
|
652 |
<at name="height">14</at>
|
|
653 | 653 |
</object> |
654 | 654 |
</at> |
655 | 655 |
</object> |
... | ... | |
664 | 664 |
<at name="cellconstraints"> |
665 | 665 |
<object classname="com.jeta.forms.store.memento.CellConstraintsMemento"> |
666 | 666 |
<at name="column">2</at> |
667 |
<at name="row">20</at>
|
|
667 |
<at name="row">21</at>
|
|
668 | 668 |
<at name="colspan">4</at> |
669 | 669 |
<at name="rowspan">1</at> |
670 | 670 |
<at name="halign">default</at> |
... | ... | |
702 | 702 |
</object> |
703 | 703 |
</at> |
704 | 704 |
<at name="name">lblStatusTitle</at> |
705 |
<at name="width">831</at>
|
|
705 |
<at name="width">1263</at>
|
|
706 | 706 |
<at name="fill"> |
707 | 707 |
<object classname="com.jeta.forms.store.properties.effects.PaintProperty"> |
708 | 708 |
<at name="name">fill</at> |
... | ... | |
723 | 723 |
<at name="cellconstraints"> |
724 | 724 |
<object classname="com.jeta.forms.store.memento.CellConstraintsMemento"> |
725 | 725 |
<at name="column">2</at> |
726 |
<at name="row">21</at>
|
|
726 |
<at name="row">22</at>
|
|
727 | 727 |
<at name="colspan">4</at> |
728 | 728 |
<at name="rowspan">1</at> |
729 | 729 |
<at name="halign">default</at> |
... | ... | |
761 | 761 |
</object> |
762 | 762 |
</at> |
763 | 763 |
<at name="name">pbStatus</at> |
764 |
<at name="width">831</at>
|
|
764 |
<at name="width">1263</at>
|
|
765 | 765 |
<at name="percentComplete">0.25</at> |
766 | 766 |
<at name="value">25</at> |
767 | 767 |
<at name="height">12</at> |
... | ... | |
779 | 779 |
<at name="cellconstraints"> |
780 | 780 |
<object classname="com.jeta.forms.store.memento.CellConstraintsMemento"> |
781 | 781 |
<at name="column">2</at> |
782 |
<at name="row">22</at>
|
|
782 |
<at name="row">23</at>
|
|
783 | 783 |
<at name="colspan">4</at> |
784 | 784 |
<at name="rowspan">1</at> |
785 | 785 |
<at name="halign">default</at> |
... | ... | |
817 | 817 |
</object> |
818 | 818 |
</at> |
819 | 819 |
<at name="name">lblStatusMessages</at> |
820 |
<at name="width">831</at>
|
|
820 |
<at name="width">1263</at>
|
|
821 | 821 |
<at name="fill"> |
822 | 822 |
<object classname="com.jeta.forms.store.properties.effects.PaintProperty"> |
823 | 823 |
<at name="name">fill</at> |
... | ... | |
848 | 848 |
</at> |
849 | 849 |
<at name="componentclass">com.jeta.forms.gui.form.FormComponent</at> |
850 | 850 |
</super> |
851 |
<at name="id">embedded.R312e8c90J1772a408e95LU7ffc</at>
|
|
851 |
<at name="id">embedded.1021904144</at>
|
|
852 | 852 |
<at name="rowspecs">CENTER:DEFAULT:NONE</at> |
853 | 853 |
<at name="colspecs">FILL:22PX:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE</at> |
854 | 854 |
<at name="components"> |
... | ... | |
898 | 898 |
</object> |
899 | 899 |
</at> |
900 | 900 |
<at name="name">txtEffectiveDate</at> |
901 |
<at name="width">795</at>
|
|
901 |
<at name="width">1229</at>
|
|
902 | 902 |
<at name="enabled">false</at> |
903 |
<at name="height">19</at>
|
|
903 |
<at name="height">20</at>
|
|
904 | 904 |
</object> |
905 | 905 |
</at> |
906 | 906 |
</object> |
... | ... | |
959 | 959 |
<at name="actionCommand">...</at> |
960 | 960 |
<at name="opaque">false</at> |
961 | 961 |
<at name="name">btnEffectiveDate</at> |
962 |
<at name="width">19</at>
|
|
962 |
<at name="width">16</at>
|
|
963 | 963 |
<at name="text">...</at> |
964 | 964 |
<at name="enabled">false</at> |
965 |
<at name="height">19</at>
|
|
965 |
<at name="height">18</at>
|
|
966 | 966 |
</object> |
967 | 967 |
</at> |
968 | 968 |
</object> |
... | ... | |
987 | 987 |
</at> |
988 | 988 |
</object> |
989 | 989 |
</at> |
990 |
<at name="name"></at>
|
|
990 |
<at name="name"/>
|
|
991 | 991 |
<at name="fill"> |
992 | 992 |
<object classname="com.jeta.forms.store.properties.effects.PaintProperty"> |
993 | 993 |
<at name="name">fill</at> |
... | ... | |
998 | 998 |
<at name="name">scollBars</at> |
999 | 999 |
<at name="verticalpolicy">21</at> |
1000 | 1000 |
<at name="horizontalpolicy">31</at> |
1001 |
<at name="border"> |
|
1002 |
<object classname="com.jeta.forms.store.properties.CompoundBorderProperty"> |
|
1003 |
<super classname="com.jeta.forms.store.properties.BorderProperty"> |
|
1004 |
<at name="name">border</at> |
|
1005 |
</super> |
|
1006 |
<at name="borders"> |
|
1007 |
<object classname="java.util.LinkedList"> |
|
1008 |
<item > |
|
1009 |
<at name="value"> |
|
1010 |
<object classname="com.jeta.forms.store.properties.DefaultBorderProperty"> |
|
1011 |
<super classname="com.jeta.forms.store.properties.BorderProperty"> |
|
1012 |
<at name="name">border</at> |
|
1013 |
</super> |
|
1014 |
</object> |
|
1015 |
</at> |
|
1016 |
</item> |
|
1017 |
</object> |
|
1018 |
</at> |
|
1019 |
</object> |
|
1020 |
</at> |
|
1001 | 1021 |
</object> |
1002 | 1022 |
</at> |
1003 | 1023 |
</object> |
... | ... | |
1049 | 1069 |
</at> |
1050 | 1070 |
<at name="componentclass">com.jeta.forms.gui.form.FormComponent</at> |
1051 | 1071 |
</super> |
1052 |
<at name="id">embedded.148016097</at>
|
|
1072 |
<at name="id">embedded.2075886119</at>
|
|
1053 | 1073 |
<at name="rowspecs">CENTER:DEFAULT:NONE</at> |
1054 | 1074 |
<at name="colspecs">FILL:22PX:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE</at> |
1055 | 1075 |
<at name="components"> |
... | ... | |
1099 | 1119 |
</object> |
1100 | 1120 |
</at> |
1101 | 1121 |
<at name="name">txtRevision</at> |
1102 |
<at name="width">795</at>
|
|
1122 |
<at name="width">1229</at>
|
|
1103 | 1123 |
<at name="enabled">false</at> |
1104 |
<at name="height">19</at>
|
|
1124 |
<at name="height">20</at>
|
|
1105 | 1125 |
</object> |
1106 | 1126 |
</at> |
1107 | 1127 |
</object> |
... | ... | |
1160 | 1180 |
<at name="actionCommand">...</at> |
1161 | 1181 |
<at name="opaque">false</at> |
1162 | 1182 |
<at name="name">btnRevision</at> |
1163 |
<at name="width">19</at>
|
|
1183 |
<at name="width">16</at>
|
|
1164 | 1184 |
<at name="text">...</at> |
1165 | 1185 |
<at name="enabled">false</at> |
1166 |
<at name="height">19</at>
|
|
1186 |
<at name="height">18</at>
|
|
1167 | 1187 |
</object> |
1168 | 1188 |
</at> |
1169 | 1189 |
</object> |
... | ... | |
1188 | 1208 |
</at> |
1189 | 1209 |
</object> |
1190 | 1210 |
</at> |
1191 |
<at name="name"></at>
|
|
1211 |
<at name="name"/>
|
|
1192 | 1212 |
<at name="fill"> |
1193 | 1213 |
<object classname="com.jeta.forms.store.properties.effects.PaintProperty"> |
1194 | 1214 |
<at name="name">fill</at> |
... | ... | |
1260 | 1280 |
<at name="cellconstraints"> |
1261 | 1281 |
<object classname="com.jeta.forms.store.memento.CellConstraintsMemento"> |
1262 | 1282 |
<at name="column">2</at> |
1263 |
<at name="row">19</at>
|
|
1283 |
<at name="row">20</at>
|
|
1264 | 1284 |
<at name="colspan">5</at> |
1265 | 1285 |
<at name="rowspan">1</at> |
1266 | 1286 |
<at name="halign">default</at> |
... | ... | |
1270 | 1290 |
</at> |
1271 | 1291 |
<at name="componentclass">com.jeta.forms.gui.form.FormComponent</at> |
1272 | 1292 |
</super> |
1273 |
<at name="id">embedded.K312e8c90Z1772a408e95DQ7ffb</at>
|
|
1293 |
<at name="id">embedded.1835273475</at>
|
|
1274 | 1294 |
<at name="rowspecs">CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE</at> |
1275 |
<at name="colspecs">FILL:22PX:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0)</at> |
|
1295 |
<at name="colspecs">FILL:22PX:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0)</at>
|
|
1276 | 1296 |
<at name="components"> |
1277 | 1297 |
<object classname="java.util.LinkedList"> |
1278 | 1298 |
<item > |
... | ... | |
1283 | 1303 |
<object classname="com.jeta.forms.store.memento.CellConstraintsMemento"> |
1284 | 1304 |
<at name="column">2</at> |
1285 | 1305 |
<at name="row">1</at> |
1286 |
<at name="colspan">2</at>
|
|
1306 |
<at name="colspan">3</at>
|
|
1287 | 1307 |
<at name="rowspan">1</at> |
1288 | 1308 |
<at name="halign">default</at> |
1289 | 1309 |
<at name="valign">default</at> |
... | ... | |
1327 | 1347 |
</object> |
1328 | 1348 |
</at> |
1329 | 1349 |
<at name="name">rdbDontAddToProject</at> |
1330 |
<at name="width">827</at>
|
|
1350 |
<at name="width">1256</at>
|
|
1331 | 1351 |
<at name="text">_Dont_add_the_table_or_layer_to_the_project</at> |
1332 |
<at name="height">17</at>
|
|
1352 |
<at name="height">16</at>
|
|
1333 | 1353 |
</object> |
1334 | 1354 |
</at> |
1335 | 1355 |
</object> |
... | ... | |
1345 | 1365 |
<object classname="com.jeta.forms.store.memento.CellConstraintsMemento"> |
1346 | 1366 |
<at name="column">2</at> |
1347 | 1367 |
<at name="row">3</at> |
1348 |
<at name="colspan">2</at>
|
|
1368 |
<at name="colspan">3</at>
|
|
1349 | 1369 |
<at name="rowspan">1</at> |
1350 | 1370 |
<at name="halign">default</at> |
1351 | 1371 |
<at name="valign">default</at> |
... | ... | |
1389 | 1409 |
</object> |
1390 | 1410 |
</at> |
1391 | 1411 |
<at name="name">rdbAddLayerToView</at> |
Also available in: Unified diff