org.neuclear.ledger.simple
Class SimpleLedgerController

java.lang.Object
  extended byorg.neuclear.ledger.LedgerController
      extended byorg.neuclear.ledger.simple.SimpleLedgerController
All Implemented Interfaces:
LedgerBrowser
Direct Known Subclasses:
PopulatedSimpleLedger

public class SimpleLedgerController
extends LedgerController
implements LedgerBrowser

This implementation is very simple and only is meant for testing. It uses the Java Collection for the implementation and is in no way thread safe or supportive of transactions.


Constructor Summary
SimpleLedgerController(java.lang.String name)
           
 
Method Summary
 BookBrowser browse(java.lang.String book)
           
 BookBrowser browse(java.lang.String ledger, java.lang.String book)
           
 BookListBrowser browseBooks(java.lang.String ledger)
           
 BookBrowser browseFrom(java.lang.String book, java.util.Date from)
           
 BookBrowser browseFrom(java.lang.String ledger, java.lang.String book, java.util.Date from)
           
 BookBrowser browseInteractions(java.lang.String book, java.lang.String counterparty)
           
 BookBrowser browseInteractions(java.lang.String ledger, java.lang.String book, java.lang.String counterparty)
           
 PortfolioBrowser browsePortfolio(Book book)
           
 PortfolioBrowser browsePortfolioInteractions(Book book, Book counterparty)
           
 BookBrowser browseRange(java.lang.String book, java.util.Date from, java.util.Date until)
           
 BookBrowser browseRange(java.lang.String ledger, java.lang.String book, java.util.Date from, java.util.Date until)
           
 void close()
           
 boolean existsLedger(java.lang.String id)
           
 PostedHeldTransaction findHeldTransaction(java.lang.String idstring)
          Searches for a Held Transaction based on its Transaction ID
 double getAvailableBalance(java.lang.String ledger, java.lang.String book)
          Calculate the available balance at a given time.
 double getBalance(java.lang.String ledger, java.lang.String book)
          Calculate the true accounting balance at a given time.
 Book getBook(java.lang.String id)
           
 long getBookCount(java.lang.String ledger)
           
 Ledger getLedger(java.lang.String id)
           
 double getTestBalance(java.lang.String ledger)
           
 long getTransactionCount(java.lang.String ledger)
           
 java.util.Date getTransactionTime(java.lang.String id)
          Searches for a Transaction based on its Transaction ID
 boolean heldTransactionExists(java.lang.String id)
           
 java.util.Date performCancelHold(PostedHeldTransaction hold)
          Cancels a Held Transaction.
 PostedTransaction performCompleteHold(PostedHeldTransaction hold, Book origbook, Book newbook, double amount, java.lang.String comment)
          Completes a held transaction.
 PostedTransaction performCompleteHold(PostedHeldTransaction hold, double amount, java.lang.String comment)
          Completes a held transaction.
 PostedHeldTransaction performHeldTransfer(UnPostedHeldTransaction trans)
          The basic interface for creating Transactions in the database.
 PostedTransaction performTransaction(UnPostedTransaction trans)
          The basic interface for creating Transactions in the database.
 PostedTransaction performVerifiedTransfer(UnPostedTransaction trans)
          Similar to a transaction but guarantees that there wont be any negative balances left after the transaction.
 Book registerBook(java.lang.String id, java.lang.String nickname, java.lang.String type, java.lang.String source, java.lang.String registrationid)
          Register a Book in the system
 Ledger registerLedger(java.lang.String id, java.lang.String nickname, java.lang.String type, java.lang.String source, java.lang.String registrationid, java.lang.String unit, int decimal)
           
 void setHeldReceiptId(java.lang.String id, java.lang.String receipt)
           
 void setReceiptId(java.lang.String id, java.lang.String receipt)
           
 java.lang.String toString()
           
 boolean transactionExists(java.lang.String id)
           
 
