]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/function/autoplay/PointInfo.java
Moved source into separate src directory due to popular request
[GpsPrune.git] / tim / prune / function / autoplay / PointInfo.java
diff --git a/tim/prune/function/autoplay/PointInfo.java b/tim/prune/function/autoplay/PointInfo.java
deleted file mode 100644 (file)
index 1b04995..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-package tim.prune.function.autoplay;
-
-import tim.prune.data.DataPoint;
-import tim.prune.data.Timestamp;
-
-/**
- * Holds the information about a single point required for the sorting
- */
-public class PointInfo implements Comparable<PointInfo>
-{
-       /** Timestamp of the point, if any */
-       private Timestamp _timestamp  = null;
-       /** Point index in the track */
-       private int       _pointIndex = 0;
-       /** Segment flag of point */
-       private boolean   _segmentFlag = false;
-
-
-       /**
-        * Constructor
-        * @param inPoint point from track
-        * @param inIndex index of point in track
-        */
-       public PointInfo(DataPoint inPoint, int inIndex)
-       {
-               if (inPoint.hasTimestamp())
-               {
-                       _timestamp = inPoint.getTimestamp();
-               }
-               else if (inPoint.getPhoto() != null && inPoint.getPhoto().hasTimestamp())
-               {
-                       _timestamp = inPoint.getPhoto().getTimestamp();
-               }
-               _pointIndex = inIndex;
-               _segmentFlag = inPoint.getSegmentStart();
-       }
-
-       /** @return timestamp */
-       public Timestamp getTimestamp() {
-               return _timestamp;
-       }
-
-       /** @return point index */
-       public int getIndex() {
-               return _pointIndex;
-       }
-
-       /** @return segment flag */
-       public boolean getSegmentFlag() {
-               return _segmentFlag;
-       }
-
-       /**
-        * Sort two objects by timestamp and if times equal then by point index
-        */
-       public int compareTo(PointInfo inOther)
-       {
-               long timeDiff = 0;
-               final boolean thisHasTime = (_timestamp != null);
-               final boolean otherHasTime = (inOther._timestamp != null);
-               if (thisHasTime && otherHasTime)
-               {
-                       timeDiff = _timestamp.getMillisecondsSince(inOther._timestamp);
-               }
-               else if (thisHasTime)
-               {
-                       timeDiff = -1; // points without time to the end
-               }
-               else if (otherHasTime)
-               {
-                       timeDiff = 1;
-               }
-               // If the times are equal (or both missing) then use the point index
-               if (timeDiff == 0) {
-                       return _pointIndex - inOther._pointIndex;
-               }
-               // Otherwise, compare by time
-               return (timeDiff < 0 ? -1 : 1);
-       }
-
-       @Override
-       public boolean equals(Object inOther)
-       {
-               if (inOther == null) return false;
-               try
-               {
-                       PointInfo other = (PointInfo) inOther;
-                       if (_pointIndex != other._pointIndex) return false;
-                       final boolean thisHasTime = (_timestamp != null);
-                       final boolean otherHasTime = (other._timestamp != null);
-                       if (thisHasTime != otherHasTime) {return false;}
-                       if (!thisHasTime && !otherHasTime) {return true;}
-                       return _timestamp.isEqual(other._timestamp);
-               }
-               catch (ClassCastException cce) {}
-               return false;
-       }
-}