/* * codjo.net * * Common Apache License 2.0 */ package net.codjo.broadcast.common.columns; import net.codjo.sql.builder.FieldInfo; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.Locale; /** * Classe responsable de l'extraction et du formatage de donnees de type <code>numeric</code> . * * @author $Author: galaber $ * @version $Revision: 1.3 $ */ class NumberColumnGenerator extends AbstractFileColumnGenerator { private DecimalFormat formatFloatOUT; /** * Initialisation de <code>NumberColumnGenerator</code>. * * @param field information sur le champs * @param destColumnName Le nom physique du champ destination * @param decimalSeparator Le separateur de decimales * @param decimalPattern format * @param padder Le <code>Padder</code> responsable du formatage du champ * @param expression expression * @param isBreakField si true , ce champ est un champ de rupture. * * @throws IllegalArgumentException separateur de decimal ou format nul ou vide */ NumberColumnGenerator(FieldInfo field, String destColumnName, String decimalSeparator, String decimalPattern, Padder padder, GeneratorExpression expression, boolean isBreakField) { super(field, destColumnName, padder, expression, isBreakField); if (decimalSeparator == null || "".equals(decimalSeparator)) { throw new IllegalArgumentException("S�parateur de decimal interdit : " + decimalSeparator + " pour " + field.toString()); } if (decimalPattern == null || "".equals(decimalPattern)) { throw new IllegalArgumentException("Format de nombre interdit : " + decimalPattern + " pour " + field.toString()); } initFormat(decimalSeparator, decimalPattern); } NumberColumnGenerator(FieldInfo field, String destColumnName, String decimalSeparator, String decimalPattern, Padder padder) { this(field, destColumnName, decimalSeparator, decimalPattern, padder, null, false); } @Override protected String format(Object number) { if (number == null) { return ""; } return formatFloatOUT.format(number); } /** * Initialisation du separateur de decimales pour le format de sortie. * * @param decimalSeparator Le separateur de decimales a utiliser * @param decimalPattern Description of the Parameter */ private void initFormat(String decimalSeparator, String decimalPattern) { if (".".equals(decimalSeparator)) { formatFloatOUT = new DecimalFormat(decimalPattern, new DecimalFormatSymbols(Locale.ENGLISH)); } else if (",".equals(decimalSeparator)) { formatFloatOUT = new java.text.DecimalFormat(decimalPattern, new DecimalFormatSymbols(Locale.FRENCH)); } else { throw new IllegalArgumentException("Separateur de d�cimal non support� : " + decimalSeparator); } } }