Author: sbavencoff Date: 2014-05-28 17:00:29 +0200 (Wed, 28 May 2014) New Revision: 3823 Url: http://forge.chorem.org/projects/lima/repository/revisions/3823 Log: refs #934 : used Topia3 API and refractor code Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/DefaultAccountingRules.java trunk/lima-callao/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialPeriodTopiaDao.java trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialStatementTopiaDao.java trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialTransactionTopiaDao.java trunk/lima-callao/src/main/java/org/chorem/lima/entity/FiscalPeriodTopiaDao.java trunk/lima-callao/src/main/java/org/chorem/lima/entity/VatStatementTopiaDao.java Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/DefaultAccountingRules.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/DefaultAccountingRules.java 2014-05-28 12:30:23 UTC (rev 3822) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/DefaultAccountingRules.java 2014-05-28 15:00:29 UTC (rev 3823) @@ -168,7 +168,7 @@ //check financial period locked FinancialPeriodTopiaDao financialPeriodTopiaDao = getDaoHelper().getFinancialPeriodDao(); FinancialPeriod financialPeriod = financialPeriodTopiaDao.findByDate(financialTransaction.getTransactionDate()); - if (financialPeriod != null && financialPeriod.isLocked()) { + if (financialPeriod.isLocked()) { throw new LimaBusinessException(t("lima-business.defaultaccountingrules.financialperiodblocked")); } Modified: trunk/lima-callao/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java =================================================================== --- trunk/lima-callao/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java 2014-05-28 12:30:23 UTC (rev 3822) +++ trunk/lima-callao/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java 2014-05-28 15:00:29 UTC (rev 3823) @@ -25,35 +25,36 @@ package org.chorem.lima.entity; -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.beans.LetteringFilter; import org.nuiton.topia.persistence.HqlAndParametersBuilder; -import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.Map; public class EntryTopiaDao extends AbstractEntryTopiaDao<Entry> { private static final Log log = LogFactory.getLog(EntryTopiaDao.class); + public static final String PROPERTY_TRANSACTION_DATE = Entry.PROPERTY_FINANCIAL_TRANSACTION + "." + FinancialTransaction.PROPERTY_TRANSACTION_DATE; + + public static final String PROPERTY_ENTRY_BOOK = Entry.PROPERTY_FINANCIAL_TRANSACTION + "." + FinancialTransaction.PROPERTY_ENTRY_BOOK; + /** * Requete generique qui recupere les entrees equilibrées portant entre * deux dates. * */ - protected String getEquilibredTransactionQuery() { - String query = "FROM " + Entry.class.getName() + " E" + - // equlibrée (somme des débit = somme des crédit) - " WHERE (SELECT sum(E2.amount) FROM " + Entry.class.getName() + " E2 WHERE E2.debit = false AND E2.financialTransaction = E.financialTransaction) = " + - "(SELECT sum(E2.amount) FROM " + Entry.class.getName() + " E2 WHERE E2.debit = true AND E2.financialTransaction = E.financialTransaction)" + - // entre les 2 dates - " AND :beginDate <= E.financialTransaction.transactionDate" + - " AND E.financialTransaction.transactionDate <= :endDate"; - return query; + protected HqlAndParametersBuilder<Entry> getEquilibredTransactionQuery(Date beginDate, Date endDate) { + + HqlAndParametersBuilder<Entry> builder = newHqlAndParametersBuilder(); + builder.addGreaterOrEquals(PROPERTY_TRANSACTION_DATE, beginDate); + builder.addLowerOrEquals(PROPERTY_TRANSACTION_DATE, endDate); + builder.addWhereClause(FinancialTransactionTopiaDao.getBalancedClause(builder.getAlias() + "." + Entry.PROPERTY_FINANCIAL_TRANSACTION, true)); + + return builder; } /** @@ -68,15 +69,10 @@ public List<Entry> findAllEntryOfBalancedTransaction(Account account, Date beginDate, Date endDate) { - String query = getEquilibredTransactionQuery() + - // concerne le compte - " AND E.account = :account"; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate", beginDate); - args.put("endDate", endDate); - args.put("account", account); + HqlAndParametersBuilder<Entry> builder = getEquilibredTransactionQuery(beginDate, endDate); + builder.addEquals(Entry.PROPERTY_ACCOUNT, account); - List<Entry> entries = findAll(query, args); + List<Entry> entries = findAll(builder.getHql(), builder.getHqlParameters()); return entries; } @@ -92,18 +88,16 @@ */ public List<Object[]> getDebitCreditOfBalancedTransaction(Account account, Date beginDate, Date endDate) { - String query = "SELECT E.debit, SUM(E.amount) " + - getEquilibredTransactionQuery() + - // concerne le compte - " AND E.account = :account" + - " GROUP BY E.debit"; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate", beginDate); - args.put("endDate", endDate); - args.put("account", account); + HqlAndParametersBuilder<Entry> builder = getEquilibredTransactionQuery(beginDate, endDate); + builder.addEquals(Entry.PROPERTY_ACCOUNT, account); - List<Object[]> result = findAll(query, args); + String query = "SELECT " + builder.getAlias() + "." + Entry.PROPERTY_DEBIT + ", " + + "SUM(" + builder.getAlias() + "." + Entry.PROPERTY_AMOUNT + ") " + + builder.getHql() + + " GROUP BY " + builder.getAlias() + "." + Entry.PROPERTY_DEBIT ; + + List<Object[]> result = findAll(query, builder.getHqlParameters()); return result; } @@ -117,28 +111,27 @@ */ public List<Entry> findAllEntryOfBalancedTransaction(EntryBook entryBook, Date beginDate, Date endDate) { - String query = getEquilibredTransactionQuery() + - // concerne le journal - " AND E.financialTransaction.entryBook = :entryBook" + - // fix order - " ORDER BY E.financialTransaction.transactionDate, E.financialTransaction.topiaId"; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate", beginDate); - args.put("endDate", endDate); - args.put("entryBook", entryBook); + HqlAndParametersBuilder<Entry> builder = getEquilibredTransactionQuery(beginDate, endDate); + builder.addEquals(PROPERTY_ENTRY_BOOK, entryBook); + builder.setOrderByArguments(PROPERTY_TRANSACTION_DATE, + Entry.PROPERTY_FINANCIAL_TRANSACTION + "." + FinancialTransaction.PROPERTY_TOPIA_ID); - List<Entry> entries = findAll(query, args); + List<Entry> entries = findAll(builder.getHql(), builder.getHqlParameters()); return entries; } public List<String> findLetters() { - String query = "SELECT DISTINCT E.lettering FROM " + Entry.class.getName() + " E" + - " WHERE E.lettering <> null" + - " ORDER BY E.lettering DESC"; - List<String> result = new ArrayList<String>(this.<String>findAll(query)); + HqlAndParametersBuilder<Entry> builder = newHqlAndParametersBuilder(); + builder.addNotNull(Entry.PROPERTY_LETTERING); + builder.setOrderByArguments(Entry.PROPERTY_LETTERING + " DESC"); + String query = "SELECT DISTINCT " + builder.getAlias() + "." + Entry.PROPERTY_LETTERING + " " + + builder.getHql(); + + List<String> result = findAll(query, builder.getHqlParameters()); + if (log.isDebugEnabled()) { log.debug("Size of result : " + result.size()); } @@ -157,18 +150,15 @@ */ public List<Object[]> getDebitCreditOfBalancedTransaction(EntryBook entryBook, Date beginDate, Date endDate) { - String query = "SELECT E.debit, SUM(E.amount) " + - getEquilibredTransactionQuery() + - // concerne le journal - " AND E.financialTransaction.entryBook = :entryBook" + - " GROUP BY E.debit"; + HqlAndParametersBuilder<Entry> builder = getEquilibredTransactionQuery(beginDate, endDate); + builder.addEquals(PROPERTY_ENTRY_BOOK, entryBook); - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate", beginDate); - args.put("endDate", endDate); - args.put("entryBook", entryBook); + String query = "SELECT " + builder.getAlias() + "." + Entry.PROPERTY_DEBIT + ", " + + "SUM(" + builder.getAlias() + "." + Entry.PROPERTY_AMOUNT + ") " + + builder.getHql() + + " GROUP BY " + builder.getAlias() + "." + Entry.PROPERTY_DEBIT ; - List<Object[]> result = findAll(query, args); + List<Object[]> result = findAll(query, builder.getHqlParameters()); return result; } @@ -182,19 +172,12 @@ */ public List<Entry> findAllEntryByDateForEntryBook(EntryBook entryBook, Date beginDate, Date endDate) { - String query = "FROM " + Entry.class.getName() + " E" + - // entre les 2 dates - " WHERE :beginDate <= E.financialTransaction.transactionDate" + - " AND E.financialTransaction.transactionDate <= :endDate" + - // concerne le journal - " AND E.financialTransaction.entryBook = :entryBook"; + HqlAndParametersBuilder<Entry> builder = newHqlAndParametersBuilder(); + builder.addEquals(PROPERTY_ENTRY_BOOK, entryBook); + builder.addGreaterOrEquals(PROPERTY_TRANSACTION_DATE, beginDate); + builder.addLowerOrEquals(PROPERTY_TRANSACTION_DATE, endDate); - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate", beginDate); - args.put("endDate", endDate); - args.put("entryBook", entryBook); - - List<Entry> entries = findAll(query, args); + List<Entry> entries = findAll(builder.getHql(), builder.getHqlParameters()); return entries; } @@ -205,89 +188,47 @@ * */ public List<Entry> findAllEntryByFilter(LetteringFilter filter) { - List<Entry> entries; + HqlAndParametersBuilder<Entry> builder = newHqlAndParametersBuilder(); + builder.addGreaterOrEquals(PROPERTY_TRANSACTION_DATE, filter.getDateStart()); + builder.addLowerOrEquals(PROPERTY_TRANSACTION_DATE, filter.getDateEnd()); + Account account = filter.getAccount(); - if (account != null && account.getTopiaId() == null) { - // case user want to see all accounts - entries = getAllEntryByLetteringAndDateForEntryBook(filter); - } else { - entries = getAllEntryByAccountLetteringAndDateForEntryBook(filter); + if (account == null || account.getTopiaId() != null) { + builder.addLike(Entry.PROPERTY_ACCOUNT + "." + Account.PROPERTY_ACCOUNT_NUMBER, + filter.getAccount().getAccountNumber() + "%"); } - return entries; - } - public List<Entry> getAllEntryByAccountLetteringAndDateForEntryBook(LetteringFilter filter) { - List<Entry> entries; + String alias = builder.getAlias(); + if (!filter.getDisplayLettered() && filter.getDisplayUnlettred()){ - String query = "SELECT E FROM " + Entry.class.getName() + " E " + - " WHERE E.account.accountNumber like :account "; + builder.addWhereClause( alias + "." + Entry.PROPERTY_LETTERING + " is null " + + "OR " + alias + "." + Entry.PROPERTY_LETTERING + " = ''"); - - if (!filter.getDisplayLettered() && filter.getDisplayUnlettred()){ - query += " AND (E.lettering is null OR E.lettering = '') "; } else if (filter.getDisplayLettered() && !filter.getDisplayUnlettred()){ - query += " AND (E.lettering is not null OR E.lettering !='') "; - } - query += " AND E.financialTransaction.transactionDate between :beginDate AND :endDate " + - " ORDER BY E.financialTransaction.transactionDate, E.financialTransaction." + FinancialTransaction.PROPERTY_TOPIA_CREATE_DATE; + builder.addWhereClause( alias + "." + Entry.PROPERTY_LETTERING + " is not null " + + "OR " + alias + "." + Entry.PROPERTY_LETTERING + " != ''"); - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate", filter.getDateStart()); - args.put("endDate", filter.getDateEnd()); - args.put("account", filter.getAccount().getAccountNumber() + "%"); - entries = findAll(query, args); - - return entries; - } - - public List<Entry> getAllEntryByLetteringAndDateForEntryBook(LetteringFilter filter) { - List<Entry> entries; - - String query = "SELECT E FROM " + Entry.class.getName() + " E "; - - query += " WHERE E.financialTransaction.transactionDate BETWEEN :beginDate AND :endDate "; - - if (!filter.getDisplayLettered() && filter.getDisplayUnlettred()){ - query += " AND (E.lettering is null OR E.lettering = '') "; - } else if (filter.getDisplayLettered() && !filter.getDisplayUnlettred()){ - query += " AND (E.lettering is not null OR E.lettering !='') "; } + List<Entry> entries = findAll(builder.getHql(), builder.getHqlParameters()); - query += " ORDER BY E.financialTransaction.transactionDate, E.financialTransaction." + FinancialTransaction.PROPERTY_TOPIA_CREATE_DATE; - - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate", filter.getDateStart()); - args.put("endDate", filter.getDateEnd()); - - entries = findAll(query, args); - return entries; } - /** * Retourne la dernière entrée d'une transaction * @param financialTransaction transaction sur laquelle la derniere entree est selectionnee * */ public Entry getLastEntry(FinancialTransaction financialTransaction) { - List<Entry> entries; - Entry lastEntry = null; - String query = "SELECT E FROM " + Entry.class.getName() + " E" + - " WHERE E.financialTransaction.transactionDate = :financialTransactionDate " + - " AND E.financialTransaction = :financialTransaction" + - " ORDER BY E.topiaCreateDate DESC"; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("financialTransactionDate", financialTransaction.getTransactionDate()); - args.put("financialTransaction", financialTransaction); - - entries = findAll(query, args); - if (entries.size() > 0) { - lastEntry = entries.get(0); - } - + Ordering<Entry> o = new Ordering<Entry>() { + @Override + public int compare(Entry left, Entry right) { + return left.getTopiaCreateDate().compareTo(right.getTopiaCreateDate()); + } + }; + Entry lastEntry = o.max(financialTransaction.getEntry()); return lastEntry; } @@ -302,21 +243,18 @@ */ public List<Object[]> getDebitCreditOfTransaction(EntryBook entryBook, Date beginDate, Date endDate) { - String query = "SELECT E.debit, SUM(E.amount) " + - "FROM " + Entry.class.getName() + " E" + - // entre les 2 dates - " WHERE :beginDate <= E.financialTransaction.transactionDate" + - " AND E.financialTransaction.transactionDate <= :endDate" + - // concerne le journal - " AND E.financialTransaction.entryBook = :entryBook" + - " GROUP BY E.debit"; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate", beginDate); - args.put("endDate", endDate); - args.put("entryBook", entryBook); + HqlAndParametersBuilder<Entry> builder = newHqlAndParametersBuilder(); + builder.addGreaterOrEquals(PROPERTY_TRANSACTION_DATE, beginDate); + builder.addLowerOrEquals(PROPERTY_TRANSACTION_DATE, endDate); + builder.addEquals(PROPERTY_ENTRY_BOOK, entryBook); - List<Object[]> result = findAll(query, args); + String query = "SELECT " + builder.getAlias() + "." + Entry.PROPERTY_DEBIT + ", " + + "SUM(" + builder.getAlias() + "." + Entry.PROPERTY_AMOUNT + ") " + + builder.getHql() + + " GROUP BY " + builder.getAlias() + "." + Entry.PROPERTY_DEBIT ; + + List<Object[]> result = findAll(query, builder.getHqlParameters()); return result; } @@ -331,9 +269,9 @@ public boolean isExistUnfilledEntry(Date beginDate, Date endDate, EntryBook entryBook) { HqlAndParametersBuilder<Entry> builder = newHqlAndParametersBuilder(); - builder.addEquals(Entry.PROPERTY_FINANCIAL_TRANSACTION + "." + FinancialTransaction.PROPERTY_ENTRY_BOOK, entryBook); - builder.addGreaterOrEquals(Entry.PROPERTY_FINANCIAL_TRANSACTION + "." + FinancialTransaction.PROPERTY_TRANSACTION_DATE, beginDate); - builder.addLowerOrEquals(Entry.PROPERTY_FINANCIAL_TRANSACTION + "." + FinancialTransaction.PROPERTY_TRANSACTION_DATE, endDate); + builder.addEquals(PROPERTY_ENTRY_BOOK, entryBook); + builder.addGreaterOrEquals(PROPERTY_TRANSACTION_DATE, beginDate); + builder.addLowerOrEquals(PROPERTY_TRANSACTION_DATE, endDate); builder.addWhereClause(Entry.PROPERTY_ACCOUNT + " = null " + "OR " + Entry.PROPERTY_VOUCHER + " = null " + "OR " + Entry.PROPERTY_VOUCHER + " = ''" + Modified: trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialPeriodTopiaDao.java =================================================================== --- trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialPeriodTopiaDao.java 2014-05-28 12:30:23 UTC (rev 3822) +++ trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialPeriodTopiaDao.java 2014-05-28 15:00:29 UTC (rev 3823) @@ -25,13 +25,12 @@ package org.chorem.lima.entity; +import org.nuiton.topia.persistence.HqlAndParametersBuilder; +import org.nuiton.topia.persistence.TopiaException; + import java.util.Date; import java.util.List; -import java.util.Map; -import com.google.common.collect.Maps; -import org.nuiton.topia.persistence.TopiaException; - public class FinancialPeriodTopiaDao extends AbstractFinancialPeriodTopiaDao<FinancialPeriod> { /** @@ -44,14 +43,11 @@ */ public FinancialPeriod findByDate(Date date) throws TopiaException { - String query = "FROM " + FinancialPeriod.class.getName() + - " WHERE beginDate <= :date" + - " AND :date <= endDate"; + HqlAndParametersBuilder<FinancialPeriod> builder = newHqlAndParametersBuilder(); + builder.addLowerOrEquals(FinancialPeriod.PROPERTY_BEGIN_DATE, date); + builder.addGreaterOrEquals(FinancialPeriod.PROPERTY_END_DATE, date); - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("date", date); - // add unique result here - FinancialPeriod financialPeriod = findUnique(query, args); + FinancialPeriod financialPeriod = findUnique(builder.getHql(), builder.getHqlParameters()); return financialPeriod; } @@ -65,16 +61,12 @@ */ public List<FinancialPeriod> findByDates(Date beginDate, Date endDate) throws TopiaException { - String query = "FROM " + FinancialPeriod.class.getName() + - " WHERE :beginDate <= beginDate" + - " AND beginDate <= :endDate" + - " ORDER by beginDate"; + HqlAndParametersBuilder<FinancialPeriod> builder = newHqlAndParametersBuilder(); + builder.addGreaterOrEquals(FinancialPeriod.PROPERTY_BEGIN_DATE, beginDate); + builder.addLowerOrEquals(FinancialPeriod.PROPERTY_BEGIN_DATE, endDate); + builder.setOrderByArguments(FinancialPeriod.PROPERTY_BEGIN_DATE); - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate", beginDate); - args.put("endDate", endDate); - // add unique result here - List<FinancialPeriod> financialPeriod = findAll(query, args); + List<FinancialPeriod> financialPeriod = findAll(builder.getHql(), builder.getHqlParameters()); return financialPeriod; } @@ -85,11 +77,11 @@ * @throws TopiaException */ public List<FinancialPeriod> findAllOrderByBeginDate() throws TopiaException { - String query = "FROM " + FinancialPeriod.class.getName() + - " ORDER BY beginDate"; - // add unique result here - List<FinancialPeriod> financialPeriod = findAll(query); + List<FinancialPeriod> financialPeriod = newQueryBuilder() + .setOrderByArguments(FinancialPeriod.PROPERTY_BEGIN_DATE) + .findAll(); + return financialPeriod; } @@ -100,12 +92,11 @@ * @throws TopiaException */ public List<FinancialPeriod> findAllUnlockedOrderByBeginDate() throws TopiaException { - String query = "FROM " + FinancialPeriod.class.getName() + - " WHERE locked = false" + - " ORDER BY beginDate"; - // add unique result here - List<FinancialPeriod> financialPeriod = findAll(query); + List<FinancialPeriod> financialPeriod = forLockedEquals(false) + .setOrderByArguments(FinancialPeriod.PROPERTY_BEGIN_DATE) + .findAll(); + return financialPeriod; } Modified: trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialStatementTopiaDao.java =================================================================== --- trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialStatementTopiaDao.java 2014-05-28 12:30:23 UTC (rev 3822) +++ trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialStatementTopiaDao.java 2014-05-28 15:00:29 UTC (rev 3823) @@ -25,10 +25,7 @@ package org.chorem.lima.entity; -import com.google.common.collect.Maps; - import java.util.List; -import java.util.Map; /** @@ -46,9 +43,11 @@ * Find all {@code FinancialStatement} ordered by topia create date. */ public List<FinancialStatement> findAllOrderedByCreateDate() { - String query = "FROM " + FinancialStatement.class.getName() + - " ORDER BY " + FinancialStatement.PROPERTY_TOPIA_CREATE_DATE; - List<FinancialStatement> result = findAll(query); + + List<FinancialStatement> result = newQueryBuilder() + .setOrderByArguments(FinancialStatement.PROPERTY_TOPIA_CREATE_DATE) + .findAll(); + return result; } @@ -56,24 +55,13 @@ * Find all {@code FinancialStatement} ordered by topia create date. */ public List<FinancialStatement> findChildrenFinancialStatement(FinancialStatement financialStatement) { - String query = "FROM " + FinancialStatement.class.getName(); - - if (financialStatement == null) { - query += " WHERE masterFinancialStatement = null"; - } else { - query += " WHERE masterFinancialStatement = :masterFinancialStatement"; - } - query += " ORDER BY " + FinancialStatement.PROPERTY_TOPIA_CREATE_DATE; - List<FinancialStatement> result; - if (financialStatement == null) { - result = findAll(query); - } else { - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("masterFinancialStatement", financialStatement); - result = findAll(query, args); - } + List<FinancialStatement> result = forMasterFinancialStatementEquals(financialStatement) + .setOrderByArguments(FinancialStatement.PROPERTY_TOPIA_CREATE_DATE) + .findAll(); + return result; + } } //FinancialStatementDAO Modified: trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialTransactionTopiaDao.java =================================================================== --- trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialTransactionTopiaDao.java 2014-05-28 12:30:23 UTC (rev 3822) +++ trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialTransactionTopiaDao.java 2014-05-28 15:00:29 UTC (rev 3823) @@ -49,7 +49,7 @@ private static final Log log = LogFactory.getLog(FinancialTransactionTopiaDao.class); - protected String getBalancedClause(String alias, boolean balanced) { + protected static String getBalancedClause(String alias, boolean balanced) { String hql = "(SELECT sum(" + Entry.PROPERTY_AMOUNT + ") FROM " + Entry.class.getName() + " WHERE " + Entry.PROPERTY_DEBIT + " = true " + " AND " + Entry.PROPERTY_FINANCIAL_TRANSACTION + " = " + alias + ") " + Modified: trunk/lima-callao/src/main/java/org/chorem/lima/entity/FiscalPeriodTopiaDao.java =================================================================== --- trunk/lima-callao/src/main/java/org/chorem/lima/entity/FiscalPeriodTopiaDao.java 2014-05-28 12:30:23 UTC (rev 3822) +++ trunk/lima-callao/src/main/java/org/chorem/lima/entity/FiscalPeriodTopiaDao.java 2014-05-28 15:00:29 UTC (rev 3823) @@ -25,11 +25,6 @@ package org.chorem.lima.entity; -import java.util.List; -import java.util.Map; - -import com.google.common.collect.Maps; -import org.hibernate.HibernateException; import org.nuiton.topia.persistence.TopiaException; /** @@ -44,21 +39,6 @@ public class FiscalPeriodTopiaDao extends AbstractFiscalPeriodTopiaDao<FiscalPeriod> { /** - * FIXME echatellier, remove this method when implemented in topia - * just overriden to use merge() instead of saveOrUpdate() - */ - @Override - public FiscalPeriod update(FiscalPeriod fiscalPeriod) throws TopiaException { - try { - fiscalPeriod = (FiscalPeriod)topiaHibernateSupport.getHibernateSession().merge(fiscalPeriod); - topiaFiresSupport.warnOnUpdateEntity(fiscalPeriod); - return fiscalPeriod; - } catch (HibernateException ex) { - throw new TopiaException(ex); - } - } - - /** * Find fiscal period by financial period. * * @param financialPeriod financial period @@ -66,17 +46,9 @@ * @throws TopiaException */ public FiscalPeriod findByFinancialPeriod(FinancialPeriod financialPeriod) throws TopiaException { - String query = "FROM " + FiscalPeriod.class.getName() + - " WHERE :financialPeriod in elements(financialPeriod)"; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("financialPeriod", financialPeriod); + FiscalPeriod result = forFinancialPeriodContains(financialPeriod).findUniqueOrNull(); - List<FiscalPeriod> fiscalPeriods = findAll(query, args); - FiscalPeriod result = null; - if (!fiscalPeriods.isEmpty()) { - result = fiscalPeriods.get(0); - } return result; } @@ -87,14 +59,10 @@ * @throws TopiaException */ public FiscalPeriod getLastFiscalPeriod() throws TopiaException { - String query = "FROM " + FiscalPeriod.class.getName() + - " ORDER BY endDate desc"; - List<FiscalPeriod> fiscalPeriods = findAll(query); - FiscalPeriod result = null; - if (!fiscalPeriods.isEmpty()) { - result = fiscalPeriods.get(0); - } + FiscalPeriod result = newQueryBuilder() + .setOrderByArguments(FinancialPeriod.PROPERTY_END_DATE + " DESC") + .findFirstOrNull(); return result; } @@ -106,14 +74,10 @@ * @throws TopiaException */ public FiscalPeriod getFirstFiscalPeriod() throws TopiaException { - String query = "FROM " + FiscalPeriod.class.getName() + - " ORDER BY endDate"; + FiscalPeriod result = newQueryBuilder() + .setOrderByArguments(FinancialPeriod.PROPERTY_END_DATE) + .findFirstOrNull(); - List<FiscalPeriod> fiscalPeriods = findAll(query); - FiscalPeriod result = null; - if (!fiscalPeriods.isEmpty()) { - result = fiscalPeriods.get(0); - } return result; } @@ -124,15 +88,11 @@ * @throws TopiaException */ public FiscalPeriod getLastUnlockedFiscalPeriod() throws TopiaException { - String query = "FROM " + FiscalPeriod.class.getName() + - " WHERE locked = false" + - " ORDER BY endDate desc"; - List<FiscalPeriod> fiscalPeriods = findAll(query); - FiscalPeriod result = null; - if (!fiscalPeriods.isEmpty()) { - result = fiscalPeriods.get(0); - } + FiscalPeriod result = forLockedEquals(false) + .setOrderByArguments(FinancialPeriod.PROPERTY_END_DATE + " DESC") + .findFirstOrNull(); + return result; } } Modified: trunk/lima-callao/src/main/java/org/chorem/lima/entity/VatStatementTopiaDao.java =================================================================== --- trunk/lima-callao/src/main/java/org/chorem/lima/entity/VatStatementTopiaDao.java 2014-05-28 12:30:23 UTC (rev 3822) +++ trunk/lima-callao/src/main/java/org/chorem/lima/entity/VatStatementTopiaDao.java 2014-05-28 15:00:29 UTC (rev 3823) @@ -25,10 +25,9 @@ package org.chorem.lima.entity; -import com.google.common.collect.Maps; +import org.nuiton.topia.persistence.HqlAndParametersBuilder; import java.util.List; -import java.util.Map; /** @@ -46,9 +45,11 @@ * Find all {@code VatStatement} ordered by topia create date. */ public List<VatStatement> findAllOrderedByCreateDate() { - String query = "FROM " + VatStatement.class.getName() + - " ORDER BY " + VatStatement.PROPERTY_TOPIA_CREATE_DATE; - List<VatStatement> result = findAll(query); + + List<VatStatement> result = newQueryBuilder() + .setOrderByArguments(VatStatement.PROPERTY_TOPIA_CREATE_DATE) + .findAll(); + return result; } @@ -59,23 +60,11 @@ * @return children VatStatement */ public List<VatStatement> getChildrenVatStatement(VatStatement masterVatStatement) { - String query = "FROM " + VatStatement.class.getName(); - - if (masterVatStatement == null) { - query += " WHERE masterVatStatement = null"; - } else { - query += " WHERE masterVatStatement = :masterVatStatement"; - } - - query += " ORDER BY " + VatStatement.PROPERTY_TOPIA_CREATE_DATE; - List<VatStatement> result; - if (masterVatStatement == null) { - result = findAll(query); - } else { - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("masterVatStatement", masterVatStatement); - result = findAll(query, args); - } + + List<VatStatement> result = forMasterVatStatementEquals(masterVatStatement) + .setOrderByArguments(VatStatement.PROPERTY_TOPIA_CREATE_DATE) + .findAll(); + return result; } @@ -88,15 +77,11 @@ * @return statement like label */ public VatStatement findVatStatementByLabel(String label) { - String query = "FROM " + VatStatement.class.getName() + - " WHERE label LIKE :label"; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("label", "%" + label + "%"); - List<VatStatement> statements = findAll(query, args); - VatStatement result = null; - if (!statements.isEmpty()) { - result = statements.get(0); - } + + HqlAndParametersBuilder<VatStatement> builder = newHqlAndParametersBuilder(); + builder.addLike(VatStatement.PROPERTY_LABEL, "%" + label + "%"); + VatStatement result = findAnyOrNull(builder.getHql(), builder.getHqlParameters()); + return result; }