|
From: <pe...@us...> - 2003-12-26 22:50:55
|
Update of /cvsroot/neuclear/neuclear-ledger/src/java/org/neuclear/ledger/implementations
In directory sc8-pr-cvs1:/tmp/cvs-serv2665/src/java/org/neuclear/ledger/implementations
Modified Files:
SQLLedger.java
Log Message:
Mainly fixes to SQLLedger to support the schema generated by the new EntityModel
Index: SQLLedger.java
===================================================================
RCS file: /cvsroot/neuclear/neuclear-ledger/src/java/org/neuclear/ledger/implementations/SQLLedger.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** SQLLedger.java 24 Dec 2003 00:24:32 -0000 1.6
--- SQLLedger.java 26 Dec 2003 22:50:52 -0000 1.7
***************
*** 13,18 ****
--- 13,22 ----
import org.neuclear.commons.sql.entities.EntityModel;
import org.neuclear.commons.NeuClearException;
+ import org.neuclear.commons.crypto.CryptoTools;
import org.neuclear.ledger.*;
import org.neuclear.ledger.InvalidTransactionException;
+ import org.neuclear.id.NSTools;
+ import org.bouncycastle.crypto.Digest;
+ import org.bouncycastle.crypto.digests.SHA1Digest;
import javax.transaction.*;
***************
*** 48,61 ****
// create(this.con);
createLedger(id);
-
}
public void createLedger(String name) throws LowlevelLedgerException {
try {
! final PreparedStatement stmt = prepQuery("insert into ledger (id,title,created) values (?,?,now())");
! stmt.setString(1, name);
! stmt.setString(2, name);
! stmt.execute();
} catch (SQLException e) {
rollbackUT();
--- 52,70 ----
// create(this.con);
+ create(con);
createLedger(id);
}
public void createLedger(String name) throws LowlevelLedgerException {
try {
! final PreparedStatement query=prepQuery("select * from ledger where id= ?");
! query.setString(1,name);
! ResultSet rs=query.executeQuery();
! if (!rs.next()) {
! final PreparedStatement stmt = prepQuery("insert into ledger (id,title,created) values (?,?,now())");
! stmt.setString(1, name);
! stmt.setString(2, name);
! stmt.execute();
! }
} catch (SQLException e) {
rollbackUT();
***************
*** 64,68 ****
}
! public static void create(ConnectionSource con) {
try {
Connection connection=con.getConnection();
--- 73,77 ----
}
! public static synchronized void create(ConnectionSource con) {
try {
Connection connection=con.getConnection();
***************
*** 163,172 ****
*/
public final PostedTransaction performTransaction(final UnPostedTransaction transaction) throws UnBalancedTransactionException, LowlevelLedgerException, InvalidTransactionException {
- final String newid;
if (!transaction.isBalanced()) {
throw new UnBalancedTransactionException(this, transaction);
}
try {
! final long xid = insertTransaction(transaction);
final Iterator items = transaction.getItems();
while (items.hasNext()) {
--- 172,180 ----
*/
public final PostedTransaction performTransaction(final UnPostedTransaction transaction) throws UnBalancedTransactionException, LowlevelLedgerException, InvalidTransactionException {
if (!transaction.isBalanced()) {
throw new UnBalancedTransactionException(this, transaction);
}
try {
! final String xid = insertTransaction(transaction);
final Iterator items = transaction.getItems();
while (items.hasNext()) {
***************
*** 174,183 ****
insertTransactionItem(xid, item);
}
! newid = Long.toString(xid);
} catch (SQLException e) {
rollbackUT();
throw new LowlevelLedgerException(this, e);
}
- return this.createTransaction(transaction, newid);
}
--- 182,190 ----
insertTransactionItem(xid, item);
}
! return this.createTransaction(transaction, xid);
} catch (SQLException e) {
rollbackUT();
throw new LowlevelLedgerException(this, e);
}
}
***************
*** 191,200 ****
*/
public final PostedHeldTransaction performHeldTransaction(final UnPostedHeldTransaction transaction) throws UnBalancedTransactionException, LowlevelLedgerException, InvalidTransactionException {
- final String newid;
if (!transaction.isBalanced()) {
throw new UnBalancedTransactionException(this, transaction);
}
try {
! final long xid = insertHeldTransaction(transaction);
final Iterator items = transaction.getItems();
while (items.hasNext()) {
--- 198,206 ----
*/
public final PostedHeldTransaction performHeldTransaction(final UnPostedHeldTransaction transaction) throws UnBalancedTransactionException, LowlevelLedgerException, InvalidTransactionException {
if (!transaction.isBalanced()) {
throw new UnBalancedTransactionException(this, transaction);
}
try {
! final String xid = insertHeldTransaction(transaction);
final Iterator items = transaction.getItems();
while (items.hasNext()) {
***************
*** 202,206 ****
insertHeldTransactionItem(xid, item);
}
! newid = Long.toString(xid);
} catch (SQLException e) {
rollbackUT();
--- 208,212 ----
insertHeldTransactionItem(xid, item);
}
! return this.createHeldTransaction(transaction, xid);
} catch (SQLException e) {
rollbackUT();
***************
*** 209,213 ****
throw new LowlevelLedgerException(this, e);
}
- return this.createHeldTransaction(transaction, newid);
}
--- 215,218 ----
***************
*** 274,314 ****
}
! private long insertTransaction(final UnPostedTransaction transaction) throws SQLException, LowlevelLedgerException {
! final PreparedStatement tranInsert = prepQuery("insert into transaction (valuetime,comment,ledgerid) values (?,?,?)");
! tranInsert.setTimestamp(1, SQLTools.toTimestamp(transaction.getTransactionTime()));
! tranInsert.setString(2, transaction.getComment());
! tranInsert.setString(3, getId());
tranInsert.execute();
! final PreparedStatement tranID = prepQuery("select last_insert_id()");
! final ResultSet rs = tranID.executeQuery();
! if (rs.next())
! return rs.getLong(1);
! else {
! rollbackUT();
! throw new LowlevelLedgerException(this, "We couldnt get the id of the transaction. Safer to Rollback.");
! }
}
! private long insertHeldTransaction(final UnPostedHeldTransaction transaction) throws SQLException, LowlevelLedgerException {
! final PreparedStatement tranInsert = prepQuery("insert into held_transaction (valuetime,comment,held_until,ledgerid) values (?,?,?,?)");
! tranInsert.setTimestamp(3, SQLTools.toTimestamp(transaction.getExpiryTime()));
! tranInsert.setTimestamp(1, SQLTools.toTimestamp(transaction.getTransactionTime()));
! tranInsert.setString(2, transaction.getComment());
! tranInsert.setString(4, getId());
tranInsert.execute();
! final PreparedStatement tranID = prepQuery("select id from held_transaction where id=last_insert_id()");
! final ResultSet rs = tranID.executeQuery();
! if (rs.next())
! return rs.getLong(1);
! else {
! rollbackUT();
! throw new LowlevelLedgerException(this, "We couldnt get the id of the transaction. Safer to Rollback.");
! }
}
! private void insertTransactionItem(final long xid, final TransactionItem item) throws SQLException, LowlevelLedgerException {
final PreparedStatement itemInsert = prepQuery("insert into entry (transactionid,bookid,amount) values (?,?,?)");
! itemInsert.setLong(1, xid);
itemInsert.setString(2, item.getBook().getBookID());
itemInsert.setDouble(3, item.getAmount());
--- 279,317 ----
}
! private String createTransactionID(){
! final Digest dig = new SHA1Digest();
! final StringBuffer buffy = new StringBuffer(getId());
! buffy.append('!');
! buffy.append(System.currentTimeMillis());
! buffy.append(CryptoTools.createRandomID());
! return buffy.toString();
! }
! private String insertTransaction(final UnPostedTransaction transaction) throws SQLException, LowlevelLedgerException {
! final PreparedStatement tranInsert = prepQuery("insert into transaction (id,valuetime,comment,ledgerid) values (?,?,?,?)");
! final String xid = createTransactionID();
! tranInsert.setString(1,xid);
! tranInsert.setTimestamp(2, SQLTools.toTimestamp(transaction.getTransactionTime()));
! tranInsert.setString(3, transaction.getComment());
! tranInsert.setString(4, getId());
tranInsert.execute();
! return xid;
}
! private String insertHeldTransaction(final UnPostedHeldTransaction transaction) throws SQLException, LowlevelLedgerException {
! final String xid = createTransactionID();
! final PreparedStatement tranInsert = prepQuery("insert into held_transaction (id,valuetime,comment,held_until,ledgerid,cancelled) values (?,?,?,?,?,0)");
! tranInsert.setString(1,xid);
! tranInsert.setTimestamp(2, SQLTools.toTimestamp(transaction.getTransactionTime()));
! tranInsert.setString(3, transaction.getComment());
! tranInsert.setTimestamp(4, SQLTools.toTimestamp(transaction.getExpiryTime()));
! tranInsert.setString(5, getId());
tranInsert.execute();
! return xid;
}
! private void insertTransactionItem(final String xid, final TransactionItem item) throws SQLException, LowlevelLedgerException {
final PreparedStatement itemInsert = prepQuery("insert into entry (transactionid,bookid,amount) values (?,?,?)");
! itemInsert.setString(1, xid);
itemInsert.setString(2, item.getBook().getBookID());
itemInsert.setDouble(3, item.getAmount());
***************
*** 316,322 ****
}
! private void insertHeldTransactionItem(final long xid, final TransactionItem item) throws SQLException, LowlevelLedgerException {
! final PreparedStatement itemInsert = prepQuery("insert into held_entry (held_transactionid,bookid,amount,ack) values (?,?,?,1)");
! itemInsert.setLong(1, xid);
itemInsert.setString(2, item.getBook().getBookID());
itemInsert.setDouble(3, item.getAmount());
--- 319,325 ----
}
! private void insertHeldTransactionItem(final String xid, final TransactionItem item) throws SQLException, LowlevelLedgerException {
! final PreparedStatement itemInsert = prepQuery("insert into held_entry (held_transactionid,bookid,amount) values (?,?,?)");
! itemInsert.setString(1, xid);
itemInsert.setString(2, item.getBook().getBookID());
itemInsert.setDouble(3, item.getAmount());
***************
*** 327,343 ****
* Searches for a Transaction based on its Transaction ID
*
! * @param idstring A valid ID
* @return The Transaction object
*/
! public final PostedTransaction findTransaction(final String idstring) throws LowlevelLedgerException, UnknownTransactionException {
! final long id = Long.parseLong(idstring);
try {
PreparedStatement stmt = prepQuery("select valuetime,comment from transaction where id=? and ledgerid=?");
! stmt.setLong(1, id);
stmt.setString(2, getId());
ResultSet rs = stmt.executeQuery();
if (!rs.next()) {
! throw new UnknownTransactionException(this, idstring);
}
final Date started = rs.getTimestamp(1);
--- 330,345 ----
* Searches for a Transaction based on its Transaction ID
*
! * @param xid A valid ID
* @return The Transaction object
*/
! public final PostedTransaction findTransaction(final String xid) throws LowlevelLedgerException, UnknownTransactionException {
try {
PreparedStatement stmt = prepQuery("select valuetime,comment from transaction where id=? and ledgerid=?");
! stmt.setString(1, xid);
stmt.setString(2, getId());
ResultSet rs = stmt.executeQuery();
if (!rs.next()) {
! throw new UnknownTransactionException(this, xid);
}
final Date started = rs.getTimestamp(1);
***************
*** 346,355 ****
final UnPostedTransaction transaction = new UnPostedTransaction(this, comment, started);
stmt = prepQuery("select bookid,amount from entry where transactionid=?");
! stmt.setLong(1, id);
rs = stmt.executeQuery();
while (rs.next())
transaction.addItem(getBook(rs.getString(1)), rs.getDouble(2));
! return this.createTransaction(transaction, idstring);
} catch (SQLException e) {
--- 348,357 ----
final UnPostedTransaction transaction = new UnPostedTransaction(this, comment, started);
stmt = prepQuery("select bookid,amount from entry where transactionid=?");
! stmt.setString(1, xid);
rs = stmt.executeQuery();
while (rs.next())
transaction.addItem(getBook(rs.getString(1)), rs.getDouble(2));
! return this.createTransaction(transaction, xid);
} catch (SQLException e) {
***************
*** 365,381 ****
* Searches for a Held Transaction based on its Transaction ID
*
! * @param idstring A valid ID
* @return The Transaction object
*/
! public final PostedHeldTransaction findHeldTransaction(final String idstring) throws LowlevelLedgerException, UnknownTransactionException {
! final long id = Long.parseLong(idstring);
try {
PreparedStatement stmt = prepQuery("select valuetime,held_until,comment from held_transaction where id=? and ledgerid=?");
! stmt.setLong(1, id);
stmt.setString(2, getId());
ResultSet rs = stmt.executeQuery();
if (!rs.next()) {
! throw new UnknownTransactionException(this, idstring);
}
final Date started = rs.getTimestamp(1);
--- 367,382 ----
* Searches for a Held Transaction based on its Transaction ID
*
! * @param xid A valid ID
* @return The Transaction object
*/
! public final PostedHeldTransaction findHeldTransaction(final String xid) throws LowlevelLedgerException, UnknownTransactionException {
try {
PreparedStatement stmt = prepQuery("select valuetime,held_until,comment from held_transaction where id=? and ledgerid=?");
! stmt.setString(1, xid);
stmt.setString(2, getId());
ResultSet rs = stmt.executeQuery();
if (!rs.next()) {
! throw new UnknownTransactionException(this, xid);
}
final Date started = rs.getTimestamp(1);
***************
*** 385,394 ****
final UnPostedHeldTransaction transaction = new UnPostedHeldTransaction(this, comment, started, ended);
stmt = prepQuery("select bookid,amount from held_entry where held_transactionid=?");
! stmt.setLong(1, id);
rs = stmt.executeQuery();
while (rs.next())
transaction.addItem(getBook(rs.getString(1)), rs.getDouble(2));
! return this.createHeldTransaction(transaction, idstring);
} catch (SQLException e) {
--- 386,395 ----
final UnPostedHeldTransaction transaction = new UnPostedHeldTransaction(this, comment, started, ended);
stmt = prepQuery("select bookid,amount from held_entry where held_transactionid=?");
! stmt.setString(1, xid);
rs = stmt.executeQuery();
while (rs.next())
transaction.addItem(getBook(rs.getString(1)), rs.getDouble(2));
! return this.createHeldTransaction(transaction, xid);
} catch (SQLException e) {
***************
*** 413,417 ****
stmt.setString(1, book.getBookID());
! stmt.setTimestamp(2, new Timestamp(time.getTime()));
stmt.setString(3, getId());
--- 414,418 ----
stmt.setString(1, book.getBookID());
! stmt.setTimestamp(2, new Timestamp(time.getTime()+1));
stmt.setString(3, getId());
***************
*** 446,450 ****
+ ") u "
);
! final Timestamp ts = SQLTools.toTimestamp(time);
stmt.setString(1, book.getBookID());
stmt.setTimestamp(2, ts);
--- 447,451 ----
+ ") u "
);
! final Timestamp ts = new Timestamp(time.getTime()+1);
stmt.setString(1, book.getBookID());
stmt.setTimestamp(2, ts);
***************
*** 493,497 ****
public final Book getBook(final String bookID) throws UnknownBookException, LowlevelLedgerException {
try {
! final PreparedStatement stmt = prepQuery("select comment from book where id=?");
stmt.setString(1, bookID);
final ResultSet rs = stmt.executeQuery();
--- 494,498 ----
public final Book getBook(final String bookID) throws UnknownBookException, LowlevelLedgerException {
try {
! final PreparedStatement stmt = prepQuery("select title from book where id=?");
stmt.setString(1, bookID);
final ResultSet rs = stmt.executeQuery();
|