package fauxExchange; import java.util.*; class AuctionRule implements Rule{ public Trade processRule(OrderBook ob, Order o){ Iterator buyOrders = ob.getBuyOrders(); Iterator sellOrders = ob.getSellOrders(); Order buyOrder = (Order)buyOrders.next(); Order sellOrder = (Order)sellOrders.next(); int size = buyOrder.getSize(); if(sellOrder.getSize() < size)size = sellOrder.getSize(); buyOrder.setSize(buyOrder.getSize() - size); sellOrder.setSize(sellOrder.getSize() - size); if(buyOrder.getSize() == 0)ob.deleteOrder(buyOrder); if(sellOrder.getSize() == 0)ob.deleteOrder(sellOrder); Trade tmp = new Trade(buyOrder, sellOrder, ob.getOpeningPrice(), size); ob.print(null); System.out.println(ob.getOpeningPrice()); return tmp; } public boolean fitsCriteria(OrderBook ob, Order o){ Iterator buyOrders =ob.getBuyOrders(); Iterator sellOrders = ob.getSellOrders(); Order sellOrder, buyOrder; if(buyOrders.hasNext() && sellOrders.hasNext()){ sellOrder = (Order)sellOrders.next(); buyOrder = (Order)buyOrders.next(); if((sellOrder.isMarket()||buyOrder.isMarket()) ||(sellOrder.getPrice() <= buyOrder.getPrice())){ return true; } } return false; } }