/* * codjo.net * * Common Apache License 2.0 */ package net.codjo.broadcast.common.columns; import net.codjo.expression.Expression; import net.codjo.expression.ExpressionException; import java.sql.Types; import java.util.ArrayList; import java.util.List; /** * Gestionnaire d'expression pour l'export. * * @author $Author: galaber $ * @version $Revision: 1.2 $ */ class GeneratorExpression { private AbstractFileColumnGenerator generator; private Expression expression; GeneratorExpression(String expressionString, int inputSqlType, FunctionHolder funcs) { Expression.Variable[] inputs = new Expression.Variable[1]; inputs[0] = new Expression.Variable(Expression.DEFAULT_STRING_VALUE, inputSqlType); FunctionHolder[] funcHolders = new FunctionHolder[2]; funcHolders[0] = funcs; funcHolders[1] = new GeneratorFunctions(); String[] st = {Expression.DEFAULT_STRING_NULL_VALUE}; expression = new Expression(expressionString, inputs, funcHolders, Types.VARCHAR, st); } GeneratorExpression(String expressionString, int inputSqlType) { expression = new Expression(expressionString, inputSqlType, new GeneratorFunctions(), Types.VARCHAR); } public String computeToString(Object value) throws GenerationException { try { Object result = expression.compute(value); if (result == null) { return ""; } else { return result.toString(); } } catch (ExpressionException ex) { throw new GenerationException("Evaluation de l'expression impossible :" + expression, ex); } } public void init(AbstractFileColumnGenerator columnGenerator) { this.generator = columnGenerator; } /** * Transfert l'appel de formattage sur le generateur. * * @author $Author: galaber $ * @version $Revision: 1.2 $ */ public class GeneratorFunctions implements FunctionHolder { public List<String> getAllFunctions() { List<String> allFunction = new ArrayList<String>(); allFunction.add("outil.format(value)"); return allFunction; } public String getName() { return "outil"; } public String format(Object obj) { return generator.format(obj); } } }