home *** CD-ROM | disk | FTP | other *** search
- package netscape.netcast.application;
-
- import java.util.Date;
-
- public class ChannelScheduler implements TimerClient {
- static final int PRIORITY = 1;
- static final int WORKDAY_START_HOUR = 9;
- static final int WORKDAY_END_HOUR = 17;
- static final int DELAY_TIME = 2;
- static final int MINUTES_PER_DAY = 1440;
- static final int CONSTELLATION_TIME_ANY = 0;
- static final int CONSTELLATION_TIME_WORKHOURS = 1;
- static final int CONSTELLATION_TIME_NOT_WORKHOURS = 2;
- static final int CONSTELLATION_TIME_NEVER = -1;
- static final int CONSTELLATION_UPDATE_UNKNOWN = 0;
- static final int CONSTELLATION_UPDATE_NEVER = -1;
- static final int CONSTELLATION_UPDATE_15 = -2;
- static final int CONSTELLATION_UPDATE_30 = -3;
- static final int CONSTELLATION_UPDATE_DEFAULT = 60;
- static final int CONSTELLATION_UPDATE_HOURLY = -4;
- static final int CONSTELLATION_UPDATE_DAILY = -5;
- static final int CONSTELLATION_UPDATE_WEEKLY = -6;
- static final int CONSTELLATION_UPDATE_UNSET = -7;
- long beginTime = System.currentTimeMillis() + 120000L;
-
- public ChannelScheduler() {
- this.reset();
- }
-
- public synchronized void reset() {
- }
-
- long nextTime(Object var1) {
- int var2 = -1;
- int var3 = -1;
- int var4;
- if (var1 != null) {
- var4 = ((Alarmable)var1).getFrequency();
- } else {
- var4 = -1;
- }
-
- switch (var4) {
- case -6:
- var3 = ((Alarmable)var1).getUpdateTime();
- if (var3 < 0) {
- var4 = 60;
- } else {
- var2 = var3 / 1440;
- var3 -= var2 * 1440;
- var4 = 0;
- }
- break;
- case -5:
- case 0:
- var4 = 0;
- var3 = ((Alarmable)var1).getUpdateTime();
- if (var3 < 0) {
- var4 = 60;
- }
- break;
- case -4:
- var4 = 60;
- break;
- case -3:
- var4 = 30;
- break;
- case -2:
- var4 = 15;
- break;
- case -1:
- return -1L;
- default:
- if (var4 < 0) {
- var4 = 60;
- }
- }
-
- Date var6 = new Date();
- long var7 = var6.getTime();
- if (var7 < this.beginTime) {
- return this.beginTime;
- } else {
- int var9 = var6.getHours();
- int var10 = ((Alarmable)var1).getUpdateTimes();
- switch (var10) {
- case 0:
- break;
- case 1:
- int var23 = ((Alarmable)var1).getStartTime();
- int var25 = ((Alarmable)var1).getEndTime();
- if (var9 < var23) {
- var6.setHours(var23);
- var6.setMinutes(0);
- return var6.getTime();
- }
-
- if (var9 >= var25) {
- var6.setDate(var6.getDate() + 1);
- var6.setHours(var23);
- var6.setMinutes(0);
- return var6.getTime();
- }
- break;
- case 2:
- int var11 = ((Alarmable)var1).getStartTime();
- int var12 = ((Alarmable)var1).getEndTime();
- if (var9 >= var11 && var9 < var12) {
- var6.setHours(var11);
- var6.setMinutes(0);
- return var6.getTime();
- }
- break;
- default:
- return -1L;
- }
-
- var9 = var6.getHours();
- int var24 = ((Alarmable)var1).getAdminUpdateTimes();
- switch (var24) {
- case 0:
- break;
- case 1:
- int var27 = ((Alarmable)var1).getAdminStartTime();
- int var29 = ((Alarmable)var1).getAdminEndTime();
- if (var9 < var27) {
- var6.setHours(var27);
- var6.setMinutes(0);
- return var6.getTime();
- }
-
- if (var9 >= var29) {
- var6.setDate(var6.getDate() + 1);
- var6.setHours(var27);
- var6.setMinutes(0);
- return var6.getTime();
- }
- break;
- case 2:
- int var26 = ((Alarmable)var1).getAdminStartTime();
- int var13 = ((Alarmable)var1).getAdminEndTime();
- if (var9 >= var26 && var9 < var13) {
- var6.setHours(var26);
- var6.setMinutes(0);
- return var6.getTime();
- }
- break;
- default:
- return -1L;
- }
-
- long var28 = ((Alarmable)var1).getLastUpdate();
- if (var28 + (long)(var4 * 60) * 1000L > var7) {
- return var28 + (long)(var4 * 60) * 1000L;
- } else if (var4 != 0) {
- return var7;
- } else {
- Date var14 = new Date();
- int var15 = var14.getDay();
- if (var2 > -1 && var2 != var15) {
- var14.setDate(var14.getDate() + 1);
- var14.setHours(0);
- var14.setMinutes(0);
- return var14.getTime();
- } else {
- var14.setHours(0);
- var14.setMinutes(0);
- long var16 = var14.getTime() + (long)(var3 * 60) * 1000L;
- if (var16 > var7) {
- return var16;
- } else {
- long var18 = var16 + 300000L;
- long var20 = var16 - 300000L;
- return var7 >= var18 || var7 <= var20 || var28 < var18 && var28 > var20 ? var16 + 86400000L : var7;
- }
- }
- }
- }
- }
-
- public synchronized long acmeAlarm(long var1, Object var3) {
- var1 = this.nextTime(var3);
- if (var1 > 0L) {
- long var4 = System.currentTimeMillis();
- if (var1 <= var4) {
- this.update(var4, var3);
- ((Alarmable)var3).setLastUpdate(var4);
- var1 = this.nextTime(var3);
- }
- }
-
- return var1;
- }
-
- void update(long var1, Object var3) {
- switch (((Alarmable)var3).getFrequency()) {
- case -1:
- return;
- default:
- ((Alarmable)var3).autoUpdate();
- }
- }
-
- public synchronized void stop() {
- NSTimer.master.remove(this);
- }
- }
-