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 / TestArena2GroupByForeignValue.java @ 47539

History | View | Annotate | Download (6.12 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 TestArena2GroupByForeignValue extends TestCase {
26

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

    
29
    public TestArena2GroupByForeignValue(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 testGroupByForeignValue() throws Exception {
58
        try {
59
            JDBCHelper helper = TestUtils.createJDBCHelper();
60
            OperationsFactory operations = helper.getOperations();
61

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

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

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

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

    
94
            query.getGroupByColumns().add("ano");
95
            query.getGroupByColumns().add("provincia");
96
            query.getGroupByColumns().add("lesividad");
97
            query.getAggregateFunctions().put("Acc", "SUM");
98
            query.getOrder().add("provincia");
99
            CountOperation count = operations.createCount(eFeatureType, table, null, query);
100
            String sqlcount = count.getSQL();
101

    
102
            System.out.println("###### testGroupByForeignValue(1): Count");
103
            System.out.println("###### SQL:" + sqlcount + ";");
104
            System.out.println("###### EXP:" + expectedSQLs.get(1) + ";");
105
            assertEquals("Count SQL", expectedSQLs.get(1), sqlcount);
106
            TestArena2Utils.runSQLToCheckSyntax(utils(), "testGroupByForeignValue", sqlcount);
107

    
108
            ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
109
                    table,
110
                    null,
111
                    null,
112
                    query,
113
                    eFeatureType,
114
                    eFeatureType,
115
                    0,
116
                    0,
117
                    0
118
            );
119
            String sql = resultSetForSetProvider.getSQL();
120
            System.out.println("###### testGroupByForeignValue(0)");
121
            System.out.println("###### SQL:" + sql + ";");
122
            System.out.println("###### EXP:" + expectedSQLs.get(0) + ";");
123

    
124
            assertEquals("Select SQL", expectedSQLs.get(0), sql);
125

    
126
            TestArena2Utils.runSQLToCheckSyntax(ws, "testGroupByForeignValue", sql);
127

    
128
        } catch (Throwable th) {
129
            th.printStackTrace();
130
            throw th;
131
        }
132
    }
133

    
134
}