/*
* 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.Date;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
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.TimeSpan;
import org.eclipsetrader.core.instruments.ISecurity;
@XmlRootElement(name = "day")
public class HistoryDayType {
@XmlAttribute(name = "security")
@XmlJavaTypeAdapter(SecurityAdapter.class)
private ISecurity security;
@XmlAttribute(name = "date")
@XmlJavaTypeAdapter(DateAdapter.class)
private Date date;
@XmlElementRef
private Set<HistoryType> periods = new TreeSet<HistoryType>();
HistoryDayType() {
}
public HistoryDayType(ISecurity security, Date date) {
this.security = security;
this.date = date;
}
public void addHistory(HistoryType historyType) {
for (Iterator<HistoryType> iter = periods.iterator(); iter.hasNext();) {
if (iter.next().getPeriod().equals(historyType.getPeriod())) {
iter.remove();
}
}
periods.add(historyType);
}
public void removeHistory(HistoryType historyType) {
for (Iterator<HistoryType> iter = periods.iterator(); iter.hasNext();) {
if (iter.next().getPeriod().equals(historyType.getPeriod())) {
iter.remove();
}
}
}
public void removeHistory(TimeSpan timeSpan) {
for (Iterator<HistoryType> iter = periods.iterator(); iter.hasNext();) {
if (iter.next().getPeriod().equals(timeSpan)) {
iter.remove();
}
}
}
public void removeAll() {
periods.clear();
}
@XmlTransient
public ISecurity getSecurity() {
return security;
}
@XmlTransient
public Date getDate() {
return date;
}
@XmlTransient
public HistoryType[] getPeriods() {
return periods.toArray(new HistoryType[periods.size()]);
}
public HistoryType getPeriod(TimeSpan period) {
for (HistoryType type : periods) {
if (type.getPeriod() == period) {
return type;
}
}
return null;
}
}