Methods inherited from class org.neuclear.ledger.LedgerController
cancel, complete, complete, getAvailableBalance, getBalance, getBookCount, getId, getTestBalance, getTransactionCount, hold, hold, isBalanced, isBalanced, transfer, transfer, transfer, verifiedTransfer, verifiedTransfer
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SimpleLedgerController

public SimpleLedgerController(java.lang.String name)
Method Detail

existsLedger

public boolean existsLedger(java.lang.String id)
Specified by:
existsLedger in class LedgerController

performTransaction

public PostedTransaction performTransaction(UnPostedTransaction trans)
                                     throws UnBalancedTransactionException,
                                            InvalidTransactionException
The basic interface for creating Transactions in the database. The implementing class takes this transacion information and stores it with an automatically generated uniqueid. This id is returned as an identifier of the transaction.

Specified by:
performTransaction in class LedgerController
Parameters:
trans - Transaction to perform
Returns:
Unique ID
Throws:
UnBalancedTransactionException
InvalidTransactionException

performVerifiedTransfer

public PostedTransaction performVerifiedTransfer(UnPostedTransaction trans)
                                          throws UnBalancedTransactionException,
                                                 LowlevelLedgerException,
                                                 InvalidTransactionException
Similar to a transaction but guarantees that there wont be any negative balances left after the transaction.

Specified by:
performVerifiedTransfer in class LedgerController
Parameters:
trans - Transaction to perform
Returns:
The reference to the transaction
Throws:
UnBalancedTransactionException
LowlevelLedgerException
InvalidTransactionException

performHeldTransfer

public PostedHeldTransaction performHeldTransfer(UnPostedHeldTransaction trans)
                                          throws UnBalancedTransactionException,
                                                 LowlevelLedgerException,
                                                 InvalidTransactionException
The basic interface for creating Transactions in the database. The implementing class takes this transacion information and stores it with an automatically generated uniqueid. This id is returned as an identifier of the transaction.

Specified by:
performHeldTransfer in class LedgerController
Parameters:
trans - Transaction to perform
Returns:
Unique ID
Throws:
UnBalancedTransactionException
LowlevelLedgerException
InvalidTransactionException

performCancelHold

public java.util.Date performCancelHold(PostedHeldTransaction hold)
                                 throws LowlevelLedgerException,
                                        UnknownTransactionException
Cancels a Held Transaction.

Specified by:
performCancelHold in class LedgerController
Parameters:
hold -
Throws:
LowlevelLedgerException
UnknownTransactionException

performCompleteHold

public PostedTransaction performCompleteHold(PostedHeldTransaction hold,
                                             double amount,
                                             java.lang.String comment)
                                      throws InvalidTransactionException,
                                             LowlevelLedgerException,
                                             TransactionExpiredException,
                                             UnknownTransactionException
Completes a held transaction. Which means: cancelling the hold and performing the transfer with the given updated amount and comment.

Specified by:
performCompleteHold in class LedgerController
Parameters:
hold - HeldTransaction to complete
amount - The updatd amount. It must be <= than the amount of the hold
comment -
Returns:
Throws:
InvalidTransactionException
LowlevelLedgerException
TransactionExpiredException
UnknownTransactionException

performCompleteHold

public PostedTransaction performCompleteHold(PostedHeldTransaction hold,
                                             Book origbook,
                                             Book newbook,
                                             double amount,
                                             java.lang.String comment)
                                      throws InvalidTransactionException,
                                             LowlevelLedgerException,
                                             TransactionExpiredException,
                                             UnknownTransactionException
Description copied from class: LedgerController
Completes a held transaction. Which means: cancelling the hold and performing the transfer with the given updated amount, comment and payee.

Specified by:
performCompleteHold in class LedgerController
Parameters:
hold - HeldTransaction to complete
origbook - Book to change
newbook - The new book
amount - The updatd amount. It must be <= than the amount of the hold
comment -
Returns:
Throws:
LowlevelLedgerException
TransactionExpiredException
InvalidTransactionException
UnknownTransactionException

