Revision 44296

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
96 96
        
97 97
        @Override
98 98
        public String toString(Formatter<Value> formatter) {
99
            if( formatter.canApply(this) ) {
99
            if( formatter!=null && formatter.canApply(this) ) {
100 100
                return formatter.format(this);
101 101
            }
102 102
            return MessageFormat.format(FORMAT_GROUP, this.value.toString());
......
123 123
        
124 124
        @Override
125 125
        public String toString(Formatter<Value> formatter) {
126
            if( formatter.canApply(this) ) {
126
            if( formatter!=null && formatter.canApply(this) ) {
127 127
                return formatter.format(this);
128 128
            }
129 129
            return identifier(this.name);
......
328 328
        
329 329
        @Override
330 330
        public String toString(Formatter<Value> formatter) {
331
            if( formatter.canApply(this) ) {
331
            if( formatter!=null && formatter.canApply(this) ) {
332 332
                return formatter.format(this);
333 333
            }
334 334
            switch (this.type) {
......
420 420
        
421 421
        @Override
422 422
        public String toString(Formatter<Value> formatter) {
423
            if( formatter.canApply(this) ) {
423
            if( formatter!=null && formatter.canApply(this) ) {
424 424
                return formatter.format(this);
425 425
            }
426 426
            if( this.value==null ) {
......
522 522
        
523 523
        @Override
524 524
        public String toString(Formatter<Value> formatter) {
525
            if( formatter.canApply(this) ) {
525
            if( formatter!=null && formatter.canApply(this) ) {
526 526
                return formatter.format(this);
527 527
            }
528 528
            return Objects.toString(this.value, "");
......
578 578
        
579 579
        @Override
580 580
        public String toString(Formatter<Value> formatter) {
581
            if( formatter.canApply(this) ) {
581
            if( formatter!=null && formatter.canApply(this) ) {
582 582
                return formatter.format(this);
583 583
            }
584 584
            if( this.format==null ) {
......
634 634
        
635 635
        @Override
636 636
        public String toString(Formatter<Value> formatter) {
637
            if( formatter.canApply(this) ) {
637
            if( formatter!=null && formatter.canApply(this) ) {
638 638
                return formatter.format(this);
639 639
            }
640 640
            StringBuilder builder = new StringBuilder();
......
713 713
        
714 714
        @Override
715 715
        public String toString(Formatter<Value> formatter) {
716
            if( formatter.canApply(this) ) {
716
            if( formatter!=null && formatter.canApply(this) ) {
717 717
                return formatter.format(this);
718 718
            }
719 719
            if( this.format==null ) {
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/feature/spi/SQLBuilderBase.java
328 328
//
329 329
//        @Override
330 330
//        public String toString(Formatter<Value> formatter) {
331
//            if (formatter.canApply(this)) {
331
//            if (formatter!=null && formatter.canApply(this)) {
332 332
//                return formatter.format(this);
333 333
//            }
334 334
//            return as_identifier(this.name);
......
429 429

  
430 430
        @Override
431 431
        public String toString(Formatter<Value> formatter) {
432
            if (formatter.canApply(this)) {
432
            if (formatter!=null && formatter.canApply(this)) {
433 433
                return formatter.format(this);
434 434
            }
435 435
            if (this.has_database()) {
......
488 488

  
489 489
        @Override
490 490
        public String toString(Formatter formatter) {
491
            if (formatter.canApply(this)) {
491
            if (formatter!=null && formatter.canApply(this)) {
492 492
                return formatter.format(this);
493 493
            }
494 494
            if (this.all) {
......
553 553

  
554 554
        @Override
555 555
        public String toString(Formatter<Value> formatter) {
556
            if (formatter.canApply(this)) {
556
            if (formatter!=null && formatter.canApply(this)) {
557 557
                return formatter.format(this);
558 558
            }
559 559
            if (!StringUtils.isEmpty(passthrough)) {
......
651 651

  
652 652
        @Override
653 653
        public String toString(Formatter<Value> formatter) {
654
            if (formatter.canApply(this)) {
654
            if (formatter!=null && formatter.canApply(this)) {
655 655
                return formatter.format(this);
656 656
            }
657 657
            StringBuilder builder = new StringBuilder();
......
728 728

  
729 729
        @Override
730 730
        public String toString(Formatter<Value> formatter) {
731
            if (formatter.canApply(this)) {
731
            if (formatter!=null && formatter.canApply(this)) {
732 732
                return formatter.format(this);
733 733
            }
734 734
            if (!StringUtils.isEmpty(this.custom)) {
......
903 903

  
904 904
        @Override
905 905
        public String toString(Formatter<Value> formatter) {
906
            if (formatter.canApply(this)) {
906
            if (formatter!=null && formatter.canApply(this)) {
907 907
                return formatter.format(this);
908 908
            }
909 909
            StringBuilder builder = new StringBuilder();
......
988 988

  
989 989
        @Override
990 990
        public String toString(Formatter<Value> formatter) {
991
            if (formatter.canApply(this)) {
991
            if (formatter!=null && formatter.canApply(this)) {
992 992
                return formatter.format(this);
993 993
            }
994 994
            StringBuilder builder = new StringBuilder();
......
1141 1141

  
1142 1142
        @Override
1143 1143
        public String toString(Formatter<Value> formatter) {
1144
            if (formatter.canApply(this)) {
1144
            if (formatter!=null && formatter.canApply(this)) {
1145 1145
                return formatter.format(this);
1146 1146
            }
1147 1147
            StringBuilder builder = new StringBuilder();
......
1210 1210

  
1211 1211
        @Override
1212 1212
        public String toString(Formatter<Value> formatter) {
1213
            if (formatter.canApply(this)) {
1213
            if (formatter!=null && formatter.canApply(this)) {
1214 1214
                return formatter.format(this);
1215 1215
            }
1216 1216
            StringBuilder builder = new StringBuilder();
......
1327 1327

  
1328 1328
        @Override
1329 1329
        public String toString(Formatter<Value> formatter) {
1330
            if (formatter.canApply(this)) {
1330
            if (formatter!=null && formatter.canApply(this)) {
1331 1331
                return formatter.format(this);
1332 1332
            }
1333 1333
            /*
......
1420 1420

  
1421 1421
        @Override
1422 1422
        public String toString(Formatter<Value> formatter) {
1423
            if (formatter.canApply(this)) {
1423
            if (formatter!=null && formatter.canApply(this)) {
1424 1424
                return formatter.format(this);
1425 1425
            }
1426 1426
            /*
......
1514 1514

  
1515 1515
        @Override
1516 1516
        public String toString(Formatter<Value> formatter) {
1517
            if (formatter.canApply(this)) {
1517
            if (formatter!=null && formatter.canApply(this)) {
1518 1518
                return formatter.format(this);
1519 1519
            }
1520 1520
            StringBuilder builder = new StringBuilder();
......
1702 1702

  
1703 1703
        @Override
1704 1704
        public String toString(Formatter<Value> formatter) {
1705
            if (formatter.canApply(this)) {
1705
            if (formatter!=null && formatter.canApply(this)) {
1706 1706
                return formatter.format(this);
1707 1707
            }
1708 1708
            StringBuilder builder = new StringBuilder();
......
1766 1766
                    }
1767 1767
                } else {
1768 1768
                    builder.append(" DEFAULT '");
1769
                    builder.append(column.getDefaultValue().toString());
1769
                    builder.append(Objects.toString(column.getDefaultValue(),""));
1770 1770
                    builder.append("'");
1771 1771
                }
1772 1772
                if (column.allowNulls()) {
......
1912 1912

  
1913 1913
        @Override
1914 1914
        public String toString(Formatter<Value> formatter) {
1915
            if (formatter.canApply(this)) {
1915
            if (formatter!=null && formatter.canApply(this)) {
1916 1916
                return formatter.format(this);
1917 1917
            }
1918 1918
            StringBuilder builder = new StringBuilder();
......
1998 1998
                    }
1999 1999
                } else {
2000 2000
                    builder.append(" DEFAULT '");
2001
                    builder.append(column.getDefaultValue().toString());
2001
                    builder.append(Objects.toString(column.getDefaultValue(),""));
2002 2002
                    builder.append("'");
2003 2003
                }
2004 2004
                if (column.allowNulls()) {
......
2068 2068

  
2069 2069
        @Override
2070 2070
        public String toString(Formatter<Value> formatter) {
2071
            if (formatter.canApply(this)) {
2071
            if (formatter!=null && formatter.canApply(this)) {
2072 2072
                return formatter.format(this);
2073 2073
            }
2074 2074
            return this.value.toString(formatter);
......
2121 2121

  
2122 2122
        @Override
2123 2123
        public String toString(Formatter<Value> formatter) {
2124
            if (formatter.canApply(this)) {
2124
            if (formatter!=null && formatter.canApply(this)) {
2125 2125
                return formatter.format(this);
2126 2126
            }
2127 2127
            /*
......
2193 2193

  
2194 2194
        @Override
2195 2195
        public String toString(Formatter<Value> formatter) {
2196
            if (formatter.canApply(this)) {
2196
            if (formatter!=null && formatter.canApply(this)) {
2197 2197
                return formatter.format(this);
2198 2198
            }
2199 2199
            StringBuilder builder = new StringBuilder();
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
76 76
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
77 77
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
78 78
        assertEquals(
79
                "SELECT ST_AsBinary(ST_Extent(\"the_geom\")) AS \"envelope\" FROM \"test1\" WHERE (( ((ST_Envelope(\"the_geom\")) && (ST_GeomFromWKB((DECODE('000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000','hex')), (4326)))) AND ST_Intersects((ST_Envelope(\"the_geom\")),(ST_GeomFromWKB((DECODE('000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000','hex')), (4326))) )) AND x = 27)",
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)",
80 80
                sqlbuilder.toString()
81 81
        );
82 82
        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/java/org/gvsig/fmap/dal/store/h2/H2SpatialSQLBuilder.java
6 6
import java.util.ArrayList;
7 7
import java.util.Date;
8 8
import java.util.List;
9
import java.util.Objects;
9 10
import org.apache.commons.lang3.tuple.Pair;
10 11
import org.gvsig.expressionevaluator.ExpressionBuilder.Parameter;
11 12
import org.gvsig.expressionevaluator.Formatter;
......
177 178
                    }
178 179
                } else {
179 180
                    builder.append(" DEFAULT '");
180
                    builder.append(column.getDefaultValue().toString());
181
                    builder.append(Objects.toString(column.getDefaultValue(),""));
181 182
                    builder.append("'");
182 183
                }
183 184
                if (column.allowNulls()) {
......
312 313
                                builder.append("' )");
313 314
                            } else {
314 315
                                builder.append(" DEFAULT '");
315
                                builder.append(column.getDefaultValue().toString());
316
                                builder.append(Objects.toString(column.getDefaultValue(),""));
316 317
                                builder.append("'");
317 318
                            }
318 319
                        }
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/Decode.java
1
package org.gvsig.fmap.dal.store.h2.expressionbuilderformatter;
2

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

  
13
/**
14
 *
15
 * @author jjdelcerro
16
 */
17
public class Decode implements Formatter<Value> {
18
    
19
    private final SQLBuilder sqlbuilder;
20
    private final Formatter<Value> formatter;
21
    
22
    public Decode(SQLBuilder sqlbuilder, Formatter<Value> formatter) {
23
        this.sqlbuilder = sqlbuilder;
24
        this.formatter = formatter;
25
    }
26
    
27
    @Override
28
    public boolean canApply(ExpressionBuilder.Value value) {
29
        if (value instanceof ExpressionBuilder.Function) {
30
            if( StringUtils.equalsIgnoreCase(FUNCTION_DECODE, ((Function) value).name()) ) {
31
                List<Value> parameters = ((Function) value).parameters();
32
                if( parameters.size()==2) {
33
                    Value p1 = parameters.get(0);
34
                    Value p2 = parameters.get(1);
35
                    if( p1 instanceof ExpressionBuilder.Constant && 
36
                        p2 instanceof ExpressionBuilder.Constant &&
37
                        ((ExpressionBuilder.Constant)p1).value() instanceof String &&
38
                        ((ExpressionBuilder.Constant)p2).value() instanceof String 
39
                        ) {
40
                        String p2value = ((ExpressionBuilder.Constant)p2).value().toString();
41
                        if( StringUtils.equalsIgnoreCase(p2value, "hex") ) {
42
                            return true;
43
                        }
44
                    }
45
                    
46
                }
47
            }
48
        }
49
        return false;
50
    }
51

  
52
    @Override
53
    public String format(Value function) {
54
        List<Value> parameters = ((Function) function).parameters();
55
        Value p1 = parameters.get(0);
56
        String p1value = Objects.toString(((ExpressionBuilder.Constant)p1).value(), "");
57
        String r = "X'"+p1value+"'";
58
        return r;
59
    }
60
    
61
}
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/Constant.java
1
package org.gvsig.fmap.dal.store.h2.expressionbuilderformatter;
2

  
3
import java.text.MessageFormat;
4
import org.gvsig.expressionevaluator.ExpressionBuilder;
5
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
6
import org.gvsig.expressionevaluator.Formatter;
7
import org.gvsig.fmap.dal.SQLBuilder;
8
import org.gvsig.fmap.geom.Geometry;
9
import org.gvsig.fmap.geom.GeometryUtils;
10

  
11
/**
12
 *
13
 * @author jjdelcerro
14
 */
15
public class Constant implements Formatter<Value> {
16
    
17
    private static final String FORMAT_ST_GEOMFROMWKB = "ST_GeomFromWKB(({0}), ({1}))";
18
    private static final String FORMAT_ST_GEOMFROMEWKB = "ST_GeomFromEWKB(({0}), ({1}))";
19

  
20
    private final SQLBuilder sqlbuilder;
21
    private final Formatter<Value> formatter;
22
    
23
    public Constant(SQLBuilder sqlbuilder, Formatter<Value> formatter) {
24
        this.sqlbuilder = sqlbuilder;
25
        this.formatter = formatter;
26
    }
27
    
28
    @Override
29
    public boolean canApply(ExpressionBuilder.Value value) {
30
        if (value instanceof ExpressionBuilder.Constant) {
31
            Object x = ((ExpressionBuilder.Constant)value).value();
32
            if( x instanceof byte[] ) {
33
                return true;
34
            }
35
            if( x instanceof Geometry ) {
36
                return true;
37
            }
38
        }
39
        return false;
40
    }
41

  
42
    @Override
43
    public String format(Value constant) {
44
        Object x = ((ExpressionBuilder.Constant)constant).value();
45
        ExpressionBuilder builder = this.sqlbuilder.expression();
46
        if( x instanceof byte[] ) {
47
            return builder.bytearray_x((byte[]) x);
48
        }
49
        if( x instanceof Geometry ) {
50
            Geometry geometry = (Geometry) x;
51
            switch (builder.geometry_support_type()) {
52
                case EWKB:
53
                    return MessageFormat.format(
54
                            FORMAT_ST_GEOMFROMEWKB,
55
                            builder.bytearray_x(GeometryUtils.toEWKB(geometry)),
56
                            String.valueOf(builder.srs_id(geometry.getProjection()))
57
                    );
58
                case WKB:
59
                    return MessageFormat.format(
60
                            FORMAT_ST_GEOMFROMWKB,
61
                            builder.bytearray_x(GeometryUtils.toWKB(geometry)),
62
                            String.valueOf(builder.srs_id(geometry.getProjection()))
63
                    );
64
                case WKT:
65
                default:
66
                    return constant.toString(null);
67
            }
68
            
69
        }
70
        return null;
71
    }
72
    
73
}
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
24 24
            new ST_AsEWKB(this.builder, this),
25 25
            new ST_GeomFromEWKB(this.builder, this),
26 26
            new ST_Intersects(this.builder, this),
27
            new ST_ExtentAggregate(this.builder, this)
27
            new ST_ExtentAggregate(this.builder, this),
28
            new Decode(this.builder, this),
29
            new Constant(this.builder, this)
28 30
        };
29 31
    }
30 32

  

Also available in: Unified diff