/* */ package com.ibm.icu.util; /* */ /* */ import java.util.Date; /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ public class SimpleDateRule /* */ implements DateRule /* */ { /* */ public SimpleDateRule(int month, int dayOfMonth) /* */ { /* 32 */ this.month = month; /* 33 */ this.dayOfMonth = dayOfMonth; /* 34 */ this.dayOfWeek = 0; /* */ } /* */ /* */ /* */ SimpleDateRule(int month, int dayOfMonth, Calendar cal) /* */ { /* 40 */ this.month = month; /* 41 */ this.dayOfMonth = dayOfMonth; /* 42 */ this.dayOfWeek = 0; /* 43 */ this.calendar = cal; /* */ } /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ public SimpleDateRule(int month, int dayOfMonth, int dayOfWeek, boolean after) /* */ { /* 60 */ this.month = month; /* 61 */ this.dayOfMonth = dayOfMonth; /* 62 */ this.dayOfWeek = (after ? dayOfWeek : -dayOfWeek); /* */ } /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ public Date firstAfter(Date start) /* */ { /* 80 */ return doFirstBetween(start, null); /* */ } /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ public Date firstBetween(Date start, Date end) /* */ { /* 101 */ return doFirstBetween(start, end); /* */ } /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ public boolean isOn(Date date) /* */ { /* 118 */ Calendar c = this.calendar; /* */ /* 120 */ synchronized (c) { /* 121 */ c.setTime(date); /* */ /* 123 */ int dayOfYear = c.get(6); /* */ /* 125 */ c.setTime(computeInYear(c.get(1), c)); /* */ /* */ /* */ /* */ /* 130 */ return c.get(6) == dayOfYear; /* */ } /* */ } /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ public boolean isBetween(Date start, Date end) /* */ { /* 142 */ return firstBetween(start, end) != null; /* */ } /* */ /* */ private Date doFirstBetween(Date start, Date end) /* */ { /* 147 */ Calendar c = this.calendar; /* */ /* 149 */ synchronized (c) { /* 150 */ c.setTime(start); /* */ /* 152 */ int year = c.get(1); /* 153 */ int mon = c.get(2); /* */ /* */ /* */ /* 157 */ if (mon > this.month) { /* 158 */ year++; /* */ } /* */ /* */ /* 162 */ Date result = computeInYear(year, c); /* */ /* */ /* */ /* 166 */ if ((mon == this.month) && (result.before(start))) { /* 167 */ result = computeInYear(year + 1, c); /* */ } /* */ /* 170 */ if ((end != null) && (result.after(end))) { /* 171 */ return null; /* */ } /* 173 */ return result; /* */ } /* */ } /* */ /* */ private Date computeInYear(int year, Calendar c) /* */ { /* 179 */ synchronized (c) { /* 180 */ c.clear(); /* 181 */ c.set(0, c.getMaximum(0)); /* 182 */ c.set(1, year); /* 183 */ c.set(2, this.month); /* 184 */ c.set(5, this.dayOfMonth); /* */ /* */ /* */ /* 188 */ if (this.dayOfWeek != 0) { /* 189 */ c.setTime(c.getTime()); /* 190 */ int weekday = c.get(7); /* */ /* */ /* */ /* */ /* 195 */ int delta = 0; /* 196 */ if (this.dayOfWeek > 0) /* */ { /* */ /* 199 */ delta = (this.dayOfWeek - weekday + 7) % 7; /* */ /* */ } /* */ else /* */ { /* 204 */ delta = -((this.dayOfWeek + weekday + 7) % 7); /* */ } /* */ /* 207 */ c.add(5, delta); /* */ } /* */ /* 210 */ return c.getTime(); /* */ } /* */ } /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* 222 */ private static GregorianCalendar gCalendar = new GregorianCalendar(); /* */ /* 224 */ private Calendar calendar = gCalendar; /* */ private int month; /* */ private int dayOfMonth; /* */ private int dayOfWeek; /* */ } /* Location: C:\Users\Ethan\Desktop\FontZip\FontTool\sfnttool.jar!\com\ibm\icu\util\SimpleDateRule.class * Java compiler version: 5 (49.0) * JD-Core Version: 0.7.1 */