/* * Copyright (c) 2004-2011 Marco Maccaferri and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Marco Maccaferri - initial API and implementation */ package org.eclipsetrader.core.ats.simulation; import java.util.Currency; import java.util.Date; import java.util.Locale; import java.util.UUID; import org.eclipsetrader.core.Cash; import org.eclipsetrader.core.trading.IOrder; import org.eclipsetrader.core.trading.IStockTransaction; import org.eclipsetrader.core.trading.ITransaction; public class Transaction implements ITransaction, IStockTransaction { private final String id; private final Date date; private final IOrder order; private final Long quantity; private final Double averagePrice; public Transaction(OrderMonitor orderMonitor, Date date) { this.id = UUID.randomUUID().toString(); this.date = date; this.order = orderMonitor.getOrder(); this.quantity = orderMonitor.getFilledQuantity(); this.averagePrice = orderMonitor.getAveragePrice(); } /* (non-Javadoc) * @see org.eclipsetrader.core.trading.ITransaction#getId() */ @Override public String getId() { return id; } /* (non-Javadoc) * @see org.eclipsetrader.core.trading.ITransaction#getDate() */ @Override public Date getDate() { return date; } /* (non-Javadoc) * @see org.eclipsetrader.core.trading.ITransaction#getDescription() */ @Override public String getDescription() { return order.toString(); } /* (non-Javadoc) * @see org.eclipsetrader.core.trading.ITransaction#getAmount() */ @Override public Cash getAmount() { Currency currency = (Currency) order.getSecurity().getAdapter(Currency.class); if (currency == null) { currency = Currency.getInstance(Locale.getDefault()); } return new Cash(quantity * averagePrice, currency); } /* (non-Javadoc) * @see org.eclipsetrader.core.trading.ITransaction#getOrder() */ @Override public IOrder getOrder() { return order; } /* (non-Javadoc) * @see org.eclipsetrader.core.trading.ITransaction#getTransactions() */ @Override public ITransaction[] getTransactions() { return new ITransaction[0]; } /* (non-Javadoc) * @see org.eclipsetrader.core.trading.IStockTransaction#getFilledQuantity() */ @Override public Long getFilledQuantity() { return quantity; } /* (non-Javadoc) * @see org.eclipsetrader.core.trading.IStockTransaction#getAveragePrice() */ @Override public Double getAveragePrice() { return averagePrice; } }