test/sun/util/calendar/zi/Rule.java

Print this page




  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() {