|
From: Pelle B. <pe...@us...> - 2004-03-25 19:15:08
|
Update of /cvsroot/neuclear/neuclear-ledger-hibernate/src/java/org/neuclear/ledger/hibernate In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6315/src/java/org/neuclear/ledger/hibernate Modified Files: HHeld.hbm.xml HHeld.java HTransaction.java HibernateLedger.java Log Message: PostedTransaction and friend now verify the unpostedtransaction is balanced. Updated schema for HHeld to include a cancelled field and a completed field. (The latter doesnt yet work right). Need to read more Hibernate docs to find out why. Index: HHeld.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-ledger-hibernate/src/java/org/neuclear/ledger/hibernate/HHeld.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** HHeld.java 23 Mar 2004 21:57:48 -0000 1.1 --- HHeld.java 25 Mar 2004 19:04:17 -0000 1.2 *************** *** 26,29 **** --- 26,31 ---- this.expiryTime = tran.getExpiryTime(); this.comment = tran.getComment(); + this.cancelled = false; + this.completed = null; final List ol = tran.getItemList(); this.items = new HashSet(ol.size()); *************** *** 82,87 **** } public PostedHeldTransaction createPosted() throws InvalidTransactionException { ! UnPostedHeldTransaction unp = new UnPostedHeldTransaction(id, requestId, comment, expiryTime); Iterator iter = items.iterator(); while (iter.hasNext()) { --- 84,105 ---- } + public boolean isCancelled() { + return cancelled; + } + + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } + + public HTransaction getCompleted() { + return completed; + } + + public void setCompleted(HTransaction transaction) { + this.completed = transaction; + } + public PostedHeldTransaction createPosted() throws InvalidTransactionException { ! UnPostedHeldTransaction unp = new UnPostedHeldTransaction(requestId, id, comment, expiryTime); Iterator iter = items.iterator(); while (iter.hasNext()) { *************** *** 98,100 **** --- 116,120 ---- private String comment; private Set items; + private boolean cancelled; + private HTransaction completed; } Index: HHeld.hbm.xml =================================================================== RCS file: /cvsroot/neuclear/neuclear-ledger-hibernate/src/java/org/neuclear/ledger/hibernate/HHeld.hbm.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** HHeld.hbm.xml 25 Mar 2004 16:45:08 -0000 1.3 --- HHeld.hbm.xml 25 Mar 2004 19:04:17 -0000 1.4 *************** *** 26,29 **** --- 26,34 ---- not-null="true"/> </property> + <property name="cancelled" type="boolean"> + <column name="cancelled" + not-null="true"/> + </property> + <one-to-one name="completed" class="org.neuclear.ledger.hibernate.HTransaction" cascade="none" foreign-key="completed_id"/> <property name="comment"> <column name="comment" sql-type="varchar(255)" Index: HibernateLedger.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-ledger-hibernate/src/java/org/neuclear/ledger/hibernate/HibernateLedger.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** HibernateLedger.java 25 Mar 2004 16:45:08 -0000 1.6 --- HibernateLedger.java 25 Mar 2004 19:04:17 -0000 1.7 *************** *** 140,146 **** net.sf.hibernate.Transaction t = ses.beginTransaction(); HHeld posted = (HHeld) ses.get(HHeld.class, hold.getId()); ! if (posted != null) ! ses.delete(posted); ! t.commit(); ses.close(); } catch (HibernateException e) { --- 140,154 ---- net.sf.hibernate.Transaction t = ses.beginTransaction(); HHeld posted = (HHeld) ses.get(HHeld.class, hold.getId()); ! if (posted != null) { ! ! posted.setCancelled(true); ! ses.saveOrUpdate(posted); ! t.commit(); ! } else { ! t.rollback(); ! ses.close(); ! throw new UnknownTransactionException(this, hold.getId()); ! } ! ses.close(); } catch (HibernateException e) { *************** *** 170,177 **** net.sf.hibernate.Transaction t = ses.beginTransaction(); HHeld posted = (HHeld) ses.get(HHeld.class, hold.getId()); final Date time = new Date(); ! if (posted.getExpiryTime().before(time)) { ! ses.delete(posted); ! t.commit(); ses.close(); throw new TransactionExpiredException(this, hold); --- 178,188 ---- net.sf.hibernate.Transaction t = ses.beginTransaction(); HHeld posted = (HHeld) ses.get(HHeld.class, hold.getId()); + if (posted == null) { + t.rollback(); + ses.close(); + throw new UnknownTransactionException(this, hold.getId()); + } final Date time = new Date(); ! if (posted.getExpiryTime().before(time) || posted.isCancelled() || posted.getCompleted() != null) { ses.close(); throw new TransactionExpiredException(this, hold); *************** *** 180,185 **** htran.setComment(comment); ses.save(htran); ! if (posted != null) ! ses.delete(posted); t.commit(); ses.close(); --- 191,196 ---- htran.setComment(comment); ses.save(htran); ! posted.setCompleted(htran); ! ses.update(htran); t.commit(); ses.close(); *************** *** 263,267 **** 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 < ?"); q.setString(0, book); q.setTimestamp(1, new Date()); --- 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.completed = null"); q.setString(0, book); q.setTimestamp(1, new Date()); Index: HTransaction.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-ledger-hibernate/src/java/org/neuclear/ledger/hibernate/HTransaction.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** HTransaction.java 24 Mar 2004 23:13:21 -0000 1.3 --- HTransaction.java 25 Mar 2004 19:04:17 -0000 1.4 *************** *** 82,86 **** public PostedTransaction createPosted() throws InvalidTransactionException { ! UnPostedTransaction unp = new UnPostedTransaction(id, requestId, comment); Iterator iter = items.iterator(); while (iter.hasNext()) { --- 82,86 ---- public PostedTransaction createPosted() throws InvalidTransactionException { ! UnPostedTransaction unp = new UnPostedTransaction(requestId, id, comment); Iterator iter = items.iterator(); while (iter.hasNext()) { |