Revision 3446

View differences:

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>
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff