Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.sqlite / org.gvsig.sqlite.provider / src / test / java / org / gvsig / sqlite / dal / operations / sql / TestSTDistance.java @ 47539

History | View | Annotate | Download (3.66 KB)

1
package org.gvsig.sqlite.dal.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.expressionevaluator.DALExpressionBuilder;
13
import org.gvsig.fmap.dal.feature.FeatureQuery;
14
import org.gvsig.fmap.dal.feature.FeatureStore;
15
import org.gvsig.fmap.dal.feature.FeatureType;
16
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
17
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory;
18
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference;
19
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
20
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.ResultSetForSetProviderOperation;
21
import org.gvsig.fmap.geom.Geometry;
22
import org.gvsig.fmap.geom.GeometryUtils;
23
import org.gvsig.fmap.geom.primitive.Point;
24
import org.gvsig.sqlite.dal.TestUtils;
25
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
26
import org.slf4j.Logger;
27
import org.slf4j.LoggerFactory;
28

    
29
public class TestSTDistance extends TestCase {
30

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

    
33
  public TestSTDistance(String testName) {
34
    super(testName);
35
  }
36

    
37
  @Override
38
  protected void setUp() throws Exception {
39
    super.setUp();
40
    new DefaultLibrariesInitializer().fullInitialize();
41
  }
42

    
43
  @Override
44
  protected void tearDown() throws Exception {
45
    super.tearDown();
46
  }
47

    
48
  public void testSTDistance() throws Exception {
49
    JDBCHelper helper = TestUtils.createJDBCHelper();
50
    JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
51
    OperationsFactory operations = helper.getOperations();
52

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

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

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

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

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

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

    
107
}