Revision 46001

View differences:

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/CaseFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.programming;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Code;
4 5
import org.gvsig.expressionevaluator.Codes;
6
import org.gvsig.expressionevaluator.Formatter;
5 7
import org.gvsig.expressionevaluator.Function;
6 8
import org.gvsig.expressionevaluator.Interpreter;
7 9
import org.gvsig.expressionevaluator.spi.AbstractFunction;
......
21 23
                "CASE\n  WHEN {{condition}} THEN PASS\n  ELSE PASS\nEND CASE\n",
22 24
                null,
23 25
                "Object",
24
                false
26
                true
25 27
        );
26 28
    }
27 29

  
......
80 82
        return value;
81 83
    }
82 84
    
85
    @Override
86
    public String toString(Codes args, Formatter<Code> formatter) {
87
        StringBuilder builder = new StringBuilder();
88
        
89
        int count;
90
        int firstValue;
91
        int elseValue;
92
        
93
        if( (args.size() % 2) == 0) {
94
            count = args.size() / 2;
95
            firstValue = count;
96
            elseValue = -1;
97
        } else {
98
            count = (args.size()-1) / 2;
99
            firstValue = count;
100
            elseValue = args.size()-1;
101
        }
102

  
103
        Object value = null;
104
        builder.append("CASE");
105
        for( int n=0; n<count; n++ ) {
106
            builder.append(" WHEN ");
107
            builder.append(args.get(n).toString(formatter));
108
            builder.append(" THEN ");
109
            builder.append(args.get(n+firstValue).toString(formatter));
110
        }
111
        if( elseValue>0 && args.get(elseValue)!=null) {
112
            builder.append(" ELSE ");
113
            builder.append(args.get(elseValue).toString(formatter));
114
        }
115
        builder.append(" END");
116
        return builder.toString();
117

  
118
    }
83 119
}

Also available in: Unified diff