Author: jpepin Date: 2010-05-25 18:24:52 +0200 (Tue, 25 May 2010) New Revision: 2907 Url: http://chorem.org/repositories/revision/lima/2907 Log: Optimisation affichage des combobox, optimisation requ?\195?\170te des totaux soldes en cours. Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialPeriodServiceImpl.java trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/ReportServiceImpl.java trunk/lima-callao/src/main/xmi/accounting.properties trunk/lima-swing/src/main/java/org/chorem/lima/ui/combobox/AccountComboBoxModel.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/combobox/EntryBookComboBoxModel.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/combobox/FinancialPeriodComboBoxModel.java Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialPeriodServiceImpl.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialPeriodServiceImpl.java 2010-05-25 13:52:22 UTC (rev 2906) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialPeriodServiceImpl.java 2010-05-25 16:24:52 UTC (rev 2907) @@ -33,6 +33,7 @@ import org.chorem.lima.entity.ClosedPeriodicEntryBook; import org.chorem.lima.entity.ClosedPeriodicEntryBookDAO; import org.chorem.lima.entity.ClosedPeriodicEntryBookImpl; +import org.chorem.lima.entity.Entry; import org.chorem.lima.entity.EntryBook; import org.chorem.lima.entity.EntryBookDAO; import org.chorem.lima.entity.FinancialPeriod; @@ -310,6 +311,11 @@ //Get closedperiodicentrybook from unlocked fiscalperiod TopiaQuery query = closedPeriodicEntryBookDAO.createQuery("E"); + //IMPORTANT : LOADING ClosedPeriodicEntryBook AND IS COLUMN FOR NO LAZY EXCEPTION + String loadEntryBookProperty = TopiaQuery.getProperty(ClosedPeriodicEntryBook.ENTRY_BOOK, EntryBook.LABEL); + query.addLoad(loadEntryBookProperty); + String loadFinancialPeriodProperty = TopiaQuery.getProperty(ClosedPeriodicEntryBook.FINANCIAL_PERIOD, FinancialPeriod.BEGIN_DATE); + query.addLoad(loadFinancialPeriodProperty); query.addFrom(FiscalPeriod.class, "F") .addInElements("E." + ClosedPeriodicEntryBook.FINANCIAL_PERIOD, "F."+FiscalPeriod.FINANCIAL_PERIOD) Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/ReportServiceImpl.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/ReportServiceImpl.java 2010-05-25 13:52:22 UTC (rev 2906) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/ReportServiceImpl.java 2010-05-25 16:24:52 UTC (rev 2907) @@ -91,60 +91,85 @@ public ReportsDatas generateAccountReportsWithTransaction (Account account, Date beginDate, Date endDate, TopiaContext topiaContext) throws LimaException{ ReportsDatas reportsDatas = new ReportsDatasImpl(); double credit = 0, debit = 0, solde = 0; - - try { - EntryDAO entryDAO= LimaCallaoDAOHelper.getEntryDAO(topiaContext); - TopiaQuery query = entryDAO.createQuery("E"); - - if (beginDate != null && endDate != null){ - String transactionDateProperty = - TopiaQuery.getProperty(Entry.FINANCIAL_TRANSACTION, - FinancialTransaction.TRANSACTION_DATE); - query.add(transactionDateProperty+" BETWEEN :beginDate AND :endDate") - .addParam("beginDate", beginDate) - .addParam("endDate", endDate); - } - - if (account != null) { - query - .add(Entry.ACCOUNT, account) - //IMPORTANT : LOADING ENTRIES AND IS COLUMN FOR NO LAZY EXCEPTION - .addLoad(Entry.ENTRY_BOOK, Entry.FINANCIAL_TRANSACTION); - reportsDatas.setListEntry(entryDAO.findAllByQuery(query)); + String queryAlias = "E"; + if (account != null){ + try { + EntryDAO entryDAO= LimaCallaoDAOHelper.getEntryDAO(topiaContext); + reportsDatas.setListEntry(entryDAO.findAllByQuery( + createEntryQuery(account, beginDate, endDate, entryDAO, queryAlias))); + /* + TopiaQuery debitQuery = createEntryQuery(account, beginDate, endDate, entryDAO, queryAlias); + debitQuery.add(Entry.DEBIT, Boolean.TRUE).setSelect(Entry.AMOUNT); + //List<Object[]> debitObject = debitQuery.execute(); + //log.debug(debitObject); - query.setSelect("E."+Entry.DEBIT, "SUM(E."+Entry.AMOUNT+")"); - query.addGroup("E."+Entry.DEBIT); - List<Object[]> results = query.execute(); - for (Object[] result : results) { - if ((Boolean)result[0]){ - debit += (Double)result[1]; - } - else { - credit += (Double)result[1]; - } - } - // set the amounts and solde - solde = debit - credit; - if (solde > 0){ - reportsDatas.setSoldeDebit(true); - } - solde = Math.abs(solde); + TopiaQuery creditQuery = createEntryQuery(account, beginDate, endDate, entryDAO, queryAlias); + creditQuery.add(Entry.DEBIT, Boolean.FALSE).setSelect(Entry.AMOUNT); + //List<Object[]> creditObject = creditQuery.execute(); + //log.debug(creditObject); + + TopiaQuery soldeQuery = createEntryQuery(account, beginDate, endDate, entryDAO, queryAlias); + soldeQuery.setSelect("SUM(" + debitQuery.fullQuery() + ") as debit") + .addParams(debitQuery.getParams()) + .addSelect("SUM(" + creditQuery.fullQuery() + ") as credit") + .addParams(creditQuery.getParams()) + .addSelect("(debit - credit) as solde"); + log.debug(soldeQuery); + List<Object[]> soldeObject = soldeQuery.execute(); + log.debug(soldeObject); + + */ + + /*query.setSelect("E."+Entry.DEBIT, "SUM(E."+Entry.AMOUNT+")"); + query.addGroup("E."+Entry.DEBIT); + List<Object[]> results = query.execute(); + for (Object[] result : results) { + if ((Boolean)result[0]){ + debit += (Double)result[1]; + } + else { + credit += (Double)result[1]; + } + } + // set the amounts and solde + solde = debit - credit; + if (solde > 0){ + reportsDatas.setSoldeDebit(true); + } + solde = Math.abs(solde);*/ + + reportsDatas.setAmountCredit(credit); + reportsDatas.setAmountDebit(debit); + reportsDatas.setAmountSolde(solde); + + // commit + topiaContext.commitTransaction(); } - - reportsDatas.setAmountCredit(credit); - reportsDatas.setAmountDebit(debit); - reportsDatas.setAmountSolde(solde); - - // commit - topiaContext.commitTransaction(); + catch (TopiaException ex) { + doCatch(topiaContext, ex, log); + } } - catch (TopiaException ex) { - doCatch(topiaContext, ex, log); - } return reportsDatas; } + + public TopiaQuery createEntryQuery(Account account, Date beginDate, Date endDate, EntryDAO entryDAO, String queryAlias) throws LimaException{ + TopiaQuery query = entryDAO.createQuery(queryAlias); + + String transactionDateProperty = + TopiaQuery.getProperty(Entry.FINANCIAL_TRANSACTION, + FinancialTransaction.TRANSACTION_DATE); + query.add(transactionDateProperty+" BETWEEN :beginDate AND :endDate") + .addParam("beginDate", beginDate) + .addParam("endDate", endDate) + .add(Entry.ACCOUNT, account) + //IMPORTANT : LOADING ENTRIES AND IS COLUMN FOR NO LAZY EXCEPTION + .addLoad(Entry.ENTRY_BOOK, Entry.FINANCIAL_TRANSACTION); + + return query; + } + /** * Get all entry from an entrybook and a begin-end dates order by financial transaction date * Modified: trunk/lima-callao/src/main/xmi/accounting.properties =================================================================== --- trunk/lima-callao/src/main/xmi/accounting.properties 2010-05-25 13:52:22 UTC (rev 2906) +++ trunk/lima-callao/src/main/xmi/accounting.properties 2010-05-25 16:24:52 UTC (rev 2907) @@ -2,11 +2,8 @@ model.tagvalue.copyright=/*\n Copyright (C) 2009-2010 Lima Callao\n */ org.chorem.lima.entity.Account.attribute.subAccounts.tagvalue.lazy=false org.chorem.lima.entity.Account.attribute.subLedgers.tagvalue.lazy=false -org.chorem.lima.entity.Account.attribute.identity.tagvalue.lazy=false org.chorem.lima.entity.FinancialTransaction.attribute.financialPeriod.tagvalue.lazy=false org.chorem.lima.entity.FiscalPeriod.attribute.financialPeriod.tagvalue.lazy=false -org.chorem.lima.entity.ClosedPeriodicEntryBook.attribute.financialPeriod.tagvalue.lazy=false -org.chorem.lima.entity.ClosedPeriodicEntryBook.attribute.entryBook.tagvalue.lazy=false #model.tagvalue.dbSchema=Callao model.tagvalue.String=text \ No newline at end of file Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/combobox/AccountComboBoxModel.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/combobox/AccountComboBoxModel.java 2010-05-25 13:52:22 UTC (rev 2906) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/combobox/AccountComboBoxModel.java 2010-05-25 16:24:52 UTC (rev 2907) @@ -43,10 +43,13 @@ protected Object selectedAccount; + protected List<Account> datasCache; + protected AccountService accountService; public AccountComboBoxModel() { accountService = LimaServiceFactory.getInstance().getAccountService(); + datasCache = getDataList(); } @Override @@ -67,12 +70,12 @@ @Override public Object getElementAt(int index) { - return getDataList().get(index); + return datasCache.get(index); } @Override public int getSize() { - return getDataList().size(); + return datasCache.size(); } @Override @@ -82,7 +85,7 @@ } public List<Account> getDataList(){ - List<Account> result = new ArrayList<Account>(); + List<Account> result = null; try { result = accountService.getAllAccounts(); } Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/combobox/EntryBookComboBoxModel.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/combobox/EntryBookComboBoxModel.java 2010-05-25 13:52:22 UTC (rev 2906) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/combobox/EntryBookComboBoxModel.java 2010-05-25 16:24:52 UTC (rev 2907) @@ -49,8 +49,11 @@ protected EntryBookService entryBookService; + protected List<EntryBook> cacheDatas; + public EntryBookComboBoxModel() { entryBookService = LimaServiceFactory.getInstance().getEntryBookService(); + cacheDatas = getDataList(); } /* @@ -58,7 +61,7 @@ */ @Override public int getSize() { - return getDataList().size(); + return cacheDatas.size(); } /* @@ -66,7 +69,7 @@ */ @Override public Object getElementAt(int index) { - return getDataList().get(index); + return cacheDatas.get(index); } /* @@ -105,7 +108,7 @@ * get the accounts list */ public List<EntryBook> getDataList(){ - List<EntryBook> result = new ArrayList<EntryBook>(); + List<EntryBook> result = null; try { result = entryBookService.getAllEntryBooks(); } Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/combobox/FinancialPeriodComboBoxModel.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/combobox/FinancialPeriodComboBoxModel.java 2010-05-25 13:52:22 UTC (rev 2906) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/combobox/FinancialPeriodComboBoxModel.java 2010-05-25 16:24:52 UTC (rev 2907) @@ -18,16 +18,20 @@ package org.chorem.lima.ui.combobox; -import java.util.Collection; +import java.util.List; import javax.swing.ComboBoxModel; import javax.swing.event.ListDataListener; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.chorem.lima.business.FinancialPeriodService; import org.chorem.lima.business.LimaException; +import org.chorem.lima.entity.FinancialPeriod; import org.chorem.lima.entity.FiscalPeriod; import org.chorem.lima.service.LimaServiceFactory; +import org.chorem.lima.ui.financialperiod.FinancialPeriodTableModel; /** * Opened financial period combo box model. @@ -39,19 +43,26 @@ * By : $Author$ */ public class FinancialPeriodComboBoxModel implements ComboBoxModel { + + private static final Log log = + LogFactory.getLog(FinancialPeriodTableModel.class); protected Object selectedFinancialPeriod; + protected List<FinancialPeriod> datasCache; + protected FinancialPeriodService financialPeriodService; protected FiscalPeriod selectedFiscalPeriod; public FinancialPeriodComboBoxModel() { financialPeriodService = LimaServiceFactory.getInstance().getFinancialPeriodService(); + datasCache=getDataList(); } public void setFiscalPeriod(FiscalPeriod fiscalPeriod){ selectedFiscalPeriod=fiscalPeriod; + datasCache=getDataList(); } /* @@ -59,23 +70,7 @@ */ @Override public int getSize() { - int result = 0; - // TODO add cache - try { - if (selectedFiscalPeriod != null){ - - result = selectedFiscalPeriod.getFinancialPeriod().size(); - } - else { - result = financialPeriodService. - getUnblockedFinancialPeriods().size(); - } - } - catch (LimaException ex) { - // TODO Auto-generated catch block - ex.printStackTrace(); - } - return result; + return datasCache.size(); } /* @@ -83,22 +78,7 @@ */ @Override public Object getElementAt(int index) { - Object result = null; - // TODO add cache - try { - if (selectedFiscalPeriod != null){ - result = CollectionUtils.get(selectedFiscalPeriod.getFinancialPeriod(), index); - } - else { - result = financialPeriodService.getUnblockedFinancialPeriods(). - get(index); - } - } - catch (LimaException ex) { - // TODO Auto-generated catch block - ex.printStackTrace(); - } - return result; + return datasCache.get(index); } /* @@ -132,4 +112,23 @@ public Object getSelectedItem() { return selectedFinancialPeriod; } + + public List<FinancialPeriod> getDataList(){ + List<FinancialPeriod> result = null; + try { + if (selectedFiscalPeriod != null){ + result = (List<FinancialPeriod>) selectedFiscalPeriod.getFinancialPeriod(); + } + else { + result = financialPeriodService.getUnblockedFinancialPeriods(); + } + } + catch (LimaException ex) { + if (log.isDebugEnabled()){ + log.debug("Can't get Financial Period list",ex); + } + } + return result; + + } }
participants (1)
-
jpepin@users.chorem.org