This is an automated email from the git hooks/post-receive script. New commit to branch feature/1286-ordered-entries in repository lima. See http://git.chorem.org/lima.git commit 8ef9bf6da82fe25065cf64ef685e46ce5addb5ec Author: dcosse <cosse@codelutin.com> Date: Thu Sep 10 13:27:41 2015 +0200 refs #1286 Regrouppement des entrées par pièces comptable dans la saisie d'écriture --- .../ejb/FinancialTransactionServiceImpl.java | 2 +- .../java/org/chorem/lima/entity/EntryTopiaDao.java | 16 +++---- .../ui/common/FinancialTransactionTableModel.java | 56 +++++++++++++++++++++- .../FinancialTransactionSearchTableModel.java | 9 +++- 4 files changed, 71 insertions(+), 12 deletions(-) diff --git a/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialTransactionServiceImpl.java b/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialTransactionServiceImpl.java index 274781a..89f8825 100644 --- a/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialTransactionServiceImpl.java +++ b/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialTransactionServiceImpl.java @@ -414,7 +414,7 @@ public class FinancialTransactionServiceImpl extends AbstractLimaService impleme public List<FinancialTransaction> getAllFinancialTransactions(FinancialPeriod financialPeriod, EntryBook entryBook) { List<FinancialTransaction> financialTransactions; - + // ici FinancialTransactionTopiaDao transactionTopiaDao = getDaoHelper().getFinancialTransactionDao(); if (entryBook != null) { diff --git a/lima-business/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java b/lima-business/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java index 158e5a6..f0922c4 100644 --- a/lima-business/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java +++ b/lima-business/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java @@ -68,7 +68,7 @@ public class EntryTopiaDao extends AbstractEntryTopiaDao<Entry> { HqlAndParametersBuilder<Entry> builder = getEquilibredTransactionQuery(beginDate, endDate); builder.addEquals(Entry.PROPERTY_ACCOUNT, account); - builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION); + builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION, Entry.PROPERTY_TOPIA_CREATE_DATE); List<Entry> entries = findAll(builder.getHql(), builder.getHqlParameters()); @@ -112,7 +112,7 @@ public class EntryTopiaDao extends AbstractEntryTopiaDao<Entry> { HqlAndParametersBuilder<Entry> builder = getEquilibredTransactionQuery(beginDate, endDate); builder.addEquals(PROPERTY_ENTRY_BOOK, entryBook); - builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION); + builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION, Entry.PROPERTY_TOPIA_CREATE_DATE); List<Entry> entries = findAll(builder.getHql(), builder.getHqlParameters()); return entries; @@ -173,7 +173,7 @@ public class EntryTopiaDao extends AbstractEntryTopiaDao<Entry> { builder.addEquals(PROPERTY_ENTRY_BOOK, entryBook); builder.addGreaterOrEquals(PROPERTY_TRANSACTION_DATE, beginDate); builder.addLowerOrEquals(PROPERTY_TRANSACTION_DATE, endDate); - builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION); + builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION, Entry.PROPERTY_TOPIA_CREATE_DATE); List<Entry> entries = findAll(builder.getHql(), builder.getHqlParameters()); return entries; @@ -189,7 +189,7 @@ public class EntryTopiaDao extends AbstractEntryTopiaDao<Entry> { HqlAndParametersBuilder<Entry> builder = newHqlAndParametersBuilder(); builder.addGreaterOrEquals(PROPERTY_TRANSACTION_DATE, beginDate); builder.addLowerOrEquals(PROPERTY_TRANSACTION_DATE, endDate); - builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION); + builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION, Entry.PROPERTY_TOPIA_CREATE_DATE); List<Entry> entries = findAll(builder.getHql(), builder.getHqlParameters()); return entries; @@ -225,7 +225,7 @@ public class EntryTopiaDao extends AbstractEntryTopiaDao<Entry> { "OR " + alias + "." + Entry.PROPERTY_LETTERING + " != ''"); } - builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION); + builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION, Entry.PROPERTY_TOPIA_CREATE_DATE); List<Entry> entries = findAll(builder.getHql(), builder.getHqlParameters()); @@ -280,7 +280,7 @@ public class EntryTopiaDao extends AbstractEntryTopiaDao<Entry> { builder.addGreaterOrEquals(PROPERTY_TRANSACTION_DATE, beginDate); builder.addLowerOrEquals(PROPERTY_TRANSACTION_DATE, endDate); builder.addEquals(PROPERTY_ENTRY_BOOK, entryBook); - builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION); + builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION, Entry.PROPERTY_TOPIA_CREATE_DATE); List<Entry> result = findAll(builder.getHql(), builder.getHqlParameters()); return result; @@ -305,7 +305,7 @@ public class EntryTopiaDao extends AbstractEntryTopiaDao<Entry> { "OR " + Entry.PROPERTY_VOUCHER + " = ''" + "OR " + Entry.PROPERTY_DESCRIPTION + " = null " + "OR " + Entry.PROPERTY_DESCRIPTION + " = ''"); - builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION); + builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION, Entry.PROPERTY_TOPIA_CREATE_DATE); List<Entry> entries = findAll(builder.getHql(), builder.getHqlParameters()); @@ -329,7 +329,7 @@ public class EntryTopiaDao extends AbstractEntryTopiaDao<Entry> { "OR " + Entry.PROPERTY_VOUCHER + " = ''" + "OR " + Entry.PROPERTY_DESCRIPTION + " = null " + "OR " + Entry.PROPERTY_DESCRIPTION + " = ''"); - builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION); + builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, Entry.PROPERTY_FINANCIAL_TRANSACTION, Entry.PROPERTY_TOPIA_CREATE_DATE); List<Entry> entries = findAll(builder.getHql(), builder.getHqlParameters()); diff --git a/lima-swing/src/main/java/org/chorem/lima/ui/common/FinancialTransactionTableModel.java b/lima-swing/src/main/java/org/chorem/lima/ui/common/FinancialTransactionTableModel.java index 543c993..447b359 100644 --- a/lima-swing/src/main/java/org/chorem/lima/ui/common/FinancialTransactionTableModel.java +++ b/lima-swing/src/main/java/org/chorem/lima/ui/common/FinancialTransactionTableModel.java @@ -22,8 +22,11 @@ package org.chorem.lima.ui.common; * #L% */ +import com.google.common.collect.Lists; +import com.google.common.collect.Ordering; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.chorem.lima.business.LimaServiceFactory; import org.chorem.lima.business.api.FinancialTransactionService; import org.chorem.lima.business.exceptions.AfterLastFiscalPeriodException; import org.chorem.lima.business.exceptions.BeforeFirstFiscalPeriodException; @@ -34,7 +37,6 @@ import org.chorem.lima.entity.Entry; import org.chorem.lima.entity.EntryImpl; import org.chorem.lima.entity.FinancialTransaction; import org.chorem.lima.entity.FinancialTransactionImpl; -import org.chorem.lima.business.LimaServiceFactory; import org.chorem.lima.ui.financialtransaction.AccountColumn; import org.chorem.lima.ui.financialtransaction.CreditColumn; import org.chorem.lima.ui.financialtransaction.DayColumn; @@ -44,7 +46,9 @@ import org.chorem.lima.ui.financialtransaction.VoucherColumn; import java.math.BigDecimal; import java.util.Collection; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import static org.nuiton.i18n.I18n.t; @@ -78,10 +82,58 @@ public class FinancialTransactionTableModel extends TableModelWithGroup<Entry> { addColumn(new CreditColumn()); } + protected Ordering<Entry> ordering = Ordering.from(new EntryComparator()); + public void setTransactions(List<FinancialTransaction> transactions) { clear(); for (FinancialTransaction transaction : transactions) { - addAll(transaction.getEntry()); + //addAll(transaction.getEntry()); + // Normal entry order is by create date + // But it can append that entries with same voucher or not grouped + // and make transaction reading difficult. + // The following method keep entries ordered by date but group them by voucher to. + List<Entry> result = getOrderedTransactionEntries(transaction); + addAll(result); + } + } + + + //Entries should be ordered from Model and data base. + @Deprecated + protected List<Entry> getOrderedTransactionEntries(FinancialTransaction transaction) { + Collection<Entry> entries = transaction.getEntry(); + List<Entry> orderedEntries = ordering.sortedCopy(entries); + LinkedHashMap<String, List<Entry>> orderedEntriesByVoucher = getEntriesByVoucherByDate(orderedEntries); + List<Entry> result = getGroupedOrderedEntries(orderedEntriesByVoucher); + return result; + } + + private List<Entry> getGroupedOrderedEntries(LinkedHashMap<String, List<Entry>> orderedEntriesByVoucher) { + List<Entry> result = Lists.newArrayList(); + for (Map.Entry<String, List<Entry>> stringListEntry : orderedEntriesByVoucher.entrySet()) { + result.addAll(stringListEntry.getValue()); + } + return result; + } + + protected LinkedHashMap<String, List<Entry>> getEntriesByVoucherByDate(List<Entry> orderedEntries) { + LinkedHashMap<String, List<Entry>> orderedEntriesByVoucher = new LinkedHashMap<>(); + for (Entry orderedEntry : orderedEntries) { + List<Entry> entriesForVoucher = orderedEntriesByVoucher.get(orderedEntry.getVoucher()); + if (entriesForVoucher == null) { + entriesForVoucher = Lists.newArrayList(); + orderedEntriesByVoucher.put(orderedEntry.getVoucher(), entriesForVoucher); + } + entriesForVoucher.add(orderedEntry); + } + return orderedEntriesByVoucher; + } + + public void addAll(List<Entry> values) { + if (values != null && !values.isEmpty()) { + int row = this.values.size(); + this.values.addAll(values); + fireTableRowsInserted(row, row + values.size() - 1); } } diff --git a/lima-swing/src/main/java/org/chorem/lima/ui/financialtransactionsearch/FinancialTransactionSearchTableModel.java b/lima-swing/src/main/java/org/chorem/lima/ui/financialtransactionsearch/FinancialTransactionSearchTableModel.java index 16ff97e..69395db 100644 --- a/lima-swing/src/main/java/org/chorem/lima/ui/financialtransactionsearch/FinancialTransactionSearchTableModel.java +++ b/lima-swing/src/main/java/org/chorem/lima/ui/financialtransactionsearch/FinancialTransactionSearchTableModel.java @@ -23,10 +23,10 @@ package org.chorem.lima.ui.financialtransactionsearch; import org.chorem.lima.beans.FinancialTransactionCondition; +import org.chorem.lima.business.LimaServiceFactory; import org.chorem.lima.business.api.FinancialPeriodService; import org.chorem.lima.entity.FinancialTransaction; import org.chorem.lima.entity.FiscalPeriod; -import org.chorem.lima.business.LimaServiceFactory; import org.chorem.lima.ui.common.FinancialTransactionTableModel; import org.chorem.lima.ui.financialtransaction.AccountColumn; import org.chorem.lima.ui.financialtransaction.BalanceColumn; @@ -109,4 +109,11 @@ public class FinancialTransactionSearchTableModel extends FinancialTransactionTa } } + public void setTransactions(List<FinancialTransaction> transactions) { + clear(); + for (FinancialTransaction transaction : transactions) { + addAll(transaction.getEntry()); + } + } + } -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.