Revision 47734 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/function/programming/IFFunction.java

View differences:

IFFunction.java
7 7
import org.gvsig.expressionevaluator.Formatter;
8 8
import org.gvsig.expressionevaluator.Function;
9 9
import org.gvsig.expressionevaluator.Interpreter;
10
import org.gvsig.expressionevaluator.PrettyFormatter;
10 11
import org.gvsig.expressionevaluator.spi.AbstractFunction;
11 12

  
12 13
public class IFFunction extends AbstractFunction {
......
56 57

  
57 58
    @Override
58 59
    public String toString(Codes args, Formatter<Code> formatter) {
59
        StringBuilder builder = new StringBuilder();
60
        builder.append("IF ");
61
        builder.append(args.get(0).toString(formatter));
62
        builder.append(" THEN ");
63
        builder.append(args.get(1).toString(formatter));
64
        if( args.size()>2 && args.get(2)!=null ) {
65
            builder.append(" ELSE ");
66
            builder.append(args.get(2).toString(formatter));
60
        Code codeCondition = args.get(0);
61
        Code codeIfTrue = args.get(1);
62
        Code codeIfFalse = (args.size() > 2)? args.get(2):null;
63
        
64
        PrettyFormatter builder = PrettyFormatter.get(formatter);
65
        try {
66
            builder.push();
67
            
68
            builder.append("IF ");
69
            builder.append(codeCondition.toString(formatter));
70
            builder.append(" THEN ");
71
            builder.indent();
72
            if( Code.isFunction(codeIfTrue,"BLOCK") ) {
73
                Code.Callable block = (Code.Callable)codeIfTrue;
74
                for (Code parameter : block.parameters()) {
75
                    builder.nl();
76
                    builder.append(parameter.toString(formatter));
77
                    builder.append("; ");
78
                }
79
            } else {
80
                builder.nl();
81
                builder.append(codeIfTrue.toString(formatter));
82
                builder.append("; ");
83
            }            
84
            builder.unindent();
85
            if( codeIfFalse!=null ) {
86
                builder.nl();
87
                builder.append("ELSE ");
88
                builder.indent();
89
                if( Code.isFunction(codeIfTrue,"BLOCK") ) {
90
                    Code.Callable block = (Code.Callable)codeIfFalse;
91
                    for (Code parameter : block.parameters()) {
92
                        builder.nl();
93
                        builder.append(parameter.toString(formatter));
94
                        builder.append("; ");
95
                    }
96
                } else {
97
                    builder.nl();
98
                    builder.append(codeIfFalse.toString(formatter));
99
                    builder.append("; ");
100
                }            
101
            }
102
            builder.nl();
103
            builder.append("END IF");
104
            return builder.build();
105
        } finally {
106
            builder.pop();
67 107
        }
68
        builder.append(" END IF");
69
        return builder.toString();
70 108
    }
71 109
    
72 110
    

Also available in: Unified diff