File: GarminSession.cs

package info (click to toggle)
quickroute-gps 2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 19,576 kB
  • sloc: cs: 74,488; makefile: 72; sh: 43
file content (96 lines) | stat: -rw-r--r-- 2,458 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using System;
using System.Collections.Generic;

namespace QuickRoute.GPSDeviceReaders.GarminUSBReader
{
  [Serializable]
  public class GarminSession
  {
    public GarminSession(D1010_Run_Type run, IList<D1001_Lap_Type> laps, IList<D303_Trk_Point_Type> trackpoints)
    {
      Run = run;
      Laps = laps;
      Trackpoints = trackpoints;
    }

    public D1010_Run_Type Run { get; private set; }

    public IList<D1001_Lap_Type> Laps { get; private set; }

    public IList<D303_Trk_Point_Type> Trackpoints { get; private set; }

    public DateTime StartTime
    {
      get { return Laps[0].StartTimeAsDateTime; }
    }

    public DateTime FinishTime
    {
      get { return Laps[Laps.Count - 1].FinishTimeAsDateTime; }
    }

    public GarminSessionHeader GetHeader()
    {
      return new GarminSessionHeader()
               {
                 StartTime = StartTime,
                 FinishTime = FinishTime,
                 NumberOfLaps = Laps.Count
               };
    }
  }

  [Serializable]
  public class GarminSessionHeader : IComparable<GarminSessionHeader>, IComparable
  {
    public DateTime StartTime { get; set; }
    public DateTime FinishTime { get; set; }
    public int NumberOfLaps { get; set; }

    public string Key
    {
      get { return string.Format("{0:yyyyMMddHHmmss}-{1:yyyyMMddHHmmss}-{2}", StartTime, FinishTime, NumberOfLaps); }
    }

    #region IComparable<GarminSession> Members

    public int CompareTo(GarminSessionHeader other)
    {
      if (NumberOfLaps == 0 && other.NumberOfLaps == 0) return 0;
      if (NumberOfLaps == 0 && other.NumberOfLaps > 0) return 1;
      if (NumberOfLaps > 0 && other.NumberOfLaps == 0) return -1;

      var startTimeComparison = StartTime.CompareTo(other.StartTime);
      return startTimeComparison != 0
               ? startTimeComparison
               : FinishTime.CompareTo(other.FinishTime);
    }

    #endregion

    #region IComparable Members

    public int CompareTo(object obj)
    {
      var other = obj as GarminSessionHeader;
      if (other != null)
      {
        return CompareTo(other);
      }
      else
      {
        return -1;
      }

    }

    #endregion

    public override string ToString()
    {
      return NumberOfLaps > 0
               ? StartTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss")
               : "";
    }
  }
}