Author: vsalaun Date: 2011-05-12 10:32:13 +0200 (Thu, 12 May 2011) New Revision: 3108 Url: http://chorem.org/repositories/revision/lima/3108 Log: #267 ajout du renderer pour les objets de type BigDecimal dans l'edition du bilan et compte de resultat Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialstatementreport/FinancialStatementReportTableCellRenderer.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialstatementreport/FinancialStatementReportTableModel.java Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialstatementreport/FinancialStatementReportTableCellRenderer.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialstatementreport/FinancialStatementReportTableCellRenderer.java 2011-05-12 08:27:34 UTC (rev 3107) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialstatementreport/FinancialStatementReportTableCellRenderer.java 2011-05-12 08:32:13 UTC (rev 3108) @@ -27,10 +27,16 @@ import java.awt.Component; import java.awt.Font; +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; import javax.swing.JTable; +import javax.swing.SwingConstants; import javax.swing.table.DefaultTableCellRenderer; +import org.chorem.lima.LimaConfig; +import org.chorem.lima.LimaContext; import org.chorem.lima.beans.FinancialStatementAmounts; @@ -75,8 +81,33 @@ } } } + + if (object instanceof BigDecimal) { + setHorizontalAlignment(SwingConstants.LEFT); + setValue(value); + } return this; } + + public void setValue(Object aValue) { + Object result = aValue; + if (( aValue != null) && (aValue instanceof BigDecimal)) { + LimaConfig config = LimaContext.getContext().getConfig(); + String scale = ""; + for (int i = 0; i < config.getScale(); i++) { + scale += "0"; + } + DecimalFormat formatter = new DecimalFormat("##0." + scale); + DecimalFormatSymbols symbol = new DecimalFormatSymbols(); + symbol.setDecimalSeparator(config.getDecimalSeparator()); + symbol.setGroupingSeparator(config.getThousandSeparator()); + formatter.setDecimalFormatSymbols(symbol); + formatter.setGroupingUsed(true); + formatter.setGroupingSize(3); + result = formatter.format(result); + } + super.setValue(result); + } } Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialstatementreport/FinancialStatementReportTableModel.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialstatementreport/FinancialStatementReportTableModel.java 2011-05-12 08:27:34 UTC (rev 3107) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/financialstatementreport/FinancialStatementReportTableModel.java 2011-05-12 08:32:13 UTC (rev 3108) @@ -119,7 +119,30 @@ public int getColumnCount() { return 4; } + + @Override + public Class<?> getColumnClass(int column) { + Class<?> result = null; + + switch (column) { + case 0: + result = String.class; + break; + case 1: + result = BigDecimal.class; + break; + case 2: + result = BigDecimal.class; + break; + case 3: + result = BigDecimal.class; + break; + } + + return result; + } + @Override public String getColumnName(int column) { String res = "n/a"; @@ -154,12 +177,12 @@ FinancialStatementAmounts currentRow = (FinancialStatementAmounts) result; BigDecimal grossAmount = currentRow.getGrossAmount(); if (grossAmount == null ){ - grossAmount = new BigDecimal(0); + grossAmount = BigDecimal.ZERO; } BigDecimal provisionDeprecationAmount = currentRow.getProvisionDeprecationAmount(); if (provisionDeprecationAmount == null ){ - provisionDeprecationAmount = new BigDecimal(0); + provisionDeprecationAmount = BigDecimal.ZERO; } switch (column) { case 0: @@ -173,7 +196,7 @@ } break; case 1: - if (grossAmount == BigDecimal.ZERO){ + if (grossAmount.compareTo(BigDecimal.ZERO) == 0){ result = null; } else { @@ -181,7 +204,7 @@ } break; case 2: - if (provisionDeprecationAmount == BigDecimal.ZERO){ + if (provisionDeprecationAmount.compareTo(BigDecimal.ZERO) == 0){ result = null; } else { @@ -190,7 +213,7 @@ break; case 3: BigDecimal solde = grossAmount.subtract(provisionDeprecationAmount); - if (solde == BigDecimal.ZERO) { + if (solde.compareTo(BigDecimal.ZERO) == 0) { result = null; } else {