public BuyOrderPlaced( AccountId anAccountId, OrderId anOrderId, Quote aQuote, int aQuantityOfSharesOrdered, Date aPlacedOnDate, Money aCost, Money anOrderFee) { super(); this.setAccountId(anAccountId); this.setCost(aCost); this.setOccurredOn(new Date()); this.setOrderFee(anOrderFee); this.setOrderId(anOrderId); this.setPlacedOnDate(aPlacedOnDate); this.setQuantityOfSharesOrdered(aQuantityOfSharesOrdered); this.setQuote(aQuote); }
@Override public void handleEvent(BuyOrderPlaced aDomainEvent) { reconcilableAccount.reconcileWith( new Payment( aDomainEvent.accountId(), aDomainEvent.orderId(), "BUY: " + aDomainEvent.quantityOfSharesOrdered() + " of " + aDomainEvent.quote().tickerSymbol() + " at " + aDomainEvent.quote().price(), aDomainEvent.cost(), aDomainEvent.orderFee(), aDomainEvent.placedOnDate())); }
public void testPlaceBuyOrder() throws Exception { DomainEventPublisher.instance().subscribe(new DomainEventSubscriber<BuyOrderPlaced>() { @Override public void handleEvent(BuyOrderPlaced aDomainEvent) { buyOrderPlaced = aDomainEvent; } @Override public Class<BuyOrderPlaced> subscribedToEventType() { return BuyOrderPlaced.class; } }); BuyOrder buyOrder = this.buyOrderFixture(); // event published here assertNotNull(buyOrderPlaced); assertEquals(new Money("9.99"), buyOrderPlaced.orderFee()); assertEquals(NUMBER_OF_SHARES, buyOrderPlaced.quantityOfSharesOrdered()); assertEquals(PRICE, buyOrderPlaced.quote().price()); assertEquals(TICKER, buyOrderPlaced.quote().tickerSymbol().symbol()); assertEquals(PRICE.multipliedBy(NUMBER_OF_SHARES), buyOrder.valueOfOrderedShares()); assertEquals(buyOrder.accountId(), buyOrderPlaced.accountId()); assertEquals(buyOrder.orderId(), buyOrderPlaced.orderId()); assertEquals(buyOrder.quantityOfSharesOrdered(), buyOrderPlaced.quantityOfSharesOrdered()); assertEquals(buyOrder.quote(), buyOrderPlaced.quote()); }
public BuyOrder( AccountId anAccountId, Quote aQuote, int aQuantityOfSharesOrdered, Money anOrderFee) { super(); this.setAccountId(anAccountId); this.setExecution(new PurchaseExecution(aQuantityOfSharesOrdered)); this.setOrderId(OrderId.unique()); this.setQuote(aQuote); DomainEventPublisher.instance().publish( new BuyOrderPlaced( this.accountId(), this.orderId(), this.quote(), this.execution().quantityOfSharesOrdered(), this.execution().openDate(), aQuote.price().multipliedBy(aQuantityOfSharesOrdered), anOrderFee)); }