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

View differences:

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