Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.h2spatial / org.gvsig.h2spatial.h2gis132 / org.gvsig.h2spatial.h2gis132.provider / src / test / java / org / gvsig / fmap / dal / store / h2 / operations / sql / TestAppend.java @ 47779

History | View | Annotate | Download (3.47 KB)

1
package org.gvsig.fmap.dal.store.h2.operations.sql;
2

    
3
import java.util.ArrayList;
4
import java.util.List;
5
import junit.framework.TestCase;
6
import org.gvsig.fmap.dal.DataTypes;
7
import org.gvsig.fmap.dal.feature.Feature;
8
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
9
import org.gvsig.fmap.dal.feature.FeatureSelection;
10
import org.gvsig.fmap.dal.feature.FeatureStore;
11
import org.gvsig.fmap.dal.feature.FeatureType;
12
import org.gvsig.fmap.dal.store.h2.TestUtils;
13
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
14
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory;
15
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference;
16
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
17
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.AppendOperation;
18
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
19
import org.slf4j.Logger;
20
import org.slf4j.LoggerFactory;
21

    
22
public class TestAppend extends TestCase {
23

    
24
  private static final Logger LOGGER = LoggerFactory.getLogger(TestAppend.class);
25

    
26
  public TestAppend(String testName) {
27
    super(testName);
28
  }
29

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

    
36
  @Override
37
  protected void tearDown() throws Exception {
38
    super.tearDown();
39
  }
40

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

    
49
    List<String> expectedSQLs = TestUtils.getSQLs("append.sql");
50
    
51
    FeatureStore sourceStore = TestUtils.openSourceStore1();
52

    
53
    TableReference table = operations.createTableReference(
54
            "dbtest", 
55
            sqlbuilder.default_schema(), 
56
            "test", 
57
            null
58
    );
59
    FeatureType featureType = sourceStore.getDefaultFeatureType();
60
    AppendOperation append = operations.createAppend(
61
            table,
62
            featureType
63
    );
64
    append.begin(FeatureStore.SUBMODE_NONE);
65
    List<String> SQLs = new ArrayList<>();
66
    SQLs.addAll(append.getPreviousSQLs());
67
    SQLs.add( append.getSQL());
68
    SQLs.addAll(append.getPostSQLs());
69
    assertEquals("Append num SQLs", expectedSQLs.size(), SQLs.size());
70
    for (int i = 0; i < expectedSQLs.size(); i++) {
71
      assertEquals("Append SQL "+i, expectedSQLs.get(i), SQLs.get(i));
72
    }
73
    
74
    for (Feature sourceFeature : sourceStore.getFeatureSet()) {
75
      List<Object> parametersSQL = append.getSQLParameters(TestUtils.getFeatureProvider(sourceFeature));
76
      List<Object> expectedParameters = this.getExpectedparameters(sourceFeature);
77
      assertEquals("Append num. parameters", parametersSQL.size(), expectedParameters.size());
78
      for (int i = 0; i < expectedParameters.size(); i++) {
79
        assertEquals("Append parameter "+i, expectedParameters.get(i), parametersSQL.get(i));
80
      }
81
    }
82
    append.end();
83
  }
84

    
85
  private List<Object> getExpectedparameters(Feature sourceFeature) {
86
    FeatureType ft = sourceFeature.getType();
87
    List<Object> values = new ArrayList<>();
88
    for (FeatureAttributeDescriptor attr : ft) {
89
      Object v = sourceFeature.get(attr.getIndex());
90
      values.add(v);
91
      if( attr.getType()==DataTypes.GEOMETRY ) {
92
        String srs = attr.getSRS().getAbrev();
93
        values.add(Integer.parseInt(srs.split(":")[1]));
94
      }
95
    }
96
    return values;
97
  }
98

    
99
}