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 / usecases / arena2 / TestArena2OrderByExtraValue.java @ 47539

History | View | Annotate | Download (6.2 KB)

1
package org.gvsig.sqlite.dal.operations.usecases.arena2;
2

    
3
import java.util.List;
4
import junit.framework.TestCase;
5
import org.gvsig.fmap.dal.DataTypes;
6
import org.gvsig.fmap.dal.DatabaseWorkspaceManager;
7
import org.gvsig.fmap.dal.SQLBuilder;
8
import org.gvsig.fmap.dal.feature.EditableFeatureType;
9
import org.gvsig.fmap.dal.feature.FeatureQuery;
10
import org.gvsig.fmap.dal.feature.FeatureStore;
11
import org.gvsig.fmap.dal.feature.FeatureType;
12
import org.gvsig.fmap.dal.store.jdbc2.AbstractTestUtils;
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.operations.CountOperation;
17
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.ResultSetForSetProviderOperation;
18
import org.gvsig.sqlite.dal.TestUtils;
19
import org.gvsig.sqlite.dal.TestUtilsSQLite;
20
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
21
import org.slf4j.Logger;
22
import org.slf4j.LoggerFactory;
23

    
24
@SuppressWarnings("UseSpecificCatch")
25
public class TestArena2OrderByExtraValue extends TestCase {
26

    
27
    private static final Logger LOGGER = LoggerFactory.getLogger(TestArena2OrderByExtraValue.class);
28

    
29
    public TestArena2OrderByExtraValue(String testName) {
30
        super(testName);
31
    }
32

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

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

    
44
    protected AbstractTestUtils utils;
45

    
46
    public AbstractTestUtils utils() {
47
        if (this.utils == null) {
48
            this.utils = this.createUtils();
49
        }
50
        return this.utils;
51
    }
52

    
53
    protected AbstractTestUtils createUtils() {
54
        return new TestUtilsSQLite();
55
    }
56

    
57
    public void testOrderByExtraValue() throws Exception {
58
        try {
59
            JDBCHelper helper = TestUtils.createJDBCHelper();
60
            OperationsFactory operations = helper.getOperations();
61

    
62
            List<String> expectedSQLs = utils().getExpectedSQLs("usecases/arena2/testOrderByExtraValue.sql");
63

    
64
            DatabaseWorkspaceManager ws = TestArena2Utils.initDatabase(utils(), "testGroupByForeignValue");
65
            SQLBuilder sqlbuilder = TestArena2Utils.createSQLBuilder(ws);
66

    
67

    
68
            FeatureStore arena2_conductores = TestUtils.openStoreTest("usecases/arena2/ARENA2_CONDUCTORES.csv");
69
            FeatureStore arena2_accidentes = TestUtils.openStoreTest("usecases/arena2/ARENA2_ACCIDENTES.csv");
70
            FeatureStore arena2_vehiculos = TestUtils.openStoreTest("usecases/arena2/ARENA2_VEHICULOS.csv");
71

    
72
            TableReference table = operations.createTableReference(
73
                    "dbtest",
74
                    sqlbuilder.default_schema(),
75
                    "ARENA2_CONDUCTORES",
76
                    null
77
            );
78
            FeatureType featureType = arena2_conductores.getDefaultFeatureType();
79
            EditableFeatureType eFeatureType = featureType.getEditable();
80
            FeatureQuery query = arena2_conductores.createFeatureQuery();
81
            query.setFilter("( ( ( (FOREIGN_VALUE('ID_ACCIDENTE.TITULARIDAD_VIA') = 2) )) AND \n" +
82
"( (( (FOREIGN_VALUE('LID_VEHICULO.TIPO_VEHICULO') = 5) ) OR ( (FOREIGN_VALUE('LID_VEHICULO.TIPO_VEHICULO') = 6) ) OR ( (FOREIGN_VALUE('LID_VEHICULO.TIPO_VEHICULO') = 7) )))) AND \n" +
83
"( (( (FOREIGN_VALUE('ID_ACCIDENTE.FECHA_ACCIDENTE') >= DATE '2019-01-01') ) AND ( (FOREIGN_VALUE('ID_ACCIDENTE.FECHA_ACCIDENTE') <= DATE '2019-12-31') )))");
84
            utils().addExtraColumn(eFeatureType, query, "ano", DataTypes.INTEGER, "EXTRACT(YEAR FROM FOREIGN_VALUE('ID_ACCIDENTE.FECHA_ACCIDENTE'))");
85
            utils().addExtraColumn(eFeatureType, query, "provincia", DataTypes.STRING, "FOREIGN_VALUE('ID_ACCIDENTE.COD_PROVINCIA')");
86
            utils().addExtraColumn(eFeatureType, query, "lesividad", DataTypes.STRING, "CASE\n"
87
                    + "WHEN ASISTENCIA_SANITARIA=1 THEN 'Muerto'\n"
88
                    + "WHEN ASISTENCIA_SANITARIA=2 THEN 'Grave'\n"
89
                    + "WHEN ASISTENCIA_SANITARIA=3 or ASISTENCIA_SANITARIA=4 or ASISTENCIA_SANITARIA=5 or ASISTENCIA_SANITARIA=6 or ASISTENCIA_SANITARIA=7 THEN 'Leve'\n"
90
                    + "WHEN ASISTENCIA_SANITARIA=8 THEN 'Ileso'\n"
91
                    + "ELSE 'Se Desconoce'\n"
92
                    + "END CASE");
93
            utils().addExtraColumn(eFeatureType, query, "Acc", DataTypes.INTEGER, "1");
94

    
95
            query.getGroupByColumns().add("ano");
96
            query.getGroupByColumns().add("provincia");
97
            query.getGroupByColumns().add("lesividad");
98
            query.getAggregateFunctions().put("Acc", "SUM");
99
            query.getOrder().add("ano");
100
            query.getOrder().add("provincia");
101
            query.getOrder().add("lesividad");
102
            
103
            
104
            CountOperation count = operations.createCount(eFeatureType, table, null, query);
105
            String sqlcount = count.getSQL();
106
            System.out.println("###### testOrderByExtraValue(1): Count");
107
            System.out.println("###### SQL:" + sqlcount + ";");
108
            System.out.println("###### EXP:" + expectedSQLs.get(1) + ";");
109
            assertEquals("Count SQL", expectedSQLs.get(1), sqlcount);
110
            TestArena2Utils.runSQLToCheckSyntax(utils(), "testOrderByExtraValue", sqlcount);
111

    
112
            ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
113
                    table,
114
                    null,
115
                    null,
116
                    query,
117
                    eFeatureType,
118
                    eFeatureType,
119
                    15,
120
                    0,
121
                    0
122
            );
123
            String sql = resultSetForSetProvider.getSQL();
124
            System.out.println("###### testOrderByExtraValue(0)");
125
            System.out.println("###### SQL:" + sql + ";");
126
            System.out.println("###### EXP:" + expectedSQLs.get(0) + ";");
127

    
128
            assertEquals("Select SQL", expectedSQLs.get(0), sql);
129
            TestArena2Utils.runSQLToCheckSyntax(utils(), "testOrderByExtraValue", sqlcount);
130
            
131
            
132
        } catch (Throwable th) {
133
            th.printStackTrace();
134
            throw th;
135
        }
136
    }
137
}