/* * Itaú Asset Management - Quantitative Research Team * * @project ExecutionServer * @date 15/10/2013 */ package executionserver.bson.command; import executionserver.controller.BsonExecutionController; import executionserver.controller.ExecutionServerController; import executionserver.domain.ExecutionOrder; import executionserver.domain.Market; import executionserver.domain.ProcessingStatus; import java.util.Calendar; import java.util.Map; import org.apache.mina.common.IoSession; import org.bson.BasicBSONObject; /** * * @author Sylvio Azevedo */ public class OrderRequest extends BasicCommand { @Override public void execute(Map<String, Object> args, IoSession session) throws Exception { if (this.handler.clientName == null) { // Not connected with a valid client. return; } BasicBSONObject order = (BasicBSONObject) args.get("Order"); logger.info("Order [" + order.getString("OrderId") + "] received."); ExecutionOrder newOrder = new ExecutionOrder(); newOrder.setId(order.getString("OrderId")); newOrder.setAccount(order.getString("Account")); newOrder.setClientId(order.getString("OrderId")); newOrder.setBroker(order.getString("Broker")); newOrder.setExchange(order.getString("Exchange")); newOrder.setMinQty(order.getDouble("MinQty")); newOrder.setOpenQty(order.getDouble("OpenQty")); newOrder.setPrice(order.getDouble("Price")); newOrder.setQty(order.getDouble("Qty")); newOrder.setSide(order.getInt("Side")); newOrder.setStopPrice(order.getDouble("StopPrice")); newOrder.setSecurity(order.getString("Security")); newOrder.setOrderType(order.getInt("OrderType")); newOrder.setValidity(order.getInt("Validity")); newOrder.setOwner(this.handler.clientName); newOrder.setReqType(order.getInt("ReqType")); newOrder.setStatus(ProcessingStatus.NEW); newOrder.setDateCreated(Calendar.getInstance().getTime()); if (order.keySet().contains("SecurityId")) { newOrder.setSecurityId(order.getString("SecurityId")); } if (order.keySet().contains("SecurityIdSource")) { newOrder.setSecurityIdSource(order.getString("SecurityIdSource")); } if (order.keySet().contains("SecurityExchange")) { newOrder.setSecurityExchange(order.getString("SecurityExchange")); } if (order.keySet().contains("LastPrice")) { newOrder.setLastPrice(order.getDouble("LastPrice")); } if (order.keySet().contains("Portfolio")) { newOrder.setPortfolio(order.getString("Portfolio")); } if (order.getString("Route").isEmpty()) { /** * Check the market settings and try to select the default route. */ for (Market market : ExecutionServerController.settings.markets) { if (market.name.trim().equals(newOrder.getExchange().trim())) { newOrder.setRoute(market.conn); } } } else { newOrder.setRoute(order.getString("Route")); } BsonExecutionController controller = (BsonExecutionController) session.getAttribute("ExecutionController"); controller.addOrder(newOrder); } }