package tim.prune.function.deletebydate; import java.text.DateFormat; import java.util.Date; import java.util.TimeZone; /** * Class to hold the information about a date, * including how many points correspond to the date * and whether it has been selected for deletion or not */ public class DateInfo implements Comparable { /** Date, or null for no date - used for earlier/later comparison */ private Date _date = null; /** String representation of date */ private String _dateString = null; /** Number of points with this date */ private int _numPoints = 0; /** Flag for deletion or retention */ private boolean _toDelete = false; // Doesn't really matter what format is used here, as long as dates are different private static final DateFormat DEFAULT_DATE_FORMAT = DateFormat.getDateInstance(); /** * @param inZone Timezone to use for the date identification */ public static void setTimezone(TimeZone inZone) { DEFAULT_DATE_FORMAT.setTimeZone(inZone); } /** * Constructor * @param inDate date object from timestamp */ public DateInfo(Date inDate) { _date = inDate; if (_date == null) { _dateString = ""; } else { _dateString = DEFAULT_DATE_FORMAT.format(_date); } _numPoints = 0; _toDelete = false; } /** * @return true if this info is for dateless points (points without timestamp) */ public boolean isDateless() { return (_date == null); } /** * @return string representation of date */ public String getString() { return _dateString; } /** * Compare with a given Date object to see if they represent the same date * @param inDate date to compare * @return true if they're the same date */ public boolean isSameDate(Date inDate) { if (inDate == null) { return (_date == null); } else if (_dateString == null) { return false; } String otherDateString = DEFAULT_DATE_FORMAT.format(inDate); return _dateString.equals(otherDateString); } /** * Increment the point count */ public void incrementCount() { _numPoints++; } /** * @return point count */ public int getPointCount() { return _numPoints; } /** * @param inFlag true to delete, false to keep */ public void setDeleteFlag(boolean inFlag) { _toDelete = inFlag; } /** * @return true to delete, false to keep */ public boolean getDeleteFlag() { return _toDelete; } /** * Compare with another DateInfo object for sorting */ public int compareTo(DateInfo inOther) { // Dateless goes first if (_date == null || _dateString == null) {return -1;} if (inOther._date == null || inOther._dateString == null) {return 1;} // Just compare dates return _date.compareTo(inOther._date); } }