getTransactionTime

public java.util.Date getTransactionTime(java.lang.String id)
                                  throws LowlevelLedgerException,
                                         UnknownTransactionException
Searches for a Transaction based on its Transaction ID

Specified by:
getTransactionTime in class LedgerController
Parameters:
id - A valid ID
Returns:
The Transaction object
Throws:
LowlevelLedgerException
UnknownTransactionException

getBalance

public double getBalance(java.lang.String ledger,
                         java.lang.String book)
Calculate the true accounting balance at a given time. This does not take into account any held transactions, thus may not necessarily show the Available balance.

Basic Algorithm:

  1. If transactiondate is AFTER balance date SKIP
  2. If Transaction DOES NOT have an expiry date its a regular transaction and ADD to balance and SKIP

Specified by:
getBalance in class LedgerController
Returns:
the balance as a double

getAvailableBalance

public double getAvailableBalance(java.lang.String ledger,
                                  java.lang.String book)
Calculate the available balance at a given time. This DOES take into account any held transactions. Basic Algorithm:
  1. If transactiondate is AFTER balance date SKIP
  2. If Transaction DOES NOT have an expiry date its a regular transaction and ADD to balance and SKIP
  3. If Transaction DOES HAVE an expiry date it is a held transaction. If Expiry date is AFTER balance date SKIP
  4. If Transaction amount is POSITIVE it is a Credit, we dont take held credits into accout on balance SKIP
  5. If Transaction Amount is NEGATIVE it is a Debit and ADD to balance

Specified by:
getAvailableBalance in class LedgerController
Returns:
the balance as a double

getBookCount

public long getBookCount(java.lang.String ledger)
                  throws LowlevelLedgerException
Specified by:
getBookCount in class LedgerController
Throws:
LowlevelLedgerException

getTransactionCount

public long getTransactionCount(java.lang.String ledger)
                         throws LowlevelLedgerException
Specified by:
getTransactionCount in class LedgerController
Throws:
LowlevelLedgerException

transactionExists

public boolean transactionExists(java.lang.String id)
                          throws LowlevelLedgerException
Specified by:
transactionExists in class LedgerController
Throws:
LowlevelLedgerException

heldTransactionExists

public boolean heldTransactionExists(java.lang.String id)
                              throws LowlevelLedgerException
Specified by:
heldTransactionExists in class LedgerController
Throws:
LowlevelLedgerException

registerBook

public Book registerBook(java.lang.String id,
                         java.lang.String nickname,
                         java.lang.String type,
                         java.lang.String source,
                         java.lang.String registrationid)
                  throws LowlevelLedgerException
Register a Book in the system

Specified by:
registerBook in class LedgerController
Parameters:
id -
nickname -
type -
source -
registrationid -
Returns:
Throws:
LowlevelLedgerException

getBook

public Book getBook(java.lang.String id)
             throws LowlevelLedgerException
Specified by:
getBook in class LedgerController
Throws:
LowlevelLedgerException

registerLedger

public Ledger registerLedger(java.lang.String id,
                             java.lang.String nickname,
                             java.lang.String type,
                             java.lang.String source,
                             java.lang.String registrationid,
                             java.lang.String unit,
                             int decimal)
                      throws LowlevelLedgerException
Specified by:
registerLedger in class LedgerController
Throws:
LowlevelLedgerException

getLedger

public Ledger getLedger(java.lang.String id)
                 throws LowlevelLedgerException,
                        UnknownLedgerException
Specified by:
getLedger in class LedgerController
Throws:
LowlevelLedgerException
UnknownLedgerException

toString

public java.lang.String toString()
Overrides:
toString in class LedgerController

findHeldTransaction

public PostedHeldTransaction findHeldTransaction(java.lang.String idstring)
                                          throws LowlevelLedgerException,
                                                 UnknownTransactionException
