org.neuclear.ledger
Class LedgerController

java.lang.Object
  extended byorg.neuclear.ledger.LedgerController
Direct Known Subclasses:
SimpleLedgerController

public abstract class LedgerController
extends java.lang.Object

This is the abstract Ledger class that implementators of the NeuClear Ledger need to implement.


Constructor Summary
LedgerController(java.lang.String id)
          The unique id of the ledger
 
Method Summary
 java.util.Date cancel(java.lang.String id)
           
abstract  void close()
           
 PostedTransaction complete(java.lang.String id, double amount, java.lang.String comment)
           
 PostedTransaction complete(java.lang.String id, java.lang.String origbook, java.lang.String newbook, double amount, java.lang.String comment)
           
abstract  boolean existsLedger(java.lang.String id)
           
abstract  PostedHeldTransaction findHeldTransaction(java.lang.String idstring)
          Searches for a Held Transaction based on its Transaction ID
 double getAvailableBalance(java.lang.String book)
           
abstract  double getAvailableBalance(java.lang.String ledger, java.lang.String book)
          Calculate the available balance at a given time.
 double getBalance(java.lang.String book)
           
abstract  double getBalance(java.lang.String ledger, java.lang.String book)
          Calculate the true accounting balance at a given time.
abstract  Book getBook(java.lang.String id)
           
 long getBookCount()
           
abstract  long getBookCount(java.lang.String ledger)
           
 java.lang.String getId()
           
abstract  Ledger getLedger(java.lang.String id)
           
 double getTestBalance()
           
abstract  double getTestBalance(java.lang.String ledger)
           
 long getTransactionCount()
           
abstract  long getTransactionCount(java.lang.String ledger)
           
abstract  java.util.Date getTransactionTime(java.lang.String id)
          Searches for a Transaction based on its Transaction ID
abstract  boolean heldTransactionExists(java.lang.String id)
           
 PostedHeldTransaction hold(java.lang.String from, java.lang.String to, java.util.Date expiry, double amount, java.lang.String comment)
           
 PostedHeldTransaction hold(java.lang.String ledger, java.lang.String req, java.lang.String from, java.lang.String to, java.util.Date expiry, double amount, java.lang.String comment)
           
 boolean isBalanced()
           
 boolean isBalanced(java.lang.String id)
           
abstract  java.util.Date performCancelHold(PostedHeldTransaction hold)
          Cancels a Held Transaction.
abstract  PostedTransaction performCompleteHold(PostedHeldTransaction hold, Book origbook, Book newbook, double amount, java.lang.String comment)
          Completes a held transaction.
abstract  PostedTransaction performCompleteHold(PostedHeldTransaction hold, double amount, java.lang.String comment)
          Completes a held transaction.
abstract  PostedHeldTransaction performHeldTransfer(UnPostedHeldTransaction trans)
          The basic interface for creating Transactions in the database.
abstract  PostedTransaction performTransaction(UnPostedTransaction trans)
          The basic interface for creating Transactions in the database.
abstract  PostedTransaction performVerifiedTransfer(UnPostedTransaction trans)
          Similar to a transaction but guarantees that there wont be any negative balances left after the transaction.
abstract  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
abstract  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)
           
abstract  void setHeldReceiptId(java.lang.String id, java.lang.String receipt)
           
abstract  void setReceiptId(java.lang.String id, java.lang.String receipt)
           
 java.lang.String toString()
           
abstract  boolean transactionExists(java.lang.String id)
           
 PostedTransaction transfer(java.lang.String from, java.lang.String to, double amount, java.lang.String comment)
           
 PostedTransaction transfer(java.lang.String ledger, java.lang.String from, java.lang.String to, double amount, java.lang.String comment)
           
 PostedTransaction transfer(java.lang.String ledger, java.lang.String req, java.lang.String from, java.lang.String to, double amount, java.lang.String comment)
           
 PostedTransaction verifiedTransfer(java.lang.String from, java.lang.String to, double amount, java.lang.String comment)
           
 PostedTransaction verifiedTransfer(java.lang.String ledger, java.lang.String req, java.lang.String from, java.lang.String to, double amount, java.lang.String comment)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LedgerController

public LedgerController(java.lang.String id)
The unique id of the ledger

Parameters:
id -
Method Detail

existsLedger

public abstract boolean existsLedger(java.lang.String id)

performTransaction

