/*
* 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.Date;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.eclipsetrader.core.instruments.ISecurity;
import org.eclipsetrader.core.trading.IAccount;
import org.eclipsetrader.core.trading.IOrder;
import org.eclipsetrader.core.trading.IOrderRoute;
import org.eclipsetrader.core.trading.IOrderSide;
import org.eclipsetrader.core.trading.IOrderType;
import org.eclipsetrader.core.trading.IOrderValidity;
import org.eclipsetrader.internal.brokers.paper.types.DateTimeAdapter;
import org.eclipsetrader.internal.brokers.paper.types.DoubleValueAdapter;
import org.eclipsetrader.internal.brokers.paper.types.OrderSideAdapter;
import org.eclipsetrader.internal.brokers.paper.types.OrderTypeAdapter;
import org.eclipsetrader.internal.brokers.paper.types.SecurityAdapter;
@XmlRootElement(name = "order")
public class OrderElement {
@XmlAttribute(name = "date")
@XmlJavaTypeAdapter(DateTimeAdapter.class)
private Date date;
@XmlAttribute(name = "security")
@XmlJavaTypeAdapter(SecurityAdapter.class)
private ISecurity security;
@XmlAttribute(name = "type")
@XmlJavaTypeAdapter(OrderTypeAdapter.class)
private IOrderType type;
@XmlAttribute(name = "side")
@XmlJavaTypeAdapter(OrderSideAdapter.class)
private IOrderSide side;
@XmlAttribute(name = "quantity")
private Long quantity;
@XmlAttribute(name = "price")
@XmlJavaTypeAdapter(DoubleValueAdapter.class)
private Double price;
@XmlAttribute(name = "stop-price")
@XmlJavaTypeAdapter(DoubleValueAdapter.class)
private Double stopPrice;
@XmlAttribute(name = "expire")
@XmlJavaTypeAdapter(DateTimeAdapter.class)
private Date expire;
@XmlElement(name = "reference")
private String reference;
private IOrder order;
private class Order implements IOrder {
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.IOrder#getDate()
*/
@Override
public Date getDate() {
return date;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.IOrder#getAccount()
*/
@Override
public IAccount getAccount() {
return null;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.IOrder#getSecurity()
*/
@Override
public ISecurity getSecurity() {
return security;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.IOrder#getPrice()
*/
@Override
public Double getPrice() {
return price;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.IOrder#getQuantity()
*/
@Override
public Long getQuantity() {
return quantity;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.IOrder#getRoute()
*/
@Override
public IOrderRoute getRoute() {
return null;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.IOrder#getSide()
*/
@Override
public IOrderSide getSide() {
return side;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.IOrder#getStopPrice()
*/
@Override
public Double getStopPrice() {
return stopPrice;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.IOrder#getType()
*/
@Override
public IOrderType getType() {
return type;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.IOrder#getValidity()
*/
@Override
public IOrderValidity getValidity() {
return null;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.IOrder#getExpire()
*/
@Override
public Date getExpire() {
return expire;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.trading.IOrder#getReference()
*/
@Override
public String getReference() {
return reference;
}
}
public OrderElement() {
order = new Order();
}
public OrderElement(IOrder order) {
this.date = order.getDate();
this.side = order.getSide();
this.type = order.getType();
this.security = order.getSecurity();
this.quantity = order.getQuantity();
this.price = order.getPrice();
this.stopPrice = order.getStopPrice();
this.expire = order.getExpire();
this.reference = order.getReference();
this.order = order;
}
@XmlTransient
public IOrder getOrder() {
return order;
}
}