Skip to content
This repository has been archived by the owner on Dec 14, 2021. It is now read-only.

Commit

Permalink
Did some work on the price for executed orders that were partially ex…
Browse files Browse the repository at this point in the history
…ecuted first
  • Loading branch information
jettro committed Jan 27, 2012
1 parent be6482f commit 6d52096
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 7 deletions.
Expand Up @@ -133,12 +133,12 @@ public void onTransactionCancelled(SellTransactionCancelledEvent event) {


@EventHandler @EventHandler
public void onTransactionExecuted(BuyTransactionExecutedEvent event) { public void onTransactionExecuted(BuyTransactionExecutedEvent event) {
this.amountOfExecutedItems = event.getAmountOfItems(); this.amountOfExecutedItems = this.amountOfItems;
} }


@EventHandler @EventHandler
public void onTransactionExecuted(SellTransactionExecutedEvent event) { public void onTransactionExecuted(SellTransactionExecutedEvent event) {
this.amountOfExecutedItems = event.getAmountOfItems(); this.amountOfExecutedItems = this.amountOfItems;
} }


@EventHandler @EventHandler
Expand Down
Expand Up @@ -38,7 +38,7 @@ public long getAmountOfExecutedItems() {
return amountOfExecutedItems; return amountOfExecutedItems;
} }


public void setAmountOfExecutedItems(int amountOfExecutedItems) { public void setAmountOfExecutedItems(long amountOfExecutedItems) {
this.amountOfExecutedItems = amountOfExecutedItems; this.amountOfExecutedItems = amountOfExecutedItems;
} }


Expand Down
Expand Up @@ -88,17 +88,27 @@ public void handleEvent(SellTransactionPartiallyExecutedEvent event) {


private void partiallyExecuteTransaction(AbstractTransactionPartiallyExecutedEvent event) { private void partiallyExecuteTransaction(AbstractTransactionPartiallyExecutedEvent event) {
TransactionEntry transactionEntry = transactionQueryRepository.findOne(event.getTransactionIdentifier().asString()); TransactionEntry transactionEntry = transactionQueryRepository.findOne(event.getTransactionIdentifier().asString());

long value = transactionEntry.getAmountOfExecutedItems() * transactionEntry.getPricePerItem();
long additionalValue = event.getAmountOfExecutedItems() * event.getItemPrice();
long newPrice = (value + additionalValue) / event.getTotalOfExecutedItems();

transactionEntry.setState(PARTIALLYEXECUTED); transactionEntry.setState(PARTIALLYEXECUTED);
transactionEntry.setAmountOfExecutedItems((int) event.getTotalOfExecutedItems()); transactionEntry.setAmountOfExecutedItems(event.getTotalOfExecutedItems());
transactionEntry.setPricePerItem(event.getItemPrice()); transactionEntry.setPricePerItem(newPrice);
transactionQueryRepository.save(transactionEntry); transactionQueryRepository.save(transactionEntry);
} }


private void executeTransaction(AbstractTransactionExecutedEvent event) { private void executeTransaction(AbstractTransactionExecutedEvent event) {
TransactionEntry transactionEntry = transactionQueryRepository.findOne(event.getTransactionIdentifier().asString()); TransactionEntry transactionEntry = transactionQueryRepository.findOne(event.getTransactionIdentifier().asString());

long value = transactionEntry.getAmountOfExecutedItems() * transactionEntry.getPricePerItem();
long additionalValue = event.getAmountOfItems() * event.getItemPrice();
long newPrice = (value + additionalValue) / transactionEntry.getAmountOfItems();

transactionEntry.setState(EXECUTED); transactionEntry.setState(EXECUTED);
transactionEntry.setAmountOfExecutedItems((int) event.getAmountOfItems()); transactionEntry.setAmountOfExecutedItems(transactionEntry.getAmountOfItems());
transactionEntry.setPricePerItem(event.getItemPrice()); transactionEntry.setPricePerItem(newPrice);
transactionQueryRepository.save(transactionEntry); transactionQueryRepository.save(transactionEntry);
} }


Expand Down

0 comments on commit 6d52096

Please sign in to comment.