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/CodeBlockWithExceptFunction.java

View differences:

CodeBlockWithExceptFunction.java
19 19
import org.gvsig.expressionevaluator.impl.function.programming.BreakFunction.BreakException;
20 20
import org.gvsig.expressionevaluator.impl.function.programming.ReturnFunction.ReturnException;
21 21
import org.gvsig.expressionevaluator.spi.AbstractFunction;
22
import org.gvsig.expressionevaluator.PrettyFormatter;
22 23

  
23 24
public class CodeBlockWithExceptFunction extends AbstractFunction {
24 25

  
......
142 143
            return "unknown";
143 144
        }
144 145
    }
146
    
145 147
    @Override
146 148
    public String toString(Codes args, Formatter<Code> formatter) {
147 149
        Code exceptionCode = args.get(args.size()-2);
148 150
        Code declareCode = args.get(args.size()-1);
149 151

  
150
        StringBuilder builder = new StringBuilder();
151
        if( declareCode != null ) {
152
            builder.append("DECLARE ");
153
            builder.append(declareCode.toString(formatter));
152
        PrettyFormatter builder = PrettyFormatter.get(formatter);
153
        try {
154
            builder.push();
155
            if( declareCode != null ) {
156
                builder.append("DECLARE ");
157
                builder.indent();
158
                if( Code.isFunction(exceptionCode,"BLOCK") ) {
159
                    Code.Callable block = (Code.Callable)declareCode;
160
                    for (Code parameter : block.parameters()) {
161
                        builder.nl();                
162
                        builder.append(parameter.toString(formatter));
163
                        builder.append("; ");
164
                    }
165
                } else {
166
                    builder.nl();
167
                    builder.append(declareCode.toString(formatter));
168
                }
169
                builder.unindent();
170
                builder.nl();
171
            }
172
            builder.append("BEGIN ");
173
            builder.indent();
174
            for (int argn = 0; argn < args.size()-2; argn++) {
175
                Code statement = args.get(argn);
176
                builder.nl();
177
                builder.append(statement.toString(formatter));
178
                builder.append("; ");
179
            }
180
            if( exceptionCode != null ) {
181
                builder.unindent();
182
                builder.nl();
183
                builder.append("EXCEPT ");
184
                builder.indent();
185
                if( Code.isFunction(exceptionCode,"BLOCK") ) {
186
                    Code.Callable block = (Code.Callable)exceptionCode;
187
                    for (Code parameter : block.parameters()) {
188
                        builder.nl();
189
                        builder.append(parameter.toString(formatter));
190
                        builder.append("; ");
191
                    }
192
                } else {
193
                    builder.nl();
194
                    builder.append(exceptionCode.toString(formatter));
195
                    builder.append(" ");
196
                }
197
            }
198
            builder.unindent();
199
            builder.nl();
200
            builder.append("END ");
201
            builder.nl();
202
            return builder.build();
203
        } finally {
204
            builder.pop();
154 205
        }
155
        builder.append("BEGIN ");
156
        for (int argn = 0; argn < args.size()-2; argn++) {
157
            Code statement = args.get(argn);
158
            builder.append(statement.toString(formatter));
159
            builder.append("; ");
160
        }
161
        if( exceptionCode != null ) {
162
            builder.append("EXCEPTION ");
163
            builder.append(exceptionCode.toString(formatter));
164
            builder.append(" ");
165
        }
166
        builder.append("END ");
167
        return builder.toString();
168 206
    }
169 207
}

Also available in: Unified diff