/*
* 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.repository.local.internal.stores;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Date;
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.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipsetrader.core.instruments.ISecurity;
import org.eclipsetrader.core.repositories.IPropertyConstants;
import org.eclipsetrader.core.repositories.IRepository;
import org.eclipsetrader.core.repositories.IStore;
import org.eclipsetrader.core.repositories.IStoreProperties;
import org.eclipsetrader.core.repositories.StoreProperties;
import org.eclipsetrader.core.views.IHolding;
import org.eclipsetrader.repository.local.LocalRepository;
import org.eclipsetrader.repository.local.internal.Activator;
import org.eclipsetrader.repository.local.internal.types.DateTimeAdapter;
import org.eclipsetrader.repository.local.internal.types.SecurityAdapter;
@XmlRootElement(name = "trade")
public class TradeStore implements IStore {
@XmlAttribute(name = "id")
private Integer 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")
private Double price;
protected TradeStore() {
}
public TradeStore(Integer id) {
this.id = id;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IStore#fetchProperties(org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
public IStoreProperties fetchProperties(IProgressMonitor monitor) {
StoreProperties properties = new StoreProperties();
properties.setProperty(IPropertyConstants.OBJECT_TYPE, IHolding.class.getName());
properties.setProperty(IPropertyConstants.PURCHASE_DATE, date);
properties.setProperty(IPropertyConstants.SECURITY, security);
properties.setProperty(IPropertyConstants.PURCHASE_DATE, security);
properties.setProperty(IPropertyConstants.PURCHASE_QUANTITY, quantity);
properties.setProperty(IPropertyConstants.PURCHASE_PRICE, price);
return properties;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IStore#putProperties(org.eclipsetrader.core.repositories.IStoreProperties, org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
public void putProperties(IStoreProperties properties, IProgressMonitor monitor) {
date = (Date) properties.getProperty(IPropertyConstants.PURCHASE_DATE);
security = (ISecurity) properties.getProperty(IPropertyConstants.SECURITY);
quantity = (Long) properties.getProperty(IPropertyConstants.PURCHASE_QUANTITY);
price = (Double) properties.getProperty(IPropertyConstants.PURCHASE_PRICE);
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IStore#delete(org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
public void delete(IProgressMonitor monitor) throws CoreException {
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IStore#fetchChilds(org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
public IStore[] fetchChilds(IProgressMonitor monitor) {
return new IStore[0];
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IStore#createChild()
*/
@Override
public IStore createChild() {
return null;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IStore#getRepository()
*/
@Override
@XmlTransient
public IRepository getRepository() {
return Activator.getDefault().getRepository();
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IStore#toURI()
*/
@Override
public URI toURI() {
try {
return new URI(LocalRepository.URI_SCHEMA, LocalRepository.URI_TRADE_PART, String.valueOf(id));
} catch (URISyntaxException e) {
}
return null;
}
}