Revision 44361

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultExpressionBuilder.java
51 51
    private static final String FORMAT_ST_SIMPLIFY = "ST_Simplify(({0}), ({1}))";
52 52

  
53 53
    private static final String FORMAT_ISNULL = "( ({0}) IS NULL )";
54
    private static final String FORMAT_NOTISNULL = "( ({0}) NOT IS NULL )";
54
    private static final String FORMAT_NOTISNULL = "( ({0}) IS NOT NULL )";
55 55
    private static final String FORMAT_OPERATOR_NOT = "( NOT ({0}) )";
56 56

  
57 57
    private static final String FORMAT_OPERATOR_AND = "({0} AND {1})";
......
1189 1189

  
1190 1190
    @Override
1191 1191
    public Function not_is_null(Value value) {
1192
        return builtin_function("NOT IS NULL", FORMAT_NOTISNULL, value);
1192
        return builtin_function("IS NOT NULL", FORMAT_NOTISNULL, value);
1193 1193
    }
1194 1194

  
1195 1195
    @Override
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultCompiler.java
3 3
import java.util.HashMap;
4 4
import java.util.Map;
5 5
import org.apache.commons.lang3.StringUtils;
6
import org.apache.commons.lang3.math.NumberUtils;
7 6
import org.gvsig.expressionevaluator.Compiler;
8 7
import org.gvsig.expressionevaluator.LexicalAnalyzer;
9 8
import org.gvsig.expressionevaluator.LexicalAnalyzer.Token;
10 9
import org.gvsig.expressionevaluator.Code;
11
import org.gvsig.expressionevaluator.Code.Constant;
12 10
import org.gvsig.expressionevaluator.CodeBuilder;
13 11
import org.gvsig.expressionevaluator.Codes;
14
import org.gvsig.expressionevaluator.ExpressionBuilder;
15 12
import org.gvsig.expressionevaluator.ExpressionSyntaxException;
16 13
import org.gvsig.expressionevaluator.GrammarSet;
17 14
import org.gvsig.expressionevaluator.Statement;
......
277 274
            case Token.PRED_IS: {
278 275
                    lexer.next();
279 276
                    Token next = lexer.look();
280
                    if( next.getType() == Token.NOTNULL ) {
281
                        op1 = codeBuilder.is(op1, codeBuilder.constant(null));
282
                        op1 = codeBuilder.not(op1);
283
                    } else {
284
                        op2 = parse_sum();
285
                        if( op2==null ) {
286
                            throw new ExpressionSyntaxException(I18N.Cant_recognize_the_second_operand_of_IS_operator(),lexer);
287
                        }
288
                        op1 = codeBuilder.is(op1, op2);
277
                    switch(next.getType()) {
278
                        case Token.NOTNULL:
279
                            lexer.next();
280
                            op1 = codeBuilder.is(op1, codeBuilder.constant(null));
281
                            op1 = codeBuilder.not(op1);
282
                            break;
283
                        case Token.OP_NOT:
284
                            lexer.next();
285
                            next = lexer.look();
286
                            if( next.getType() == Token.NULL ) {
287
                                lexer.next();
288
                                op1 = codeBuilder.is(op1, codeBuilder.constant(null));
289
                            } else {
290
                                op2 = parse_sum();
291
                                if( op2==null ) {
292
                                    throw new ExpressionSyntaxException(I18N.Cant_recognize_the_second_operand_of_IS_operator(),lexer);
293
                                }
294
                                op1 = codeBuilder.is(op1, op2);
295
                            }
296
                            op1 = codeBuilder.not(op1);
297
                            break;
298
                        case Token.NULL:
299
                            lexer.next();
300
                            op1 = codeBuilder.is(op1, codeBuilder.constant(null));
301
                            break;
302
                        default:    
303
                            op2 = parse_sum();
304
                            if( op2==null ) {
305
                                throw new ExpressionSyntaxException(I18N.Cant_recognize_the_second_operand_of_IS_operator(),lexer);
306
                            }
307
                            op1 = codeBuilder.is(op1, op2);
289 308
                    }
290 309
                }
291 310
                break;
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/legend/impl/AbstractVectorialLegend.java
41 41

  
42 42
import org.gvsig.compat.CompatLocator;
43 43
import org.gvsig.compat.print.PrintAttributes;
44
import org.gvsig.expressionevaluator.ExpressionBuilder;
45
import org.gvsig.expressionevaluator.ExpressionUtils;
44 46
import org.gvsig.fmap.dal.exception.DataException;
45 47
import org.gvsig.fmap.dal.feature.Feature;
46 48
import org.gvsig.fmap.dal.feature.FeatureQuery;
......
48 50
import org.gvsig.fmap.dal.feature.FeatureSelection;
49 51
import org.gvsig.fmap.dal.feature.FeatureSet;
50 52
import org.gvsig.fmap.dal.feature.FeatureStore;
53
import org.gvsig.fmap.dal.feature.FeatureType;
51 54
import org.gvsig.fmap.dal.feature.exception.ConcurrentDataModificationException;
52 55
import org.gvsig.fmap.geom.Geometry;
53 56
import org.gvsig.fmap.geom.GeometryLocator;
......
508 511
                    featureStore
509 512
            );
