Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.sqlite / org.gvsig.sqlite.provider / src / main / java / org / gvsig / sqlite / dal / expressionbuilderformatter / Decode.java @ 47456

History | View | Annotate | Download (2.16 KB)

1
package org.gvsig.sqlite.dal.expressionbuilderformatter;
2

    
3
import java.util.List;
4
import org.apache.commons.lang3.StringUtils;
5
import org.gvsig.expressionevaluator.ExpressionBuilder;
6
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_DECODE;
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
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.$Constant;
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( $Constant.isConstant(p1) && p2 instanceof ExpressionBuilder.Constant &&
36
                        ((ExpressionBuilder.Constant)p2).value() instanceof String 
37
                        ) {
38
                        String p2value = ((ExpressionBuilder.Constant)p2).value().toString();
39
                        if( StringUtils.equalsIgnoreCase(p2value, "hex") ) {
40
                            return true;
41
                        }
42
                    }
43
                    
44
                }
45
            }
46
        }
47
        return false;
48
    }
49

    
50
    @Override
51
    public String format(Value function) {
52
        List<Value> parameters = ((Function) function).parameters();
53
        Value p1 = parameters.get(0);
54
        String p1value = $Constant.resolve(this.sqlbuilder, this.formatter, p1);
55
        String r = "(X"+p1value+")";
56
        return r;
57
    }
58
    
59
}