public int quantityOfOutstandingShares() { return this.execution().quantityOfSharesOutstanding(); }
@Override public String toString() { return "PurchaseExecution [openDate=" + this.openDate() + ", filledDate=" + this.filledDate() + ", quantityOfSharesOrdered=" + this.quantityOfSharesOrdered() + ", quantityOfSharesOutstanding=" + this.quantityOfSharesOutstanding() + "]"; }
public PurchaseExecution withPurchasedSharesOf(int aQuantity) { if (this.wouldOverrunExecutionWith(aQuantity)) { throw new IllegalArgumentException("Acquired too many shares."); } int quantityOfSharesOutstanding = this.quantityOfSharesOutstanding() - aQuantity; return new PurchaseExecution(this.openDate(), this.quantityOfSharesOrdered(), quantityOfSharesOutstanding); }
public void testOpenExecution() throws Exception { PurchaseExecution purchaseExecution = new PurchaseExecution(20); assertEquals(20, purchaseExecution.quantityOfSharesOrdered()); assertEquals(20, purchaseExecution.quantityOfSharesOutstanding()); assertNull(purchaseExecution.filledDate()); assertNotNull(purchaseExecution.openDate()); Calendar openDate = Calendar.getInstance(); openDate.setTime(purchaseExecution.openDate()); assertEquals(Calendar.getInstance().get(Calendar.MONTH), openDate.get(Calendar.MONTH)); assertEquals(Calendar.getInstance().get(Calendar.DATE), openDate.get(Calendar.DATE)); assertEquals(Calendar.getInstance().get(Calendar.YEAR), openDate.get(Calendar.YEAR)); }
public void sharesToPurchase(int aQuantityOfSharesAvailable) { if (this.execution().quantityOfSharesOutstanding() > 0) { if (aQuantityOfSharesAvailable > 0) { int quantityToPurchase = Math.min( this.execution().quantityOfSharesOutstanding(), aQuantityOfSharesAvailable); if (quantityToPurchase > 0) { DomainEventPublisher.instance().publish( new BuyOrderSharePurchaseRequested( this.accountId(), this.orderId(), this.quote(), quantityToPurchase)); this.setExecution( this.execution() .withPurchasedSharesOf(quantityToPurchase)); if (this.isFilled()) { DomainEventPublisher.instance().publish( new BuyOrderFilled( this.accountId(), this.orderId(), this.quote(), this.execution().quantityOfSharesOrdered(), this.holdingOfFilledOrder())); } } } } }
public void testPlaceBuyOrder() throws Exception { Money money = new Money("10000.00"); Account account = this.profileFixture().openAccount(money); Money orderFee = new Money("9.99"); Money price = new Money("723.25"); int shares = 10; TickerSymbol tickerSymbol = new TickerSymbol("GOOG"); BuyOrder buyOrder = account.placeBuyOrder(tickerSymbol, price, shares, orderFee); assertEquals(account.accountId(), buyOrder.accountId()); assertEquals(tickerSymbol, buyOrder.quote().tickerSymbol()); assertEquals(price, buyOrder.quote().price()); assertEquals(shares, buyOrder.quantityOfSharesOrdered()); assertEquals(shares, buyOrder.execution().quantityOfSharesOrdered()); assertEquals(shares, buyOrder.execution().quantityOfSharesOutstanding()); }