510 513
            featureQuery.addFilter(iee);
514
        } else {
515
            FeatureType ft = featureStore.getDefaultFeatureType();
516
            ExpressionBuilder expbuilder = ExpressionUtils.createExpressionBuilder();
517
            featureQuery.addFilter(
518
                expbuilder.not_is_null(
519
                    expbuilder.column(
520
                            ft.getDefaultGeometryAttributeName()
521
                    )
522
                ).toString()
523
            );
511 524
        }
525
        
512 526
        if (queryParameters != null) {
513 527
            Iterator iterEntry = queryParameters.entrySet().iterator();
514 528
            Entry entry;
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/OperationsFactoryBase.java
19 19

  
20 20
public class OperationsFactoryBase implements OperationsFactory {
21 21

  
22
    protected class DefaultTableReference implements TableReference {
22
    public static class DefaultTableReference implements TableReference {
23 23

  
24 24
        private final String database;
25 25
        private final String schema;
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/CalculateEnvelopeOfColumnOperation.java
76 76
        ExpressionBuilder expbuilder = sqlbuilder.expression();
77 77
        
78 78
        sqlbuilder.select().column().value(
79
            expbuilder.ifnull(
80
                expbuilder.column(columnName), 
81
                expbuilder.constant(null), 
79
//            expbuilder.ifnull(
80
//                expbuilder.column(columnName), 
81
//                expbuilder.constant(null), 
82 82
                expbuilder.as_geometry(
83 83
                    expbuilder.ST_ExtentAggregate(
84 84
                            expbuilder.column(columnName)
85 85
                    )
86 86
                )
87
            )
87
//            )
88 88
        );
89
        sqlbuilder.select().group_by(expbuilder.column(columnName));
89
//        sqlbuilder.select().group_by(expbuilder.column(columnName));
90 90
        sqlbuilder.select().from().table()
91 91
                .database(this.table.getDatabase())
92 92
                .schema(this.table.getSchema())
......
121 121
                );
122 122
            }
123 123
        }
124
        sqlbuilder.select().where().and(        
125
            expbuilder.not_is_null(expbuilder.column(columnName))
126
        );
127
        
124 128
        sqlbuilder.setProperties(
125 129
                Variable.class, 
126 130
                PROP_TABLE, table
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/test/java/org/gvsig/fmap/dal/store/h2/H2SpatialSQLBuilderTest.java
2 2

  
3 3
import junit.framework.TestCase;
4 4
import org.apache.commons.lang3.ArrayUtils;
5
import org.apache.commons.lang3.StringUtils;
5 6
import org.cresques.cts.IProjection;
6 7
import org.gvsig.expressionevaluator.ExpressionBuilder;
7 8
import org.gvsig.fmap.crs.CRSFactory;
8 9
import org.gvsig.fmap.dal.SQLBuilder;
9 10
import org.gvsig.fmap.dal.SQLBuilder.Privilege;
10 11
import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase;
12
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference;
13
import static org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase.PROP_TABLE;
14
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.OperationsFactoryBase;
11 15
import org.gvsig.fmap.geom.DataTypes;
12 16
import org.gvsig.fmap.geom.Geometry;
13 17
import org.gvsig.fmap.geom.GeometryLocator;
......
36 40
        return new H2SpatialSQLBuilder(new H2SpatialHelper(null));
37 41
    }
38 42
    
43
    public void testCalulateEnvelopeOfColumn() throws Exception {
44
        
45
        TableReference table = new OperationsFactoryBase.DefaultTableReference("master","dbo","test1", null);
46
        String columnName = "the_geom";
47
        
48
        SQLBuilder sqlbuilder = createSQLBuilder();
49
        ExpressionBuilder expbuilder = sqlbuilder.expression();
50
        
51
        sqlbuilder.select().column().value(
52
            expbuilder.as_geometry(
53
                expbuilder.ST_ExtentAggregate(
54
                        expbuilder.column(columnName)
55
                )
56
            )
57
        );
58
        //sqlbuilder.select().group_by(expbuilder.column(columnName));
59
        sqlbuilder.select().from().table()
60
                .database(table.getDatabase())
61
                .schema(table.getSchema())
62
                .name(table.getTable());
63
        sqlbuilder.select().from().subquery(table.getSubquery());
64

  
65
        sqlbuilder.select().where().and(        
66
            expbuilder.not_is_null(expbuilder.column(columnName))
67
        );
68
        
69
        System.out.println("# Test:: testCalulateEnvelopeOfColumn");
70
        System.out.println("# SQL:: " + sqlbuilder.toString());
71
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
72
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
73
        assertEquals(
74
                "SELECT ST_AsBinary(ST_Extent(\"the_geom\")) FROM \"dbo\".\"test1\" WHERE ( (\"the_geom\") NOT IS NULL )",
75
                sqlbuilder.toString()
76
        );
77
        assertEquals(
78
                "[the_geom]",
79
                ArrayUtils.toString(sqlbuilder.variables_names())
80
        );
81
        assertEquals(
82
                "[]",
83
                ArrayUtils.toString(sqlbuilder.parameters_names())
84
        );
85
    }
39 86
 
40 87
    public void testCalulateEnvelope() throws Exception {
41 88
        GeometryManager geometryManager = GeometryLocator.getGeometryManager();
......
76 123
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
77 124
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
78 125
        assertEquals(
79
                "SELECT ST_AsBinary(ST_Extent(\"the_geom\")) AS \"envelope\" FROM \"test1\" WHERE (( ((ST_Envelope(\"the_geom\")) && (ST_GeomFromWKB((x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000'), (4326)))) AND ST_Intersects((ST_Envelope(\"the_geom\")),(ST_GeomFromWKB((x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000'), (4326))) )) AND x = 27)",
126
                "SELECT ST_AsBinary(ST_Extent(\"the_geom\")) AS \"envelope\" FROM \"dbo\".\"test1\" WHERE (( ((ST_Envelope(\"the_geom\")) && (ST_GeomFromWKB((x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000'), (4326)))) AND ST_Intersects((ST_Envelope(\"the_geom\")),(ST_GeomFromWKB((x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000'), (4326))) )) AND x = 27)",
80 127
                sqlbuilder.toString()
81 128
        );
82 129
        assertEquals(
......
109 156
        //# Parametros:: []
110 157

  
111 158
        assertEquals(
112
                "SELECT COUNT(*) FROM \"test1\" WHERE pp = 200",
159
                "SELECT COUNT(*) FROM \"dbo\".\"test1\" WHERE pp = 200",
113 160
                sqlbuilder.toString()
114 161
        );
115 162
        assertEquals(
......
168 215
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
169 216
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
170 217
        assertEquals(
171
                "CREATE TABLE \"test1\" (\"name\" VARCHAR(45) DEFAULT NULL, \"id\" INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, \"geom\" GEOMETRY ); ALTER TABLE \"test1\" ADD CONSTRAINT IF NOT EXISTS \"constraint_test1_geom_dim\" CHECK ST_CoordDim(\"geom\") = 2",
218
                "CREATE TABLE \"dbo\".\"test1\" (\"name\" VARCHAR(45) DEFAULT NULL, \"id\" INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, \"geom\" GEOMETRY ); ALTER TABLE \"dbo\".\"test1\" ADD CONSTRAINT IF NOT EXISTS \"constraint_test1_geom_dim\" CHECK NVL2(\"geom\", ST_CoordDim(\"geom\") = 2, TRUE)",
172 219
                sqlbuilder.toString()
173 220
        );
174 221
        assertEquals(
......
194 241
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
195 242
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
196 243
        assertEquals(
197
                "DROP TABLE \"test1\"",
244
                "DROP TABLE \"dbo\".\"test1\"",
198 245
                sqlbuilder.toString()
199 246
        );
200 247
        assertEquals(
......
263 310
        //# Parametros:: []        
264 311
        
265 312
        assertEquals(
266
                "SELECT * FROM \"test1\" LIMIT 1",
313
                "SELECT * FROM \"dbo\".\"test1\" LIMIT 1",
267 314
                sqlbuilder.toString()
268 315
        );
269 316
        assertEquals(
......
301 348
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
302 349
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
303 350
        assertEquals(
304
                "DELETE FROM \"test1\" WHERE (( (\"id1\") = (?) ) AND ( (\"id2\") = (?) ))",
351
                "DELETE FROM \"dbo\".\"test1\" WHERE (( (\"id1\") = (?) ) AND ( (\"id2\") = (?) ))",
305 352
                sqlbuilder.toString()
306 353
        );
307 354
        assertEquals(
......
330 377
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
331 378
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
332 379
        assertEquals(
333
                "INSERT INTO \"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromWKB((?), (4326)) )",
380
                "INSERT INTO \"dbo\".\"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromWKB((?), (4326)) )",
334 381
                sqlbuilder.toString()
335 382
        );
336 383
        assertEquals(
......
359 406
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
360 407
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
361 408
        assertEquals(
362
                "INSERT INTO \"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromWKB((?), (4326)) )",
409
                "INSERT INTO \"dbo\".\"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromWKB((?), (4326)) )",
363 410
                sqlbuilder.toString()
364 411
        );
365 412
        assertEquals(
......
395 442
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
396 443
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
397 444
        assertEquals(
398
                "UPDATE \"test1\" SET \"name\" = ?, \"geom\" = ST_GeomFromWKB((?), (4326)) WHERE ( (\"id\") = (?) )",
445
                "UPDATE \"dbo\".\"test1\" SET \"name\" = ?, \"geom\" = ST_GeomFromWKB((?), (4326)) WHERE ( (\"id\") = (?) )",
399 446
                sqlbuilder.toString()
400 447
        );
401 448
        assertEquals(
......
432 479
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
433 480
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
434 481
        assertEquals(
435
                "UPDATE \"test1\" SET \"name\" = ?, \"geom\" = ST_GeomFromWKB((?), (?)) WHERE ( (\"id\") = (?) )",
482
                "UPDATE \"dbo\".\"test1\" SET \"name\" = ?, \"geom\" = ST_GeomFromWKB((?), (?)) WHERE ( (\"id\") = (?) )",
436 483
                sqlbuilder.toString()
437 484
        );
438 485
        assertEquals(
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/main/resources/org/gvsig/fmap/dal/store/h2/H2SpatialParameters.xml
11 11
          defaultValue="org.h2.Driver" group="Advanced">
12 12
          <description>JDBC Driver class</description>
13 13
        </field>
14
		<field name="port" type="integer" mandatory="false"
15
          defaultValue="9123" group="Connection">
14
		<field name="port" type="integer" mandatory="false" defaultValue="9123" group="Connection">
16 15
          <description></description>
17 16
        </field>
18 17
        <field name="database_file" label="Database file" type="file" mandatory="true" defaultValue="" group="Basic">        
......
25 24
        <field name="dbuser" type="string" mandatory="false" group="Basic" defaultValue="SA" >
26 25
          <description></description>
27 26
        </field>
27
        <!--
28
        <field name="LOCK_TIMEOUT" type="integer" mandatory="false" group="Advanced" defaultValue="1000" >
29
          <description>Sets the lock timeout (in milliseconds) for the current session. The default value for this setting is 1000 (one second).</description>
30
        </field>
31
        <field name="MULTI_THREADED" type="integer" mandatory="false" group="Advanced" defaultValue="1000" >
32
          <description>Enabled (1) or disabled (0) multi-threading inside the database engine. MULTI_THREADED is enabled by default with default MVStore storage engine. MULTI_THREADED is disabled by default when using PageStore storage engine, enabling this with PageStore is experimental only.
33
This is a global setting, which means it is not possible to open multiple databases with different modes at the same time in the same virtual machine. This setting is not persistent, however the value is kept until the virtual machine exits or it is changed.
34
Admin rights are required to execute this command, as it affects all connections</description>
35
        </field>
36
        <field name="CHACHE_SIZE" type="integer" mandatory="false" group="Advanced" defaultValue="-1" >
37
          <description>Sets the size of the cache in KB (each KB being 1024 bytes) for the current database. The default is 65536 per available GB of RAM, i.e. 64 MB per GB. The value is rounded to the next higher power of two. Depending on the virtual machine, the actual memory required may be higher.
38
This setting is persistent and affects all connections as there is only one cache per database. Using a very small value (specially 0) will reduce performance a lot. This setting only affects the database engine (the server in a client/server environment; in embedded mode, the database engine is in the same process as the application). It has no effect for in-memory databases.
39
Admin rights are required to execute this command, as it affects all connections. This command commits an open transaction in this connection. This setting is persistent.?
40
If -1 use the default value.</description>
41
        </field>
42
        <field name="LOG" type="integer" mandatory="false" group="Advanced" defaultValue="2" >
43
          <availableValues>
44
            <value label="0 - Transaction log is disabled completely">0</value>
45
            <value label="1 - Transaction log is enabled, but FileDescriptor.sync is disabled">1</value>
46
            <value label="2 - Transaction log is enabled, and FileDescriptor.sync is called for each checkpoint">2</value>
47
          </availableValues>
48
          <description>Sets the transaction log mode. The values 0, 1, and 2 are supported, the default is 2. This setting affects all connections.
49
LOG 0 means the transaction log is disabled completely. It is the fastest mode, but also the most dangerous: if the process is killed while the database is open in this mode, the data might be lost. It must only be used if this is not a problem, for example when initially loading a database, or when running tests.
50
LOG 1 means the transaction log is enabled, but FileDescriptor.sync is disabled. This setting is about half as fast as with LOG 0. This setting is useful if no protection against power failure is required, but the data must be protected against killing the process.
51
LOG 2 (the default) means the transaction log is enabled, and FileDescriptor.sync is called for each checkpoint. This setting is about half as fast as LOG 1. Depending on the file system, this will also protect against power failure in the majority if cases.
52
Admin rights are required to execute this command, as it affects all connections</description>
53
        <field name="LOCK_MODE" type="integer" mandatory="false" group="Advanced" defaultValue="3" >
54
          <availableValues>
55
            <value label="0 - READ_UNCOMMITTED, no locking">0</value>
56
            <value label="1 - SERIALIZABLE, table level locking">1</value>
57
            <value label="2 - Table level locking with garbage collection">2</value>
58
            <value label="3 - READ_COMMITTED, table level locking+read locks released immediately">3</value>
59
          </availableValues>
60
          <description>Sets the lock mode. The values 0, 1, 2, and 3 are supported. The default is 3 (READ_COMMITTED). This setting affects all connections.
61
The value 0 means no locking (should only be used for testing; also known as READ_UNCOMMITTED). Please note that using SET LOCK_MODE 0 while at the same time using multiple connections may result in inconsistent transactions.
62
The value 1 means table level locking (also known as SERIALIZABLE).
63
The value 2 means table level locking with garbage collection (if the application does not close all connections).
64
The value 3 means table level locking, but read locks are released immediately (default; also known as READ_COMMITTED).
65
</description>
66
        </field>
67
        -->
28 68
      </fields>
29 69
    </class>
30 70

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/main/java/org/gvsig/fmap/dal/store/h2/H2SpatialHelper.java
61 61
        if( dbfilename!=null && dbfilename.endsWith(".mv.db") ) {
62 62
            dbfilename = dbfilename.substring(0, dbfilename.length()-6);
63 63
        }
64
        StringBuilder commonParameters = new StringBuilder();
65
        commonParameters.append(";MODE=PostgreSQL");
66
        commonParameters.append(";SCHEMA=PUBLIC");
67
        commonParameters.append(";ALLOW_LITERALS=ALL");
68
        
69
//        Integer LOCK_TIMEOUT = (Integer) params.getDynValue("LOCK_TIMEOUT");
70
//        if( LOCK_TIMEOUT!=null ) {
71
//            commonParameters.append(";LOCK_TIMEOUT=").append(LOCK_TIMEOUT);
72
//        }
73
//        Integer MULTI_THREADED = (Integer) params.getDynValue("MULTI_THREADED");
74
//        if( MULTI_THREADED!=null ) {
75
//            commonParameters.append(";MULTI_THREADED=").append(MULTI_THREADED);
76
//        }
77
//        Integer CHACHE_SIZE = (Integer) params.getDynValue("CHACHE_SIZE");
78
//        if( LOCK_TIMEOUT!=null ) {
79
//            commonParameters.append(";CHACHE_SIZE=").append(CHACHE_SIZE);
80
//        }
81
//        Integer LOG = (Integer) params.getDynValue("LOG");
82
//        if( LOCK_TIMEOUT!=null ) {
83
//            commonParameters.append(";LOG=").append(LOG);
84
//        }
85
//        Integer LOCK_MODE = (Integer) params.getDynValue("LOCK_MODE");
86
//        if( LOCK_TIMEOUT!=null ) {
87
//            commonParameters.append(";LOCK_MODE=").append(LOCK_MODE);
88
//        }
89
        
64 90
        if( StringUtils.isEmpty(params.getHost()) ) {
65 91
            // Asumimos que es una conexion directa sobre el filesystem
66 92
            if( StringUtils.equalsIgnoreCase(FilenameUtils.getExtension(params.getFile().getName()),"zip") ) {
67 93
                connectionURL =  MessageFormat.format(
68
                    "jdbc:h2:zip:{0}!/{1};MODE=PostgreSQL",
94
                    "jdbc:h2:zip:{0}!/{1}"+commonParameters.toString(),
69 95
                    dbfilename,
70 96
                    params.getDBName()
71 97
                );
72 98
            } else {
73 99
                connectionURL =  MessageFormat.format(
74
                    "jdbc:h2:file:{0};MODE=PostgreSQL",
100
                    "jdbc:h2:file:{0}"+commonParameters.toString(),
75 101
                    dbfilename
76 102
                );
77 103
            }
78 104
        } else if( params.getPort() == null ) {
79 105
            connectionURL =  MessageFormat.format(
80
                "jdbc:h2:tcp://{0}/{1};MODE=PostgreSQL",
106
                "jdbc:h2:tcp://{0}/{1}"+commonParameters.toString(),
81 107
                params.getHost(),
82 108
                dbfilename
83 109
            );            
84 110
        } else {
85 111
            connectionURL =  MessageFormat.format(                
86
                "jdbc:h2:tcp://{0}:{1,number,#######}/{2};MODE=PostgreSQL",
112
                "jdbc:h2:tcp://{0}:{1,number,#######}/{2}"+commonParameters.toString(),
87 113
                params.getHost(),
88 114
                params.getPort().intValue(),
89 115
                dbfilename
......
165 191
            try {
166 192
                conn.createStatement().execute("CREATE SCHEMA IF NOT EXISTS PUBLIC;SET SCHEMA PUBLIC");
167 193
            } catch(SQLException ex) {
168
                //do nothing
194
                // Ignore this error.
169 195
            }
196

  
170 197
            return conn;
171 198
        }
172 199

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/main/java/org/gvsig/fmap/dal/store/h2/expressionbuilderformatter/ST_AsBinary.java
35 35
    public String format(Value function) {
36 36
        List<Value> parameters = ((Function) function).parameters();
37 37
        String p1 = parameters.get(0).toString(formatter);
38
        String r = MessageFormat.format("NVL2({0},ST_AsBinary({0}),NULL)", p1);
38
        String r = MessageFormat.format("ST_AsBinary({0})", p1);
39
//        String r = MessageFormat.format("NVL2({0},ST_AsBinary({0}),NULL)", p1);
39 40
        return r;
40 41
    }
41 42
    
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/main/java/org/gvsig/fmap/dal/store/h2/H2SpatialSQLBuilder.java
190 190
                    String sql;
191 191
                    String constraint_name = "constraint_" + this.table().getName() + "_" + column.getName()+"_dim";
192 192
                    sql = MessageFormat.format(
193
                        "ALTER TABLE \"{0}\" ADD CONSTRAINT IF NOT EXISTS \"{1}\" CHECK ST_CoordDim(\"{2}\") = {3}",
193
                        "ALTER TABLE \"{0}\".\"{1}\" ADD CONSTRAINT IF NOT EXISTS \"{2}\" CHECK ST_CoordDim(\"{3}\") = {4}",
194
                        this.table().getSchema(),
194 195
                        this.table().getName(),
195 196
                        constraint_name,
196 197
                        column.getName(),
......
232 233
                    String sql;
233 234
                    String constraint_name = "constraint_" + this.table().getName() + "_" + column.getName()+"_dim";
234 235
                    sql = MessageFormat.format(
235
                        "ALTER TABLE \"{0}\" ADD CONSTRAINT IF NOT EXISTS \"{1}\" CHECK ST_CoordDim(\"{2}\") = {3}",
236
                        "ALTER TABLE \"{0}\".\"{1}\" ADD CONSTRAINT IF NOT EXISTS \"{2}\" CHECK ST_CoordDim(\"{3}\") = {4}",
237
                        this.table().getSchema(),
236 238
                        this.table().getName(),
237 239
                        constraint_name,
238 240
                        column.getName(),
......
325 327
                    String sql;
326 328
                    String constraint_name = "constraint_" + this.table().getName() + "_" + column.getName()+"_dim";
327 329
                    sql = MessageFormat.format(
328
                        "ALTER TABLE \"{0}\" ADD CONSTRAINT IF NOT EXISTS \"{1}\" CHECK NVL2(\"{2}\", ST_CoordDim(\"{2}\") = {3}, TRUE)",
330
                        "ALTER TABLE \"{0}\".\"{1}\" ADD CONSTRAINT IF NOT EXISTS \"{2}\" CHECK NVL2(\"{3}\", ST_CoordDim(\"{3}\") = {4}, TRUE)",
331
                        this.table().getSchema(),
329 332
                        this.table().getName(),
330 333
                        constraint_name,
331 334
                        column.getName(),
......
335 338
                        String sql2;
336 339
                        String constraint_name2 = "constraint_" + this.table().getName() + "_" + column.getName()+"_srid";
337 340
                        sql2 = MessageFormat.format(
338
                            "ALTER TABLE \"{0}\" ADD CONSTRAINT IF NOT EXISTS \"{1}\" CHECK NVL2(\"{2}\", ST_SRID(\"{2}\") = {3,number,#####}, TRUE)",
339
                            this.table().getName(), // 0
340
                            constraint_name2, // 1
341
                            column.getName(), // 2
342
                            column.getGeometrySRSId() // 3
341
                            "ALTER TABLE \"{0}\".\"{1}\" ADD CONSTRAINT IF NOT EXISTS \"{2}\" CHECK NVL2(\"{3}\", ST_SRID(\"{3}\") = {4,number,#####}, TRUE)",
342
                            this.table().getSchema(), // 0
343
                            this.table().getName(), // 1
344
                            constraint_name2, // 2
345
                            column.getName(), // 3
346
                            column.getGeometrySRSId() // 4
343 347
                        );
344 348
                        sqls.add(sql2);
345 349
                    }
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/layers/vectorial/IntersectsGeometryEvaluator.java
99 99

  
100 100
    @Override
101 101
    public String getSQL() {
102
        ExpressionBuilder.Variable column = builder.column(fad.getName());
102 103
        return builder.set(
103
                builder.ST_Intersects(
104
                        builder.column(this.fad.getName()),
105
                        builder.geometry(geometry, this.projection)
104
                builder.and(
105
                    builder.not_is_null(column),
106
                    builder.ST_Intersects(
107
                            column,
108
                            builder.geometry(geometry, this.projection)
109
                    )
106 110
                )
107 111
        ).toString();
108 112
    }
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/layers/vectorial/IntersectsEnvelopeEvaluator.java
88 88

  
89 89
    @Override
90 90
    public String getSQL() {
91
        ExpressionBuilder.Variable column = builder.column(fad.getName());
91 92
        return builder.set(
92
                builder.ST_Intersects(
93
                        builder.ST_Envelope(builder.column(fad.getName())),
94
                        builder.geometry(envelope.getGeometry(), this.projection)
93
                builder.and(
94
                    builder.not_is_null(column)    ,
95
                    builder.ST_Intersects(
96
                            builder.ST_Envelope(column),
97
                            builder.geometry(envelope.getGeometry(), this.projection)
98
                    )
95 99
                )
96 100
        ).toString();
97 101
    }

Also available in: Unified diff