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