89 if (rec1.getMonthNum() > rec2.getMonthNum()) {
90 rules.set(0, rec2);
91 rules.set(1, rec1);
92 } else if (rec1.getMonthNum() == rec2.getMonthNum()) {
93 // TODO: it's not accurate to ignore time types (STD, WALL, UTC)
94 long t1 = Time.getLocalTime(year, rec1.getMonth(),
95 rec1.getDay(), rec1.getTime().getTime());
96 long t2 = Time.getLocalTime(year, rec2.getMonth(),
97 rec2.getDay(), rec2.getTime().getTime());
98 if (t1 > t2) {
99 rules.set(0, rec2);
100 rules.set(1, rec1);
101 }
102 }
103 return rules;
104 }
105
106 final int y = year;
107 RuleRec[] recs = new RuleRec[rules.size()];
108 rules.toArray(recs);
109 Arrays.sort(recs, new Comparator<RuleRec>() {
110 public int compare(RuleRec r1, RuleRec r2) {
111 int n = r1.getMonthNum() - r2.getMonthNum();
112 if (n != 0) {
113 return n;
114 }
115 // TODO: it's not accurate to ignore time types (STD, WALL, UTC)
116 long t1 = Time.getLocalTime(y, r1.getMonth(),
117 r1.getDay(), r1.getTime().getTime());
118 long t2 = Time.getLocalTime(y, r2.getMonth(),
119 r2.getDay(), r2.getTime().getTime());
120 return (int)(t1 - t2);
121 }
122 public boolean equals(Object o) {
123 return this == o;
124 }
125 });
126 rules.clear();
127 for (int i = 0; i < n; i++) {
128 rules.add(recs[i]);
129 }
130 return rules;
131 }
132
133 /**
134 * Gets rule records that have either "max" or cover the endYear
135 * value in its DST schedule.
136 *
137 * @return rules that contain last DST schedule. An empty
138 * ArrayList is returned if no last rules are found.
139 */
140 List<RuleRec> getLastRules() {
|
89 if (rec1.getMonthNum() > rec2.getMonthNum()) {
90 rules.set(0, rec2);
91 rules.set(1, rec1);
92 } else if (rec1.getMonthNum() == rec2.getMonthNum()) {
93 // TODO: it's not accurate to ignore time types (STD, WALL, UTC)
94 long t1 = Time.getLocalTime(year, rec1.getMonth(),
95 rec1.getDay(), rec1.getTime().getTime());
96 long t2 = Time.getLocalTime(year, rec2.getMonth(),
97 rec2.getDay(), rec2.getTime().getTime());
98 if (t1 > t2) {
99 rules.set(0, rec2);
100 rules.set(1, rec1);
101 }
102 }
103 return rules;
104 }
105
106 final int y = year;
107 RuleRec[] recs = new RuleRec[rules.size()];
108 rules.toArray(recs);
109
110 Arrays.sort(recs, new Comparator<RuleRec>() {
111 public int compare(RuleRec r1, RuleRec r2) {
112 int n = r1.getMonthNum() - r2.getMonthNum();
113 if (n != 0) {
114 return n;
115 }
116 // TODO: it's not accurate to ignore time types (STD, WALL, UTC)
117 long t1 = Time.getLocalTime(y, r1.getMonth(),
118 r1.getDay(), r1.getTime().getTime());
119 long t2 = Time.getLocalTime(y, r2.getMonth(),
120 r2.getDay(), r2.getTime().getTime());
121 return Long.compare(t1, t2);
122 }
123 public boolean equals(Object o) {
124 return this == o;
125 }
126 });
127 rules.clear();
128 for (int i = 0; i < n; i++) {
129 rules.add(recs[i]);
130 }
131 return rules;
132 }
133
134 /**
135 * Gets rule records that have either "max" or cover the endYear
136 * value in its DST schedule.
137 *
138 * @return rules that contain last DST schedule. An empty
139 * ArrayList is returned if no last rules are found.
140 */
141 List<RuleRec> getLastRules() {
|