/* * 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.ui.internal.charts; 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.XmlAdapter; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.eclipsetrader.core.feed.TimeSpan; @XmlRootElement(name = "period") public class Period { @XmlElement(name = "description") private String description; @XmlAttribute(name = "period") @XmlJavaTypeAdapter(TimeSpanAdapter.class) private TimeSpan period; @XmlAttribute(name = "resolution") @XmlJavaTypeAdapter(TimeSpanAdapter.class) private TimeSpan resolution; public static class TimeSpanAdapter extends XmlAdapter<String, TimeSpan> { public TimeSpanAdapter() { } /* (non-Javadoc) * @see javax.xml.bind.annotation.adapters.XmlAdapter#marshal(java.lang.Object) */ @Override public String marshal(TimeSpan v) throws Exception { return v != null ? v.toString() : null; } /* (non-Javadoc) * @see javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal(java.lang.Object) */ @Override public TimeSpan unmarshal(String v) throws Exception { return v != null ? TimeSpan.fromString(v) : null; } } public Period() { } public Period(String description, TimeSpan period, TimeSpan barSize) { this.description = description; this.period = period; this.resolution = barSize; } @XmlTransient public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } @XmlTransient public TimeSpan getPeriod() { return period; } public void setPeriod(TimeSpan period) { this.period = period; } @XmlTransient public TimeSpan getResolution() { return resolution; } public void setResolution(TimeSpan resolution) { this.resolution = resolution; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { return 3 * description.hashCode() + 7 * period.hashCode() + 11 * resolution.hashCode(); } public boolean equalsTo(TimeSpan period, TimeSpan resolution) { if (!this.period.equals(period)) { return false; } if (!this.resolution.equals(resolution)) { return false; } return true; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (!(obj instanceof Period)) { return false; } Period other = (Period) obj; if (!description.equals(other.description)) { return false; } if (!period.equals(other.period)) { return false; } if (!resolution.equals(other.resolution)) { return false; } return true; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Period [" + period + ", resolution=" + resolution + "]"; } }