Searches for a Held Transaction based on its Transaction ID

Specified by:
findHeldTransaction in class LedgerController
Parameters:
idstring - A valid ID
Returns:
The Transaction object
Throws:
LowlevelLedgerException
UnknownTransactionException

setReceiptId

public void setReceiptId(java.lang.String id,
                         java.lang.String receipt)
                  throws LowlevelLedgerException,
                         UnknownTransactionException
Specified by:
setReceiptId in class LedgerController
Throws:
LowlevelLedgerException
UnknownTransactionException

setHeldReceiptId

public void setHeldReceiptId(java.lang.String id,
                             java.lang.String receipt)
                      throws LowlevelLedgerException,
                             UnknownTransactionException
Specified by:
setHeldReceiptId in class LedgerController
Throws:
LowlevelLedgerException
UnknownTransactionException

getTestBalance

public double getTestBalance(java.lang.String ledger)
                      throws LowlevelLedgerException
Specified by:
getTestBalance in class LedgerController
Throws:
LowlevelLedgerException

close

public void close()
Specified by:
close in class LedgerController

browse

public BookBrowser browse(java.lang.String ledger,
                          java.lang.String book)
                   throws LowlevelLedgerException
Specified by:
browse in interface LedgerBrowser
Throws:
LowlevelLedgerException

browseFrom

public BookBrowser browseFrom(java.lang.String ledger,
                              java.lang.String book,
                              java.util.Date from)
                       throws LowlevelLedgerException
Specified by:
browseFrom in interface LedgerBrowser
Throws:
LowlevelLedgerException

browseRange

public BookBrowser browseRange(java.lang.String ledger,
                               java.lang.String book,
                               java.util.Date from,
                               java.util.Date until)
                        throws LowlevelLedgerException
Specified by:
browseRange in interface LedgerBrowser
Throws:
LowlevelLedgerException

browse

public BookBrowser browse(java.lang.String book)
                   throws LowlevelLedgerException
Specified by:
browse in interface LedgerBrowser
Throws:
LowlevelLedgerException

browseFrom

public BookBrowser browseFrom(java.lang.String book,
                              java.util.Date from)
                       throws LowlevelLedgerException
Specified by:
browseFrom in interface LedgerBrowser
Throws:
LowlevelLedgerException

browseRange

public BookBrowser browseRange(java.lang.String book,
                               java.util.Date from,
                               java.util.Date until)
                        throws LowlevelLedgerException
Specified by:
browseRange in interface LedgerBrowser
Throws:
LowlevelLedgerException

browseBooks

public BookListBrowser browseBooks(java.lang.String ledger)
                            throws LowlevelLedgerException
Specified by:
browseBooks in interface LedgerBrowser
Throws:
LowlevelLedgerException

browsePortfolio

public PortfolioBrowser browsePortfolio(Book book)
                                 throws LowlevelLedgerException
Specified by:
browsePortfolio in interface LedgerBrowser
Throws:
LowlevelLedgerException

browseInteractions

public BookBrowser browseInteractions(java.lang.String ledger,
                                      java.lang.String book,
                                      java.lang.String counterparty)
                               throws LowlevelLedgerException
Specified by:
browseInteractions in interface LedgerBrowser
Throws:
LowlevelLedgerException

browseInteractions

public BookBrowser browseInteractions(java.lang.String book,
                                      java.lang.String counterparty)
                               throws LowlevelLedgerException
Specified by:
browseInteractions in interface LedgerBrowser
Throws:
LowlevelLedgerException

browsePortfolioInteractions

public PortfolioBrowser browsePortfolioInteractions(Book book,
                                                    Book counterparty)
                                             throws LowlevelLedgerException
Specified by:
browsePortfolioInteractions in interface LedgerBrowser
Throws:
LowlevelLedgerException


Copyright © 2003-2004 Antilles Software Ventures SA. All Rights Reserved.