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
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