/* * 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.types; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.eclipsetrader.core.feed.IOHLC; import org.eclipsetrader.core.feed.ISplit; import org.eclipsetrader.core.feed.TimeSpan; import org.eclipsetrader.core.instruments.ISecurity; @XmlRootElement(name = "history") public class HistoryType implements Comparable<HistoryType> { @XmlTransient private ISecurity security; @XmlAttribute(name = "period") @XmlJavaTypeAdapter(TimeSpanAdapter.class) private TimeSpan period; @XmlElementRef @XmlJavaTypeAdapter(OHLCAdapter.class) List<IOHLC> data = new ArrayList<IOHLC>(); @XmlElementRef @XmlJavaTypeAdapter(SplitAdapter.class) List<ISplit> splits = new ArrayList<ISplit>(); public HistoryType() { } public HistoryType(ISecurity security, IOHLC[] data) { this(security, data, null, null); } public HistoryType(ISecurity security, IOHLC[] data, TimeSpan period) { this(security, data, null, period); } public HistoryType(ISecurity security, IOHLC[] data, ISplit[] splits, TimeSpan period) { this.security = security; if (data != null) { this.data = new ArrayList<IOHLC>(Arrays.asList(data)); } if (splits != null) { this.splits = new ArrayList<ISplit>(Arrays.asList(splits)); } this.period = period; } @XmlTransient public List<IOHLC> getData() { return data; } public IOHLC[] toArray() { return data.toArray(new IOHLC[data.size()]); } public ISecurity getSecurity() { return security; } public TimeSpan getPeriod() { return period; } public ISplit[] getSplits() { return splits.toArray(new ISplit[splits.size()]); } /* (non-Javadoc) * @see java.lang.Comparable#compareTo(java.lang.Object) */ @Override public int compareTo(HistoryType o) { if (period.getUnits() == o.period.getUnits()) { return period.getLength() - o.period.getLength(); } return period.getUnits().ordinal() - o.period.getUnits().ordinal(); } }