public void fillMarketBuyOrders( Collection<BuyOrder> anOpenBuyOrders, int aTotalQuantityAvailable) { BuyOrderSharePurchaseRequestedSubscriber subscriber = new BuyOrderSharePurchaseRequestedSubscriber(); DomainEventPublisher.instance().subscribe(subscriber); Iterator<BuyOrder> iterator = anOpenBuyOrders.iterator(); while (iterator.hasNext() && aTotalQuantityAvailable > 0) { BuyOrder buyOrder = iterator.next(); boolean done = false; for (int tries = 0; !done && tries < 3; ++tries) { subscriber.clear(); if (this.trySharesToPurchase(buyOrder, aTotalQuantityAvailable)) { aTotalQuantityAvailable -= subscriber.orderSharesRequested(); done = true; } else { buyOrder = this.buyOrderRepository().orderOf(buyOrder.orderId()); } } } }
public void testSave() throws Exception { List<OrderId> ids = new ArrayList<OrderId>(); for (int idx = 0; idx < 10; ++idx) { BuyOrder order = this.buyOrderFixture1(); this.repository.save(order); ids.add(order.orderId()); } for (int idx = 0; idx < 10; ++idx) { BuyOrder order = this.repository.orderOf(ids.get(idx)); assertNotNull(order); } }
public void testRemove() throws Exception { BuyOrder buyOrder = this.buyOrderFixture1(); this.repository.save(buyOrder); BuyOrder foundOrder = this.repository.orderOf(buyOrder.orderId()); assertEquals(buyOrder, foundOrder); this.repository.remove(buyOrder); foundOrder = this.repository.orderOf(buyOrder.orderId()); assertNull(foundOrder); }
public void testOrderOf() throws Exception { BuyOrder buyOrder = this.buyOrderFixture1(); this.repository.save(buyOrder); BuyOrder foundOrder = this.repository.orderOf(buyOrder.orderId()); assertNotNull(foundOrder); assertEquals(buyOrder, foundOrder); }
public void testSaveWithOverwrite() throws Exception { BuyOrder buyOrder = this.buyOrderFixture1(); this.repository.save(buyOrder); assertTrue(buyOrder.isOpen()); assertFalse(buyOrder.isFilled()); BuyOrder changedBuyOrder = this.repository.orderOf(buyOrder.orderId()); changedBuyOrder.sharesToPurchase(changedBuyOrder.execution().quantityOfSharesOrdered()); this.repository.save(changedBuyOrder); changedBuyOrder = this.repository.orderOf(buyOrder.orderId()); assertNotNull(changedBuyOrder.holdingOfFilledOrder()); assertFalse(buyOrder.isOpen()); assertTrue(buyOrder.isFilled()); }