Revision 47320 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
DefaultExpressionBuilder.java | ||
---|---|---|
15 | 15 |
import org.apache.commons.lang3.StringUtils; |
16 | 16 |
import org.gvsig.expressionevaluator.Code; |
17 | 17 |
import org.gvsig.expressionevaluator.Expression; |
18 |
|
|
19 | 18 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
20 | 19 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.PARAMETER_TYPE_CONSTANT; |
21 | 20 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.PARAMETER_TYPE_VARIABLE; |
... | ... | |
26 | 25 |
import org.gvsig.expressionevaluator.ReprMethod; |
27 | 26 |
import org.gvsig.tools.ToolsLocator; |
28 | 27 |
import org.gvsig.tools.dataTypes.Coercion; |
28 |
import org.gvsig.tools.dataTypes.DataTypes; |
|
29 | 29 |
import org.gvsig.tools.dataTypes.DataTypesManager; |
30 | 30 |
import org.gvsig.tools.util.PropertiesSupportHelper; |
31 | 31 |
|
... | ... | |
579 | 579 |
} |
580 | 580 |
} |
581 | 581 |
} |
582 |
|
|
583 |
public class CastBase extends FunctionBase { |
|
582 | 584 |
|
585 |
public CastBase() { |
|
586 |
super(FUNCTION_CAST); |
|
587 |
} |
|
588 |
|
|
589 |
@Override |
|
590 |
public String toString(Formatter<Value> formatter) { |
|
591 |
if( formatter!=null && formatter.canApply(this) ) { |
|
592 |
return formatter.format(this); |
|
593 |
} |
|
594 |
StringBuilder builder = new StringBuilder(); |
|
595 |
builder.append(name); |
|
596 |
builder.append("("); |
|
597 |
builder.append(this.parameters.get(0).toString(formatter)); |
|
598 |
|
|
599 |
builder.append(" AS "); |
|
600 |
builder.append(((ExpressionBuilder.Constant)this.parameters.get(1)).value().toString()); |
|
601 |
builder.append(")"); |
|
602 |
|
|
603 |
return builder.toString(); |
|
604 |
} |
|
605 |
|
|
606 |
} |
|
607 |
|
|
583 | 608 |
public class MethodBase extends FunctionBase implements Method { |
584 | 609 |
|
585 | 610 |
private Value instance; |
... | ... | |
1465 | 1490 |
|
1466 | 1491 |
@Override |
1467 | 1492 |
public Function cast(Value object, Value typeName) { |
1468 |
return function(FUNCTION_CAST, object, typeName); |
|
1493 |
FunctionBase func = new CastBase(); |
|
1494 |
func.parameter(object); |
|
1495 |
func.parameter(typeName); |
|
1496 |
return func; |
|
1469 | 1497 |
} |
1498 |
|
|
1499 |
@Override |
|
1500 |
public Function cast(Value object, int type) { |
|
1501 |
String typeName; |
|
1502 |
switch(type) { |
|
1503 |
case DataTypes.BOOLEAN: |
|
1504 |
case DataTypes.BYTE: |
|
1505 |
case DataTypes.CHAR: |
|
1506 |
case DataTypes.DATE: |
|
1507 |
case DataTypes.DECIMAL: |
|
1508 |
case DataTypes.DOUBLE: |
|
1509 |
case DataTypes.FLOAT: |
|
1510 |
case DataTypes.INT: |
|
1511 |
case DataTypes.LONG: |
|
1512 |
case DataTypes.STRING: |
|
1513 |
case DataTypes.TIME: |
|
1514 |
case DataTypes.TIMESTAMP: |
|
1515 |
break; |
|
1516 |
default: |
|
1517 |
throw new IllegalArgumentException("Type "+type+" not valid"); |
|
1518 |
} |
|
1519 |
|
|
1520 |
DataTypesManager dataTypesManager = ToolsLocator.getDataTypesManager(); |
|
1521 |
typeName = dataTypesManager.getTypeName(type); |
|
1522 |
return cast(object, this.constant(typeName)); |
|
1523 |
} |
|
1470 | 1524 |
|
1471 | 1525 |
@Override |
1472 | 1526 |
public Function decode(Value value, Value format) { |
Also available in: Unified diff