Revision 47606 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.sqlite/org.gvsig.sqlite.provider/src/test/java/org/gvsig/sqlite/dal/operations/sql/TestPerformChanges.java

View differences:

TestPerformChanges.java
3 3
import java.util.Collections;
4 4
import java.util.List;
5 5
import junit.framework.TestCase;
6
import org.apache.commons.lang.StringUtils;
6 7
import org.gvsig.fmap.dal.DALLocator;
7 8
import org.gvsig.fmap.dal.DataTypes;
8 9
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
......
10 11
import org.gvsig.fmap.dal.feature.FeatureStore;
11 12
import org.gvsig.fmap.dal.feature.FeatureType;
12 13
import org.gvsig.fmap.dal.feature.FeatureType.FeatureTypeChanged;
14
import org.gvsig.fmap.dal.store.jdbc2.AbstractTestUtils;
13 15
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
14 16
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory;
15 17
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference;
16 18
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
17 19
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.PerformChangesOperation;
18 20
import org.gvsig.sqlite.dal.TestUtils;
21
import org.gvsig.sqlite.dal.TestUtilsSQLite;
19 22
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
20 23
import org.slf4j.Logger;
21 24
import org.slf4j.LoggerFactory;
22 25

  
23 26
public class TestPerformChanges extends TestCase {
24 27

  
25
  private static final Logger LOGGER = LoggerFactory.getLogger(TestPerformChanges.class);
28
    private static final Logger LOGGER = LoggerFactory.getLogger(TestPerformChanges.class);
26 29

  
27
  public TestPerformChanges(String testName) {
28
    super(testName);
29
  }
30
    public TestPerformChanges(String testName) {
31
        super(testName);
32
    }
30 33

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

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

  
42
  // TODO add test methods here. The name must begin with 'test'. For example:
43
  // public void testHello() {}
44
  
45
  public void testPerformChanges() throws Exception {
46
    JDBCHelper helper = TestUtils.createJDBCHelper();
47
    JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
48
    OperationsFactory operations = helper.getOperations();
45
    // TODO add test methods here. The name must begin with 'test'. For example:
46
    // public void testHello() {}
47
    public void testPerformChanges() throws Exception {
48
        try {
49
            JDBCHelper helper = TestUtils.createJDBCHelper();
50
            JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
51
            OperationsFactory operations = helper.getOperations();
49 52

  
50
    List<String> expectedSQLs = TestUtils.getSQLs("performChanges.sql");
51
    
52
    FeatureStore sourceStore = TestUtils.openSourceStore1();
53
            TestUtilsSQLite utils = new TestUtilsSQLite();
54
            AbstractTestUtils.Expecteds expected = utils.getExpecteds("performChanges.sql");
55
            List<String> expectedSQLs = expected.getAll("performChanges");
53 56

  
54
    TableReference table = operations.createTableReference(
55
            "dbtest", 
56
            sqlbuilder.default_schema(), 
57
            "test", 
58
            null
59
    );
60
    FeatureType featureType = sourceStore.getDefaultFeatureType();
61
    
62
    
63
    FeatureTypeChanged featureTypeChanged = new FeatureTypeChanged() {
64
      @Override
65
      public FeatureType getSource() {
66
        EditableFeatureType ft = DALLocator.getDataManager().createFeatureType();
67
        EditableFeatureAttributeDescriptor id = ft.add("ID", DataTypes.INT);
68
        id.copyFrom(featureType.getAttributeDescriptor("ID"));
69
        return ft;
70
      }
57
//            List<String> expectedSQLs = TestUtils.getSQLs("performChanges.sql");
71 58

  
72
      @Override
73
      public FeatureType getTarget() {
74
        return featureType;
75
      }
76
    };
77
    List<FeatureTypeChanged> featureTypesChangeds = Collections.singletonList(featureTypeChanged);
78
    
79
    PerformChangesOperation performChanges = operations.createPerformChanges(
80
            table, 
81
            sourceStore.getDefaultFeatureType(),
82
            null, 
83
            null, 
84
            null, 
85
            featureTypesChangeds.iterator()
86
    );
87
    String insertSQL = performChanges.getInsertSQL();
88
    String deleteSQL = performChanges.getDeleteSQL();
89
    String updateSQL = performChanges.getUpdateSQL();
90
    List<String> updateTableSQLs = performChanges.getUpdateTableSQLs();
59
            FeatureStore sourceStore = TestUtils.openSourceStore1();
91 60

  
92
    System.out.println("###### EXP[insert]:" + expectedSQLs.get(0) + "###");
93
    System.out.println("###### SQL[insert]:" + insertSQL);// + "###");
94
    System.out.println("###### EXP[delete]:" + expectedSQLs.get(1) + "###");    
95
    System.out.println("###### SQL[delete]:" + deleteSQL);// + "###");    
96
    System.out.println("###### EXP[update]:" + expectedSQLs.get(2) + "###");    
97
    System.out.println("###### SQL[update]:" + updateSQL);// + "###");    
61
            TableReference table = operations.createTableReference(
62
                    "dbtest",
63
                    sqlbuilder.default_schema(),
64
                    "test",
65
                    null
66
            );
67
            FeatureType featureType = sourceStore.getDefaultFeatureType();
98 68

  
99
    for (int i = 0; i < updateTableSQLs.size(); i++) {
100
        System.out.println("###### EXP[updatetable "+i+"]:" + expectedSQLs.get(i+3) + "###");    
101
        System.out.println("###### SQL[updatetable "+i+"]:" + updateTableSQLs.get(i));// + "###");    
69
            FeatureTypeChanged featureTypeChanged = new FeatureTypeChanged() {
70
                @Override
71
                public FeatureType getSource() {
72
                    EditableFeatureType ft = DALLocator.getDataManager().createFeatureType();
73
                    EditableFeatureAttributeDescriptor id = ft.add("ID", DataTypes.INT);
74
                    id.copyFrom(featureType.getAttributeDescriptor("ID"));
75
                    return ft;
76
                }
77

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

  
85
            PerformChangesOperation performChanges = operations.createPerformChanges(
86
                    table,
87
                    sourceStore.getDefaultFeatureType(),
88
                    null,
89
                    null,
90
                    null,
91
                    featureTypesChangeds.iterator()
92
            );
93
            String insertSQL = performChanges.getInsertSQL();
94
            String deleteSQL = performChanges.getDeleteSQL();
95
            String updateSQL = performChanges.getUpdateSQL();
96
            List<String> updateTableSQLs = performChanges.getUpdateTableSQLs();
97

  
98
            System.out.println("###### EXP[insert]:" + expectedSQLs.get(0) + "###");
99
            System.out.println("###### SQL[insert]:" + insertSQL);// + "###");
100
            System.out.println("###### EXP[delete]:" + expectedSQLs.get(1) + "###");
101
            System.out.println("###### SQL[delete]:" + deleteSQL);// + "###");    
102
            System.out.println("###### EXP[update]:" + expectedSQLs.get(2) + "###");
103
            System.out.println("###### SQL[update]:" + updateSQL);// + "###");    
104

  
105
            for (int i = 0; i < updateTableSQLs.size(); i++) {
106
                System.out.println("###### EXP[updatetable " + i + "]:" + StringUtils.replace(expectedSQLs.get(i + 3)," ","?") + "###");
107
                System.out.println("###### SQL[updatetable " + i + "]:" + StringUtils.replace(updateTableSQLs.get(i)," ","?"));// + "###");    
108
            }
109

  
110
            assertEquals("Insert SQL", expectedSQLs.get(0), insertSQL);
111
            assertEquals("Delete SQL", expectedSQLs.get(1), deleteSQL);
112
            assertEquals("Update SQL", expectedSQLs.get(2), updateSQL);
113
            assertEquals("UpdateTable num. SQLs", expectedSQLs.size() - 3, updateTableSQLs.size());
114
            for (int i = 0; i < updateTableSQLs.size(); i++) {
115
                assertEquals("UpdateTable SQL " + i, expectedSQLs.get(i + 3), updateTableSQLs.get(i));
116
//                assertTrue(expected.match("performChanges", i+3, updateTableSQLs.get(i)));
117
            }
118
        } catch (Throwable th) {
119
            LOGGER.warn("TestPerformChanges: ", th);
120
            throw th;
121
        }
102 122
    }
103
    
104
    assertEquals("Insert SQL", expectedSQLs.get(0), insertSQL);
105
    assertEquals("Delete SQL", expectedSQLs.get(1), deleteSQL);
106
    assertEquals("Update SQL", expectedSQLs.get(2), updateSQL);
107
    assertEquals("UpdateTable num. SQLs", expectedSQLs.size()-3, updateTableSQLs.size());
108
    for (int i = 0; i < updateTableSQLs.size(); i++) {
109
      assertEquals("UpdateTable SQL "+i, expectedSQLs.get(i+3), updateTableSQLs.get(i));
110
    }
111
    
112
    
113
  }
114

  
115 123
}

Also available in: Unified diff