home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 November / PCO1197.ISO / FilesBBS / WIN95 / NET_COM / N32E403.EXE / netcast.z / ncjava10.jar / netscape / netcast / application / ChannelScheduler.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-09-03  |  3.6 KB  |  208 lines

  1. package netscape.netcast.application;
  2.  
  3. import java.util.Date;
  4.  
  5. public class ChannelScheduler implements TimerClient {
  6.    static final int PRIORITY = 1;
  7.    static final int WORKDAY_START_HOUR = 9;
  8.    static final int WORKDAY_END_HOUR = 17;
  9.    static final int DELAY_TIME = 2;
  10.    static final int MINUTES_PER_DAY = 1440;
  11.    static final int CONSTELLATION_TIME_ANY = 0;
  12.    static final int CONSTELLATION_TIME_WORKHOURS = 1;
  13.    static final int CONSTELLATION_TIME_NOT_WORKHOURS = 2;
  14.    static final int CONSTELLATION_TIME_NEVER = -1;
  15.    static final int CONSTELLATION_UPDATE_UNKNOWN = 0;
  16.    static final int CONSTELLATION_UPDATE_NEVER = -1;
  17.    static final int CONSTELLATION_UPDATE_15 = -2;
  18.    static final int CONSTELLATION_UPDATE_30 = -3;
  19.    static final int CONSTELLATION_UPDATE_DEFAULT = 60;
  20.    static final int CONSTELLATION_UPDATE_HOURLY = -4;
  21.    static final int CONSTELLATION_UPDATE_DAILY = -5;
  22.    static final int CONSTELLATION_UPDATE_WEEKLY = -6;
  23.    static final int CONSTELLATION_UPDATE_UNSET = -7;
  24.    long beginTime = System.currentTimeMillis() + 120000L;
  25.  
  26.    public ChannelScheduler() {
  27.       this.reset();
  28.    }
  29.  
  30.    public synchronized void reset() {
  31.    }
  32.  
  33.    long nextTime(Object var1) {
  34.       int var2 = -1;
  35.       int var3 = -1;
  36.       int var4;
  37.       if (var1 != null) {
  38.          var4 = ((Alarmable)var1).getFrequency();
  39.       } else {
  40.          var4 = -1;
  41.       }
  42.  
  43.       switch (var4) {
  44.          case -6:
  45.             var3 = ((Alarmable)var1).getUpdateTime();
  46.             if (var3 < 0) {
  47.                var4 = 60;
  48.             } else {
  49.                var2 = var3 / 1440;
  50.                var3 -= var2 * 1440;
  51.                var4 = 0;
  52.             }
  53.             break;
  54.          case -5:
  55.          case 0:
  56.             var4 = 0;
  57.             var3 = ((Alarmable)var1).getUpdateTime();
  58.             if (var3 < 0) {
  59.                var4 = 60;
  60.             }
  61.             break;
  62.          case -4:
  63.             var4 = 60;
  64.             break;
  65.          case -3:
  66.             var4 = 30;
  67.             break;
  68.          case -2:
  69.             var4 = 15;
  70.             break;
  71.          case -1:
  72.             return -1L;
  73.          default:
  74.             if (var4 < 0) {
  75.                var4 = 60;
  76.             }
  77.       }
  78.  
  79.       Date var6 = new Date();
  80.       long var7 = var6.getTime();
  81.       if (var7 < this.beginTime) {
  82.          return this.beginTime;
  83.       } else {
  84.          int var9 = var6.getHours();
  85.          int var10 = ((Alarmable)var1).getUpdateTimes();
  86.          switch (var10) {
  87.             case 0:
  88.                break;
  89.             case 1:
  90.                int var23 = ((Alarmable)var1).getStartTime();
  91.                int var25 = ((Alarmable)var1).getEndTime();
  92.                if (var9 < var23) {
  93.                   var6.setHours(var23);
  94.                   var6.setMinutes(0);
  95.                   return var6.getTime();
  96.                }
  97.  
  98.                if (var9 >= var25) {
  99.                   var6.setDate(var6.getDate() + 1);
  100.                   var6.setHours(var23);
  101.                   var6.setMinutes(0);
  102.                   return var6.getTime();
  103.                }
  104.                break;
  105.             case 2:
  106.                int var11 = ((Alarmable)var1).getStartTime();
  107.                int var12 = ((Alarmable)var1).getEndTime();
  108.                if (var9 >= var11 && var9 < var12) {
  109.                   var6.setHours(var11);
  110.                   var6.setMinutes(0);
  111.                   return var6.getTime();
  112.                }
  113.                break;
  114.             default:
  115.                return -1L;
  116.          }
  117.  
  118.          var9 = var6.getHours();
  119.          int var24 = ((Alarmable)var1).getAdminUpdateTimes();
  120.          switch (var24) {
  121.             case 0:
  122.                break;
  123.             case 1:
  124.                int var27 = ((Alarmable)var1).getAdminStartTime();
  125.                int var29 = ((Alarmable)var1).getAdminEndTime();
  126.                if (var9 < var27) {
  127.                   var6.setHours(var27);
  128.                   var6.setMinutes(0);
  129.                   return var6.getTime();
  130.                }
  131.  
  132.                if (var9 >= var29) {
  133.                   var6.setDate(var6.getDate() + 1);
  134.                   var6.setHours(var27);
  135.                   var6.setMinutes(0);
  136.                   return var6.getTime();
  137.                }
  138.                break;
  139.             case 2:
  140.                int var26 = ((Alarmable)var1).getAdminStartTime();
  141.                int var13 = ((Alarmable)var1).getAdminEndTime();
  142.                if (var9 >= var26 && var9 < var13) {
  143.                   var6.setHours(var26);
  144.                   var6.setMinutes(0);
  145.                   return var6.getTime();
  146.                }
  147.                break;
  148.             default:
  149.                return -1L;
  150.          }
  151.  
  152.          long var28 = ((Alarmable)var1).getLastUpdate();
  153.          if (var28 + (long)(var4 * 60) * 1000L > var7) {
  154.             return var28 + (long)(var4 * 60) * 1000L;
  155.          } else if (var4 != 0) {
  156.             return var7;
  157.          } else {
  158.             Date var14 = new Date();
  159.             int var15 = var14.getDay();
  160.             if (var2 > -1 && var2 != var15) {
  161.                var14.setDate(var14.getDate() + 1);
  162.                var14.setHours(0);
  163.                var14.setMinutes(0);
  164.                return var14.getTime();
  165.             } else {
  166.                var14.setHours(0);
  167.                var14.setMinutes(0);
  168.                long var16 = var14.getTime() + (long)(var3 * 60) * 1000L;
  169.                if (var16 > var7) {
  170.                   return var16;
  171.                } else {
  172.                   long var18 = var16 + 300000L;
  173.                   long var20 = var16 - 300000L;
  174.                   return var7 >= var18 || var7 <= var20 || var28 < var18 && var28 > var20 ? var16 + 86400000L : var7;
  175.                }
  176.             }
  177.          }
  178.       }
  179.    }
  180.  
  181.    public synchronized long acmeAlarm(long var1, Object var3) {
  182.       var1 = this.nextTime(var3);
  183.       if (var1 > 0L) {
  184.          long var4 = System.currentTimeMillis();
  185.          if (var1 <= var4) {
  186.             this.update(var4, var3);
  187.             ((Alarmable)var3).setLastUpdate(var4);
  188.             var1 = this.nextTime(var3);
  189.          }
  190.       }
  191.  
  192.       return var1;
  193.    }
  194.  
  195.    void update(long var1, Object var3) {
  196.       switch (((Alarmable)var3).getFrequency()) {
  197.          case -1:
  198.             return;
  199.          default:
  200.             ((Alarmable)var3).autoUpdate();
  201.       }
  202.    }
  203.  
  204.    public synchronized void stop() {
  205.       NSTimer.master.remove(this);
  206.    }
  207. }
  208.