+++ /dev/null
-package tim.prune.function.deletebydate;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-
-/**
- * List of date info objects for use by the table model
- */
-public class DateInfoList
-{
- /** list of info about points according to date */
- private List<DateInfo> _infoList = new ArrayList<DateInfo>();
- /** previously used dateinfo object to reduce list searching */
- private DateInfo _previousInfo = null;
- /** true if the list has been sorted, false otherwise */
- private boolean _hasBeenSorted = false;
-
-
- /**
- * Add a point to the corresponding dateinfo
- * @param inDate date of current point, or null if no timestamp
- */
- public void addPoint(Date inDate)
- {
- DateInfo currentInfo = null;
- if (_previousInfo != null && _previousInfo.isSameDate(inDate))
- {
- // found it
- currentInfo = _previousInfo;
- }
- else
- {
- // loop through list, to see if date already present
- for (DateInfo info : _infoList)
- {
- if (info.isSameDate(inDate))
- {
- currentInfo = info;
- break;
- }
- }
- // create new info if necessary
- if (currentInfo == null)
- {
- currentInfo = new DateInfo(inDate);
- _infoList.add(currentInfo);
- _hasBeenSorted = false;
- }
- _previousInfo = currentInfo;
- }
- // Now we've identified the current info or created a new one
- currentInfo.incrementCount();
- }
-
- /**
- * Clear the whole list
- */
- public void clearAll()
- {
- _infoList.clear();
- _previousInfo = null;
- _hasBeenSorted = true;
- }
-
- /**
- * @return number of entries in the list, including dateless points
- */
- public int getNumEntries()
- {
- return _infoList.size();
- }
-
- /**
- * @return the total number of points found, which should match the track size
- */
- public int getTotalNumPoints()
- {
- int total = 0;
- for (DateInfo info : _infoList) {
- total += info.getPointCount();
- }
- return total;
- }
-
- /**
- * Sort the info list by ascending timestamps
- */
- private void sort()
- {
- if (!_hasBeenSorted)
- {
- Collections.sort(_infoList);
- _hasBeenSorted = true;
- }
- }
-
- /**
- * Get the DateInfo object at the given index
- * @param inIndex index in (sorted) list
- * @return corresponding object (may throw exception if out of range)
- */
- public DateInfo getDateInfo(int inIndex)
- {
- sort();
- return _infoList.get(inIndex);
- }
-}