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 / TestSTDistance.java @ 45649

History | View | Annotate | Download (3.71 KB)

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

    
3
import java.util.List;
4
import junit.framework.TestCase;
5
import org.cresques.cts.IProjection;
6
import org.gvsig.expressionevaluator.Expression;
7
import org.gvsig.expressionevaluator.ExpressionUtils;
8
import org.gvsig.expressionevaluator.GeometryExpressionBuilder;
9
import org.gvsig.fmap.crs.CRSFactory;
10
import org.gvsig.fmap.dal.DALLocator;
11
import org.gvsig.fmap.dal.DataManager;
12
import org.gvsig.fmap.dal.DataQuery;
13
import org.gvsig.fmap.dal.expressionevaluator.DALExpressionBuilder;
14
import org.gvsig.fmap.dal.feature.FeatureQuery;
15
import org.gvsig.fmap.dal.feature.FeatureStore;
16
import org.gvsig.fmap.dal.feature.FeatureType;
17
import org.gvsig.fmap.dal.store.h2.TestUtils;
18
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
19
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory;
20
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference;
21
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
22
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.ResultSetForSetProviderOperation;
23
import org.gvsig.fmap.geom.Geometry;
24
import org.gvsig.fmap.geom.GeometryUtils;
25
import org.gvsig.fmap.geom.primitive.Point;
26
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
27
import org.slf4j.Logger;
28
import org.slf4j.LoggerFactory;
29

    
30
public class TestSTDistance extends TestCase {
31

    
32
  private static final Logger LOGGER = LoggerFactory.getLogger(TestSTDistance.class);
33

    
34
  public TestSTDistance(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
  public void testSTDistance() throws Exception {
50
    JDBCHelper helper = TestUtils.createJDBCHelper();
51
    JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
52
    OperationsFactory operations = helper.getOperations();
53

    
54
    List<String> expectedSQLs = TestUtils.getSQLs("testSTDistance.sql");
55
    
56
    FeatureStore sourceStore = TestUtils.openSourceStore1();
57

    
58
    TableReference table = operations.createTableReference(
59
            "dbtest", 
60
            sqlbuilder.default_schema(), 
61
            "test", 
62
            null
63
    );
64
    FeatureType featureType = sourceStore.getDefaultFeatureType();
65
    FeatureQuery query = sourceStore.createFeatureQuery();
66

    
67
    IProjection proj = CRSFactory.getCRS("EPSG:4326");
68
    
69
    Point point = GeometryUtils.createPoint(10, 10);
70
    Geometry buffer = point.buffer(1);
71
    
72

    
73
    DataManager dataManager = DALLocator.getDataManager();
74
    DALExpressionBuilder dalBuilder = dataManager.createDALExpressionBuilder();
75
    GeometryExpressionBuilder builder = dalBuilder.expression();
76
    String filter = builder.ST_Intersects(
77
            builder.geometry(buffer, proj), 
78
            builder.column(featureType.getDefaultGeometryAttributeName())
79
    ).toString();
80
    String sortBy = builder.ST_Distance(
81
            builder.geometry(buffer), 
82
            builder.column(featureType.getDefaultGeometryAttributeName())
83
    ).toString();
84
    Expression sortByExpression = ExpressionUtils.createExpression(sortBy);
85

    
86
    query.setFilter(filter);
87
    query.getOrder().add(sortByExpression, true);
88
    query.setLimit(1);
89

    
90
    ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
91
            table,
92
            null,
93
            null,
94
            query,
95
            featureType,
96
            featureType,
97
            0,
98
            0, 
99
            0
100
    );
101
    String sql = resultSetForSetProvider.getSQL();
102
    System.out.println("###### SQL:"+sql);
103
    System.out.println("###### EXP:"+expectedSQLs.get(0));
104
    
105
    assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(0), sql);
106
  }
107

    
108
}