public abstract PostedTransaction performTransaction(UnPostedTransaction 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.

Parameters:
trans - Transaction to perform
Returns:
The reference to the transaction
Throws:
UnBalancedTransactionException
LowlevelLedgerException
InvalidTransactionException

performVerifiedTransfer

public abstract 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.

Parameters:
trans - Transaction to perform
Returns:
The reference to the transaction
Throws:
UnBalancedTransactionException
LowlevelLedgerException
InvalidTransactionException

performHeldTransfer

public abstract 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 transaction guarantees to not leave a negative balance in any account.

Parameters:
trans - Transaction to perform
Throws:
UnBalancedTransactionException
LowlevelLedgerException
InvalidTransactionException

performCancelHold

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

Parameters:
hold -
Throws:
LowlevelLedgerException
UnknownTransactionException

performCompleteHold

public abstract 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.

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 abstract PostedTransaction performCompleteHold(PostedHeldTransaction hold,
                                                      Book origbook,
                                                      Book newbook,
                                                      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, comment and payee.

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:
InvalidTransactionException
LowlevelLedgerException
TransactionExpiredException
UnknownTransactionException

getTransactionTime

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

Parameters:
id - A valid ID
Returns:
The Transaction object
Throws:
LowlevelLedgerException
UnknownTransactionException

getBalance

public abstract double getBalance(java.lang.String ledger,
                                  java.lang.String book)
                           throws LowlevelLedgerException
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.

Example sql for implementors:

 select c.credit - d.debit from
      (
          select sum(amount) as credit
          from ledger
          where transactiondate <= sysdate and end_date is null and credit= 'neu://BOB'
       ) c,
      (
          select sum(amount) as debit
          from ledger
          where transactiondate <= sysdate and end_date is null and debit= 'neu://BOB'
       ) d
 

Returns:
the balance as a double
Throws:
LowlevelLedgerException

getBalance

public double getBalance(java.lang.String book)
                  throws LowlevelLedgerException
Throws:
LowlevelLedgerException

getAvailableBalance

public abstract double getAvailableBalance(java.lang.String ledger,
                                           java.lang.String book)
                                    throws LowlevelLedgerException
Calculate the available balance at a given time. This DOES take into account any held transactions. Example sql for implementors:
 select c.credit - d.debit from
      (
          select sum(amount) as credit
          from ledger
          where transactiondate <= sysdate and (end_date is null or end_date>= sysdate) and credit= 'neu://BOB'
       ) c,
      (
          select sum(amount) as debit
          from ledger
          where transactiondate <= sysdate and end_date is null and debit= 'neu://BOB'
       ) d
 

Returns:
the balance as a double
Throws:
LowlevelLedgerException

getAvailableBalance

public double getAvailableBalance(java.lang.String book)
                           throws LowlevelLedgerException
Throws:
LowlevelLedgerException

getBookCount

public abstract long getBookCount(java.lang.String ledger)
                           throws LowlevelLedgerException
Throws:
LowlevelLedgerException

getBookCount

public long getBookCount()
                  throws LowlevelLedgerException
Throws:
LowlevelLedgerException

getTransactionCount

public abstract long getTransactionCount(java.lang.String ledger)
                                  throws LowlevelLedgerException
Throws:
LowlevelLedgerException

getTransactionCount

public long getTransactionCount()
                         throws LowlevelLedgerException
Throws:
LowlevelLedgerException

transactionExists

public abstract boolean transactionExists(java.lang.String id)
                                   throws LowlevelLedgerException
Throws:
LowlevelLedgerException

heldTransactionExists

public abstract boolean heldTransactionExists(java.lang.String id)
                                       throws LowlevelLedgerException
Throws:
LowlevelLedgerException

registerBook

public abstract 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

Parameters:
id -
nickname -
type -
source -
registrationid -
Returns:
Throws:
LowlevelLedgerException

getBook

public abstract Book getBook(java.lang.String id)
                      throws LowlevelLedgerException,
                             UnknownBookException
Throws:
LowlevelLedgerException
UnknownBookException

registerLedger

public abstract 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
Throws:
LowlevelLedgerException

getLedger

public abstract Ledger getLedger(java.lang.String id)
                          throws LowlevelLedgerException,
                                 UnknownLedgerException
Throws:
LowlevelLedgerException
UnknownLedgerException

toString

public java.lang.String toString()

getId

public final java.lang.String getId()

findHeldTransaction

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

Parameters:
idstring - A valid ID
Returns:
The Transaction object
Throws:
LowlevelLedgerException
UnknownTransactionException

setReceiptId

public abstract void setReceiptId(java.lang.String id,
                                  java.lang.String receipt)
                           throws LowlevelLedgerException,
                                  UnknownTransactionException
Throws:
LowlevelLedgerException
UnknownTransactionException

setHeldReceiptId

public abstract void setHeldReceiptId(java.lang.String id,
                                      java.lang.String receipt)
                               throws LowlevelLedgerException,
                                      UnknownTransactionException
Throws:
LowlevelLedgerException
UnknownTransactionException

getTestBalance

public abstract double getTestBalance(java.lang.String ledger)
                               throws LowlevelLedgerException
Throws:
LowlevelLedgerException

getTestBalance

public final double getTestBalance()
                            throws LowlevelLedgerException
Throws:
LowlevelLedgerException

isBalanced

public final boolean isBalanced()
                         throws LowlevelLedgerException
Throws:
LowlevelLedgerException

isBalanced

public final boolean isBalanced(java.lang.String id)
                         throws LowlevelLedgerException
Throws:
LowlevelLedgerException

transfer

public final PostedTransaction transfer(java.lang.String ledger,
                                        java.lang.String req,
                                        java.lang.String from,
                                        java.lang.String to,
                                        double amount,
                                        java.lang.String comment)
                                 throws InvalidTransactionException,
                                        LowlevelLedgerException,
                                        UnBalancedTransactionException,
                                        UnknownBookException
Throws:
InvalidTransactionException
LowlevelLedgerException
UnBalancedTransactionException
UnknownBookException

transfer

public final PostedTransaction transfer(java.lang.String from,
                                        java.lang.String to,
                                        double amount,
                                        java.lang.String comment)
                                 throws InvalidTransactionException,
                                        LowlevelLedgerException,
                                        UnBalancedTransactionException,
                                        UnknownBookException
Throws:
InvalidTransactionException
LowlevelLedgerException
UnBalancedTransactionException
UnknownBookException

transfer

public final PostedTransaction transfer(java.lang.String ledger,
                                        java.lang.String from,
                                        java.lang.String to,
                                        double amount,
                                        java.lang.String comment)
                                 throws InvalidTransactionException,
                                        LowlevelLedgerException,
                                        UnBalancedTransactionException,
                                        UnknownBookException
Throws:
InvalidTransactionException
LowlevelLedgerException
UnBalancedTransactionException
UnknownBookException

verifiedTransfer

public final PostedTransaction verifiedTransfer(java.lang.String ledger,
                                                java.lang.String req,
                                                java.lang.String from,
                                                java.lang.String to,
                                                double amount,
                                                java.lang.String comment)
                                         throws InvalidTransactionException,
                                                LowlevelLedgerException,
                                                UnBalancedTransactionException,
                                                InsufficientFundsException,
                                                UnknownBookException
Throws:
InvalidTransactionException
LowlevelLedgerException
UnBalancedTransactionException
InsufficientFundsException
UnknownBookException

verifiedTransfer

public final PostedTransaction verifiedTransfer(java.lang.String from,
                                                java.lang.String to,
                                                double amount,
                                                java.lang.String comment)
                                         throws InvalidTransactionException,
                                                LowlevelLedgerException,
                                                UnBalancedTransactionException,
                                                InsufficientFundsException,
                                                UnknownBookException
Throws:
InvalidTransactionException
LowlevelLedgerException
UnBalancedTransactionException
InsufficientFundsException
UnknownBookException

hold

public final PostedHeldTransaction hold(java.lang.String ledger,
                                        java.lang.String req,
                                        java.lang.String from,
                                        java.lang.String to,
                                        java.util.Date expiry,
                                        double amount,
                                        java.lang.String comment)
                                 throws InvalidTransactionException,
                                        LowlevelLedgerException,
                                        UnBalancedTransactionException,
                                        InsufficientFundsException,
                                        UnknownBookException
Throws:
InvalidTransactionException
LowlevelLedgerException
UnBalancedTransactionException
InsufficientFundsException
UnknownBookException

hold

public final PostedHeldTransaction hold(java.lang.String from,
                                        java.lang.String to,
                                        java.util.Date expiry,
                                        double amount,
                                        java.lang.String comment)
                                 throws InvalidTransactionException,
                                        LowlevelLedgerException,
                                        UnBalancedTransactionException,
                                        InsufficientFundsException,
                                        UnknownBookException
Throws:
InvalidTransactionException
LowlevelLedgerException
UnBalancedTransactionException
InsufficientFundsException
UnknownBookException

cancel

public final java.util.Date cancel(java.lang.String id)
                            throws LowlevelLedgerException,
                                   UnknownTransactionException
Throws:
LowlevelLedgerException
UnknownTransactionException

complete

public final PostedTransaction complete(java.lang.String id,
                                        double amount,
                                        java.lang.String comment)
                                 throws LowlevelLedgerException,
                                        UnknownTransactionException,
                                        TransactionExpiredException,
                                        InvalidTransactionException
Throws:
LowlevelLedgerException
UnknownTransactionException
TransactionExpiredException
InvalidTransactionException

complete

public final PostedTransaction complete(java.lang.String id,
                                        java.lang.String origbook,
                                        java.lang.String newbook,
                                        double amount,
                                        java.lang.String comment)
                                 throws LowlevelLedgerException,
                                        UnknownTransactionException,
                                        TransactionExpiredException,
                                        InvalidTransactionException,
                                        UnknownBookException
Throws:
LowlevelLedgerException
UnknownTransactionException
TransactionExpiredException
InvalidTransactionException
UnknownBookException

close

public abstract void close()
                    throws LowlevelLedgerException
Throws:
LowlevelLedgerException


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