This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository lima. See http://git.chorem.org/lima.git commit b4b645f61af063699eb418f0d860eb8bb9266c50 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Apr 1 10:52:41 2015 +0200 refs #1158 : recupération du ClosedPeriodEntryBook et stockage dans un map pour le cache. --- .../api/ClosedPeriodicEntryBookService.java | 3 ++ .../ejb/ClosedPeriodicEntryBookServiceImpl.java | 11 +++++ .../entity/ClosedPeriodicEntryBookTopiaDao.java | 23 +++++++++ .../ui/common/FinancialTransactionTableModel.java | 55 ++++++++++++++++++++-- .../FinancialTransactionSearchTableModel.java | 9 ++-- 5 files changed, 94 insertions(+), 7 deletions(-) diff --git a/lima-business-api/src/main/java/org/chorem/lima/business/api/ClosedPeriodicEntryBookService.java b/lima-business-api/src/main/java/org/chorem/lima/business/api/ClosedPeriodicEntryBookService.java index 5a06347..1cb6954 100644 --- a/lima-business-api/src/main/java/org/chorem/lima/business/api/ClosedPeriodicEntryBookService.java +++ b/lima-business-api/src/main/java/org/chorem/lima/business/api/ClosedPeriodicEntryBookService.java @@ -39,4 +39,7 @@ public interface ClosedPeriodicEntryBookService { List<ClosedPeriodicEntryBook> getAllByDates(Date beginDate, Date endDate); List<ClosedPeriodicEntryBook> getAllByEntryBookAndDates(EntryBook entryBook, Date beginDate, Date endDate); + + ClosedPeriodicEntryBook getByEntryBookAndFinancialPeriod(EntryBook entryBook, Date date); + } diff --git a/lima-business/src/main/java/org/chorem/lima/business/ejb/ClosedPeriodicEntryBookServiceImpl.java b/lima-business/src/main/java/org/chorem/lima/business/ejb/ClosedPeriodicEntryBookServiceImpl.java index 19230bf..352d51e 100644 --- a/lima-business/src/main/java/org/chorem/lima/business/ejb/ClosedPeriodicEntryBookServiceImpl.java +++ b/lima-business/src/main/java/org/chorem/lima/business/ejb/ClosedPeriodicEntryBookServiceImpl.java @@ -66,4 +66,15 @@ public class ClosedPeriodicEntryBookServiceImpl extends AbstractLimaService impl closedPeriodicEntryBookTopiaDao.findAllByEntryBookAndDates(entryBook, beginDate, endDate); return result; } + + @Override + public ClosedPeriodicEntryBook getByEntryBookAndFinancialPeriod(EntryBook entryBook, Date date) { + + ClosedPeriodicEntryBookTopiaDao accountTopiaDao = getDaoHelper().getClosedPeriodicEntryBookDao(); + ClosedPeriodicEntryBook result = accountTopiaDao.findByEntryBookAndDate(entryBook, date); + + return result; + } + + } diff --git a/lima-business/src/main/java/org/chorem/lima/entity/ClosedPeriodicEntryBookTopiaDao.java b/lima-business/src/main/java/org/chorem/lima/entity/ClosedPeriodicEntryBookTopiaDao.java index cdae5fa..e539043 100644 --- a/lima-business/src/main/java/org/chorem/lima/entity/ClosedPeriodicEntryBookTopiaDao.java +++ b/lima-business/src/main/java/org/chorem/lima/entity/ClosedPeriodicEntryBookTopiaDao.java @@ -71,6 +71,29 @@ public class ClosedPeriodicEntryBookTopiaDao extends AbstractClosedPeriodicEntry } /** + * Return ClosedPeriodicEntryBook by EntryBook and FinancialPeriod. + * + * @param entryBook + * @param date + * @return ClosedPeriodicEntryBook + */ + public ClosedPeriodicEntryBook findByEntryBookAndDate( + EntryBook entryBook, Date date) { + + HqlAndParametersBuilder<ClosedPeriodicEntryBook> builder = newHqlAndParametersBuilder(); + + builder.addEquals(ClosedPeriodicEntryBook.PROPERTY_ENTRY_BOOK, entryBook); + + builder.addLowerOrEquals(PROPERTY_BEGIN_DATE, date); + + builder.addGreaterOrEquals(PROPERTY_END_DATE, date); + + ClosedPeriodicEntryBook closedPeriodicEntryBook = findUnique(builder.getHql(), builder.getHqlParameters()); + + return closedPeriodicEntryBook; + } + + /** * Retourne toutes les ClosedPeriodicEntryBook par interval de date * sur les periodes sur lequelles elles portent ordonnée par journal. * 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 20d594e..5ef4ded 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 @@ -23,16 +23,21 @@ package org.chorem.lima.ui.common; */ import com.google.common.collect.Lists; +import com.google.common.collect.Maps; 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.ServiceListener; +import org.chorem.lima.business.api.ClosedPeriodicEntryBookService; +import org.chorem.lima.business.api.FinancialPeriodService; import org.chorem.lima.business.api.FinancialTransactionService; import org.chorem.lima.business.exceptions.AfterLastFiscalPeriodException; import org.chorem.lima.business.exceptions.BeforeFirstFiscalPeriodException; import org.chorem.lima.business.exceptions.LockedEntryBookException; import org.chorem.lima.business.exceptions.LockedFinancialPeriodException; import org.chorem.lima.business.utils.EntryComparator; +import org.chorem.lima.entity.ClosedPeriodicEntryBook; import org.chorem.lima.entity.Entry; import org.chorem.lima.entity.EntryImpl; import org.chorem.lima.entity.FinancialTransaction; @@ -55,7 +60,7 @@ import static org.nuiton.i18n.I18n.t; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ -public class FinancialTransactionTableModel extends TableModelWithGroup<Entry> { +public class FinancialTransactionTableModel extends TableModelWithGroup<Entry> implements ServiceListener { /** serialVersionUID. */ private static final long serialVersionUID = -7495388454688562991L; @@ -65,11 +70,17 @@ public class FinancialTransactionTableModel extends TableModelWithGroup<Entry> { /** Service (just to update setValueAt(). */ protected FinancialTransactionService financialTransactionService; + protected Map<FinancialTransaction, Boolean> lockedByTransaction; + + protected ClosedPeriodicEntryBookService closedPeriodicEntryBookService; + public FinancialTransactionTableModel() { setComparator(new EntryComparator()); - financialTransactionService = - LimaServiceFactory.getService(FinancialTransactionService.class); + financialTransactionService = LimaServiceFactory.getService(FinancialTransactionService.class); + closedPeriodicEntryBookService = LimaServiceFactory.getService(ClosedPeriodicEntryBookService.class); + LimaServiceFactory.addServiceListener(FinancialPeriodService.class, this); + lockedByTransaction = Maps.newHashMap(); } @Override @@ -142,6 +153,36 @@ public class FinancialTransactionTableModel extends TableModelWithGroup<Entry> { return entry.getFinancialTransaction(); } + public boolean isLocked(int row) { + + FinancialTransaction transaction = getTransactionAt(row); + + Boolean locked = lockedByTransaction.get(transaction); + + if (locked == null) { + ClosedPeriodicEntryBook closedPeriodicEntryBook = + closedPeriodicEntryBookService.getByEntryBookAndFinancialPeriod( + transaction.getEntryBook(), + transaction.getTransactionDate()); + if (log.isDebugEnabled()) { + log.debug("transaction " + transaction.getTransactionDate() + " : " + closedPeriodicEntryBook.isLocked()); + } + locked = closedPeriodicEntryBook.isLocked(); + lockedByTransaction.put(transaction, locked); + } + + return locked; + } + + public boolean isCellNavigable(int row, int column) { + return super.isCellEditable(row, column); + } + + @Override + public boolean isCellEditable(int row, int column) { + return super.isCellEditable(row, column) && !isLocked(row); + } + public int indexOf(FinancialTransaction transaction) { int index = 0; Collection<Entry> entriesTransaction = transaction.getEntry(); @@ -318,4 +359,12 @@ public class FinancialTransactionTableModel extends TableModelWithGroup<Entry> { int lastRow = firstRow + transaction.sizeEntry() - 1; fireTableRowsUpdated(firstRow, lastRow); } + + @Override + public void notifyMethod(String serviceName, String methodeName) { + log.debug("Nom de la méthode : " + methodeName); + if (methodeName.contains("blockClosedPeriodicEntryBook")) { + lockedByTransaction.clear(); + } + } } 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 69395db..cf7ef40 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 @@ -100,10 +100,11 @@ public class FinancialTransactionSearchTableModel extends FinancialTransactionTa public void setFiscalPeriod(FiscalPeriod fiscalPeriod) { selectedFiscalPeriod = fiscalPeriod; } - - public void notifyMethod(String serviceName, String methodName) { - if ((serviceName.contains("FinancialTransaction") || methodName.contains("importEntries") - || methodName.contains("importAll")) && !methodName.contains("search")) { + + public void notifyMethod(String serviceName, String methodeName) { + super.notifyMethod(serviceName, methodeName); + if ((serviceName.contains("FinancialTransaction") || methodeName.contains("importEntries") + || methodeName.contains("importAll")) && !methodeName.contains("search")) { //on recharge la liste refresh(financialTransactionCondition); } -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.