Normand Briere
2018-07-07 e416acb9b012b17d1efe49ad2199ea7132d874d1
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package timeflow.data.time;
 
import java.util.Calendar;
import java.util.Date;
 
public class RoughTime implements Comparable {
 
   public static final long UNKNOWN=Long.MIN_VALUE;
   private TimeUnit units;
   private long time;
       
   public RoughTime(TimeUnit units)
   {
       time=UNKNOWN;
       this.units=units;
   }
   
   public RoughTime(long time, TimeUnit units)
   {
       this.time=time;
       this.units=units;
   }
   
   public boolean isDefined()
   {
       return time!=UNKNOWN;
   }
   
   public long getTime()
   {
       return time;
   }
   
   public void setTime(long time)
   {
       this.time=time;
   }
   
   public Date toDate()
   {
       return new Date(time);
   }
   
   public boolean after(RoughTime t)
   {
       return t.time<time;
   }
   
   public boolean before(RoughTime t)
   {
       return t.time>time;
   }
   
   public RoughTime plus(int numUnits)
   {
       return plus(units, numUnits);
   }
   
   public RoughTime plus(TimeUnit unit, int times)
   {
       RoughTime r=copy();
       unit.addTo(r,times);
       return r;
   }
   
   public String toString()
   {
       if (isKnown())
           return new Date(time).toString();
       return "unknown";
   }
   
   public boolean isKnown()
   {
       return time!=UNKNOWN;
   }
   
   public boolean equals(Object o)
   {
       if (!(o instanceof RoughTime))
           return false;
       RoughTime t=(RoughTime)o;
       return t.units==units  && t.time==time;
   }
   
   public RoughTime copy()
   {
       RoughTime t=new RoughTime(time, units);
       return t;
   }
   
   public void setUnits(TimeUnit units)
   {
       this.units=units;
   }
 
   public TimeUnit getUnits() {
       return units;
   }
   
   public String format()
   {
       return units.formatFull(time);
   }
   
   public static int compare(RoughTime t1, RoughTime t2)
   {
       if (t1==t2)
           return 0;
       if (t1==null)
           return -1;
       if (t2==null)
           return 1;
       long dt= t1.time-t2.time;
       if (dt==0)
           return 0;
       if (dt>0)
           return 1;
       return -1;
   }
 
   @Override
   public int compareTo(Object o) {
       return compare(this, (RoughTime)o);
   }
 
 
}