package org.chartsy.main.intervals; import java.io.Serializable; import java.util.Calendar; import org.chartsy.main.utils.SerialVersion; /** * * @author viorel.gheba */ public abstract class Interval implements Serializable { private static final long serialVersionUID = SerialVersion.APPVERSION; protected String name = ""; protected String timeParam = ""; protected boolean intraDay = false; public Interval(String name) { this.name = name; this.intraDay = false; } public Interval(String name, boolean intraDay) { this.name = name; this.intraDay = intraDay; } public String getName() { return name; } public boolean isIntraDay() { return intraDay; } public abstract long startTime(); public abstract String getTimeParam(); public abstract int getLengthInSeconds(); public String getMarkerString(long time) { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(time); StringBuilder sb = new StringBuilder(); if (!isIntraDay()) { int day = cal.get(Calendar.DAY_OF_MONTH); int month = cal.get(Calendar.MONTH) + 1; int year = cal.get(Calendar.YEAR); if (month < 10) { sb.append("0"); } sb.append(Integer.toString(month)); sb.append("/"); if (day < 10) { sb.append("0"); } sb.append(Integer.toString(day)); sb.append("/"); sb.append(Integer.toString(year)); return sb.toString(); } else { int day = cal.get(Calendar.DAY_OF_MONTH); int month = cal.get(Calendar.MONTH) + 1; int hour = cal.get(Calendar.HOUR_OF_DAY); int minute = cal.get(Calendar.MINUTE); int seconds = cal.get(Calendar.SECOND); if (month < 10) { sb.append("0"); } sb.append(Integer.toString(month)); sb.append("/"); if (day < 10) { sb.append("0"); } sb.append(Integer.toString(day)); sb.append(" "); if (hour < 10) { sb.append("0"); } sb.append(Integer.toString(hour)); sb.append(":"); if (minute < 10) { sb.append("0"); } sb.append(Integer.toString(minute)); if (getLengthInSeconds() < 60) { sb.append(":"); if (seconds < 10) sb.append("0"); sb.append(Integer.toString(seconds)); } return sb.toString(); } } public @Override String toString() { return name; } public @Override boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof Interval)) { return false; } Interval that = (Interval) obj; if (!that.getName().equals(getName())) { return false; } if (!that.getTimeParam().equals(getTimeParam())) { return false; } return true; } public @Override int hashCode() { int hash = 5; hash = 13 * hash + (this.name != null ? this.name.hashCode() : 0); hash = 13 * hash + (this.timeParam != null ? this.timeParam.hashCode() : 0); hash = 13 * hash + (this.intraDay ? 1 : 0); return hash; } }