Revision 44644 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/DefaultCodeBuilder.java

View differences:

DefaultCodeBuilder.java
4 4
import java.util.Collections;
5 5
import java.util.Iterator;
6 6
import java.util.List;
7
import org.apache.commons.lang3.ObjectUtils;
8 7
import org.apache.commons.lang3.StringUtils;
9 8
import org.gvsig.expressionevaluator.Code;
10 9
import static org.gvsig.expressionevaluator.Code.CALLER;
......
42 41
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_REGEXP;
43 42
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_SUBST;
44 43
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
44
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
45 45
import org.gvsig.expressionevaluator.ExpressionUtils;
46 46
import org.gvsig.expressionevaluator.Formatter;
47 47
import org.gvsig.expressionevaluator.Function;
48 48
import org.gvsig.expressionevaluator.Interpreter;
49 49
import org.gvsig.expressionevaluator.SymbolTable;
50
import org.gvsig.expressionevaluator.impl.function.programming.CallMethodFunction;
51 50
import org.gvsig.expressionevaluator.impl.function.programming.GetattrFunction;
52 51
import org.gvsig.expressionevaluator.impl.function.programming.GetitemFunction;
53
import org.gvsig.fmap.geom.Geometry;
54 52
import org.gvsig.tools.dynobject.DynObject;
55 53
import org.gvsig.tools.dynobject.exception.DynMethodNotSupportedException;
56 54
import org.gvsig.tools.exception.BaseException;
57
import org.gvsig.tools.script.Script;
58 55
import org.gvsig.tools.visitor.Visitor;
59 56

  
60 57
@SuppressWarnings("UseSpecificCatch")
......
137 134
            if( formatter.canApply(this) ) {
138 135
                return formatter.format(this);
139 136
            }
140
            StringBuilder builder = new StringBuilder();
141 137
            Object v = this.value();
142
            if( v == null ) {
143
                builder.append("NULL");
144
            } else if( v instanceof CharSequence ) {
145
                if( StringUtils.isEmpty((CharSequence)v) ) {
146
                    builder.append("''");
147
                } else {
148
                    v = "'" + StringUtils.replace(v.toString(), "'", "''") + "'";
149
                    builder.append(v);
150
                }
151
                
152
            } else if( v instanceof Boolean ) {
153
                builder.append(((Boolean)v).toString().toUpperCase());
154
                
155
            } else if( v instanceof Geometry ) {
156
                try {
157
                    builder.append("'");
158
                    builder.append(((Geometry) v).convertToWKT());
159
                    builder.append("'::geometry");
160
                } catch (Exception ex) {
161
                    builder.append("'UNKNOW'::geometry");
162
                }
163
                
164
            } else {
165
                builder.append(v);
166
            }
167
            return builder.toString();
138
            return manager.getReprMethod(v).repr(v);
168 139
        }
169 140

  
170 141
    }
......
614 585
        
615 586
        
616 587
    }    
588

  
589
    protected ExpressionEvaluatorManager manager;
617 590
    
591
    public DefaultCodeBuilder(ExpressionEvaluatorManager manager) {
592
        this.manager = manager;
593
    }
594
    
618 595
    @Override
619 596
    public CodeBuilder clone() throws CloneNotSupportedException {
620 597
        // This implementation of CodeBuilder does not maintain state, so 

Also available in: Unified diff