Statistics
| Revision:

svn-gvsig-desktop / 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 @ 44748

History | View | Annotate | Download (2.34 KB)

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.apache.commons.lang3.tuple.Pair;
7
import org.gvsig.expressionevaluator.ExpressionBuilder;
8
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_DECODE;
9
import org.gvsig.expressionevaluator.ExpressionBuilder.Function;
10
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
11
import org.gvsig.expressionevaluator.Formatter;
12
import org.gvsig.fmap.dal.SQLBuilder;
13

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

    
53
    @Override
54
    public String format(Value function) {
55
        List<Pair<String,Value>> parameters = ((Function) function).parameters();
56
        Value p1 = parameters.get(0).getValue();
57
        String p1value = Objects.toString(((ExpressionBuilder.Constant)p1).value(), "");
58
        String r = "X'"+p1value+"'";
59
        return r;
60
    }
61
    
62
}