Revision 44353

View differences:

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
325 325
                    String sql;
326 326
                    String constraint_name = "constraint_" + this.table().getName() + "_" + column.getName()+"_dim";
327 327
                    sql = MessageFormat.format(
328
                        "ALTER TABLE \"{0}\" ADD CONSTRAINT IF NOT EXISTS \"{1}\" CHECK ST_CoordDim(\"{2}\") = {3}",
328
                        "ALTER TABLE \"{0}\" ADD CONSTRAINT IF NOT EXISTS \"{1}\" CHECK NVL2(\"{2}\", ST_CoordDim(\"{2}\") = {3}, TRUE)",
329 329
                        this.table().getName(),
330 330
                        constraint_name,
331 331
                        column.getName(),
......
335 335
                        String sql2;
336 336
                        String constraint_name2 = "constraint_" + this.table().getName() + "_" + column.getName()+"_srid";
337 337
                        sql2 = MessageFormat.format(
338
                            "ALTER TABLE \"{0}\" ADD CONSTRAINT IF NOT EXISTS \"{1}\" CHECK ST_SRID(\"{2}\") = {3,number,#####}",
339
                            this.table().getName(),
340
                            constraint_name2,
341
                            column.getName(),
342
                            column.getGeometrySRSId()
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
343 343
                        );
344 344
                        sqls.add(sql2);
345 345
                    }
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
1
package org.gvsig.fmap.dal.store.h2.expressionbuilderformatter;
2

  
3
import java.text.MessageFormat;
4
import java.util.List;
5
import org.apache.commons.lang3.StringUtils;
6
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_ST_ASBINARY;
7
import org.gvsig.expressionevaluator.ExpressionBuilder.Function;
8
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
9
import org.gvsig.expressionevaluator.Formatter;
10
import org.gvsig.fmap.dal.SQLBuilder;
11

  
12
/**
13
 *
14
 * @author jjdelcerro
15
 */
16
class ST_AsBinary implements Formatter<Value> {
17

  
18
    private final Formatter<Value> formatter;
19
    private final SQLBuilder builder;
20
    
21
    public ST_AsBinary(SQLBuilder builder, Formatter<Value> formatter) {
22
        this.builder = builder;
23
        this.formatter = formatter;
24
    }
25
    
26
    @Override
27
    public boolean canApply(Value value) {
28
        if (value instanceof Function) {
29
            return StringUtils.equalsIgnoreCase(FUNCTION_ST_ASBINARY, ((Function) value).name());
30
        }
31
        return false;
32
    }
33

  
34
    @Override
35
    public String format(Value function) {
36
        List<Value> parameters = ((Function) function).parameters();
37
        String p1 = parameters.get(0).toString(formatter);
38
        String r = MessageFormat.format("NVL2({0},ST_AsBinary({0}),NULL)", p1);
39
        return r;
40
    }
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/expressionbuilderformatter/H2SpatialFormatter.java
27 27
            new ST_ExtentAggregate(this.builder, this),
28 28
            new Decode(this.builder, this),
29 29
            new ILike(this.builder, this),
30
            new Constant(this.builder, this)
30
            new Constant(this.builder, this),
31
            new ST_AsBinary(this.builder, this)
31 32
        };
32 33
    }
33 34

  

Also available in: Unified diff