|
From: Pelle B. <pe...@us...> - 2004-04-06 23:05:26
|
Update of /cvsroot/neuclear/neuclear-ledger-hibernate/src/java/org/neuclear/ledger/hibernate In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3499/src/java/org/neuclear/ledger/hibernate Modified Files: HibernateLedger.java Log Message: Updated with new API Changes Index: HibernateLedger.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-ledger-hibernate/src/java/org/neuclear/ledger/hibernate/HibernateLedger.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** HibernateLedger.java 31 Mar 2004 23:11:30 -0000 1.12 --- HibernateLedger.java 6 Apr 2004 22:52:34 -0000 1.13 *************** *** 115,118 **** --- 115,126 ---- Session ses = factory.openSession(); net.sf.hibernate.Transaction t = ses.beginTransaction(); + Iterator iter = trans.getItems(); + // First lets check the balances + while (iter.hasNext()) { + TransactionItem item = (TransactionItem) iter.next(); + if (item.getAmount() < 0 && getAvailableBalance(item.getBook()) + item.getAmount() < 0) + throw new InsufficientFundsException(null, item.getBook(), item.getAmount()); + } + HHeld posted = new HHeld(trans, new Date()); ses.save(posted); *************** *** 135,139 **** * */ ! public void performCancelHold(PostedHeldTransaction hold) throws LowlevelLedgerException, UnknownTransactionException { try { Session ses = factory.openSession(); --- 143,147 ---- * */ ! public Date performCancelHold(PostedHeldTransaction hold) throws LowlevelLedgerException, UnknownTransactionException { try { Session ses = factory.openSession(); *************** *** 145,148 **** --- 153,158 ---- ses.saveOrUpdate(posted); t.commit(); + ses.close(); + return new Date(); } else { t.rollback(); *************** *** 151,155 **** } - ses.close(); } catch (HibernateException e) { throw new LowlevelLedgerException(e); --- 161,164 ---- *************** *** 207,211 **** * @return The Transaction object */ ! public Date getTransactionTime(String id) throws LowlevelLedgerException, UnknownTransactionException, InvalidTransactionException, UnknownBookException { try { Session ses = factory.openSession(); --- 216,220 ---- * @return The Transaction object */ ! public Date getTransactionTime(String id) throws LowlevelLedgerException, UnknownTransactionException { try { Session ses = factory.openSession(); *************** *** 252,256 **** try { Session ses = factory.openSession(); ! Query q = ses.createQuery("select sum(item.amount) from HTransactionItem item where item.book = ?"); q.setString(0, book); Iterator iter = q.iterate(); --- 261,265 ---- try { Session ses = factory.openSession(); ! Query q = ses.createQuery("select sum(item.amount) from HTransactionItem item where item.book = ? and item.transaction.receipt is not null"); q.setString(0, book); Iterator iter = q.iterate(); *************** *** 274,278 **** try { Session ses = factory.openSession(); ! Query q = ses.createQuery("select sum(item.amount) from HHeldItem item where item.book = ? and item.amount<0 and item.held.expiryTime > ? and item.held.cancelled=false and item.held.completedId is null"); q.setString(0, book); q.setTimestamp(1, new Date()); --- 283,287 ---- try { Session ses = factory.openSession(); ! Query q = ses.createQuery("select sum(item.amount) from HHeldItem item where item.book = ? and item.amount<0 and item.held.expiryTime > ? and item.held.cancelled=false and item.held.completedId is null and item.held.receipt is not null"); q.setString(0, book); q.setTimestamp(1, new Date()); *************** *** 316,319 **** --- 325,356 ---- } + public boolean transactionExists(String id) throws LowlevelLedgerException { + try { + Session ses = factory.openSession(); + Query q = ses.createQuery("select item.id from HTransaction item where item.id = ?"); + q.setString(0, id); + Iterator iter = q.iterate(); + final boolean answer = (iter.hasNext()); + ses.close(); + return answer; + } catch (HibernateException e) { + throw new LowlevelLedgerException(e); + } + } + + public boolean heldTransactionExists(String id) throws LowlevelLedgerException { + try { + Session ses = factory.openSession(); + Query q = ses.createQuery("select item.id from HHeld item where item.id = ?"); + q.setString(0, id); + Iterator iter = q.iterate(); + final boolean answer = (iter.hasNext()); + ses.close(); + return answer; + } catch (HibernateException e) { + throw new LowlevelLedgerException(e); + } + } + /** * Searches for a Held Transaction based on its Transaction ID *************** *** 357,360 **** --- 394,416 ---- } + public void setHeldReceiptId(String id, String receipt) throws LowlevelLedgerException, UnknownTransactionException { + try { + Session ses = factory.openSession(); + net.sf.hibernate.Transaction t = ses.beginTransaction(); + HHeld tran = (HHeld) ses.get(HHeld.class, id); + if (tran == null) { + ses.close(); + throw new UnknownTransactionException(this, id); + } + tran.setReceipt(receipt); + t.commit(); + ses.close(); + } catch (HibernateException e) { + throw new LowlevelLedgerException(e); + } + + + } + public double getTestBalance() throws LowlevelLedgerException { try { |