/*
* 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.internal.brokers.paper.transactions;
import java.util.Currency;
import java.util.Date;
import java.util.Locale;
import java.util.UUID;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.eclipse.osgi.util.NLS;
import org.eclipsetrader.core.Cash;
import org.eclipsetrader.core.instruments.ISecurity;
import org.eclipsetrader.core.trading.IOrder;
import org.eclipsetrader.core.trading.ITransaction;
import org.eclipsetrader.internal.brokers.paper.types.DateTimeAdapter;
import org.eclipsetrader.internal.brokers.paper.types.DoubleValueAdapter;
import org.eclipsetrader.internal.brokers.paper.types.SecurityAdapter;
@XmlRootElement(name = "stock")
public class StockTransaction implements ITransaction {
@XmlAttribute(name = "id")
private String id;
@XmlAttribute(name = "date")
@XmlJavaTypeAdapter(DateTimeAdapter.class)
private Date date;
@XmlAttribute(name = "security")
@XmlJavaTypeAdapter(SecurityAdapter.class)
private ISecurity security;
@XmlAttribute(name = "quantity")
private Long quantity;
@XmlAttribute(name = "price")
@XmlJavaTypeAdapter(DoubleValueAdapter.class)
private Double price;
protected StockTransaction() {
}
public StockTransaction(ISecurity security, Long quantity, Double price) {
this.id = UUID.randomUUID().toString();
this.date = new Date();
this.security = security;
this.quantity = quantity;
this.price = price;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.ITransaction#getId()
*/
@Override
@XmlTransient
public String getId() {
return id;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.ITransaction#getDate()
*/
@Override
@XmlTransient
public Date getDate() {
return date;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.ITransaction#getDescription()
*/
@Override
@XmlTransient
public String getDescription() {
return NLS.bind("{1} {0} at {2}", new Object[] {
security.getName(),
String.valueOf(quantity),
String.valueOf(price),
});
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.ITransaction#getAmount()
*/
@Override
@XmlTransient
public Cash getAmount() {
return new Cash(quantity * price, Currency.getInstance(Locale.getDefault()));
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.ITransaction#getOrder()
*/
@Override
@XmlTransient
public IOrder getOrder() {
return null;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.ITransaction#getTransactions()
*/
@Override
@XmlTransient
public ITransaction[] getTransactions() {
return null;
}
}