01: /*
02: * <copyright>
03: *
04: * Copyright 1997-2004 BBNT Solutions, LLC
05: * under sponsorship of the Defense Advanced Research Projects
06: * Agency (DARPA).
07: *
08: * You can redistribute this software and/or modify it under the
09: * terms of the Cougaar Open Source License as published on the
10: * Cougaar Open Source Website (www.cougaar.org).
11: *
12: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23: *
24: * </copyright>
25: */
26: package org.cougaar.glm.execution.common;
27:
28: import java.io.IOException;
29: import java.util.GregorianCalendar;
30:
31: import org.cougaar.glm.ldm.asset.ReportSchedulePG;
32:
33: public class ReportSchedule extends EGObjectBase implements EGObject {
34:
35: /**
36: * Schedule times are expressed as a Calendar indicating some point in the cycle of the schedule plus one of the constants from the Calendar class indicating which field of the calendar varies. So a weekly schedule for reports at 10:03 AM on Tuesdays would have:
37: * calendar.setTime(new Date(currentExecutionTimeInMillis))
38: * calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
39: * calendar.set(Calendar.HOUR), 10);
40: * calendar.set(Calendar.MINUTE), 3);
41: * calendar.set(Calendar.SECOND), 0);
42: * calendar.set(Calendar.MILLISECOND), 0);
43: * vary = Calendar.WEEK
44: * offset is expressed in minutes after the beginning of the period
45: * assuming 31 day months.
46: *
47: * HOURLY -- minute of the hour
48: * DAILY -- minute of the day
49: * WEEKLY -- minute of the week
50: * MONTHLY -- minute of the month
51: *
52: **/
53: public GregorianCalendar theBase; // The time of the first report
54: public int theStep; // The kind of step (e.g. Calendar.DAY)
55: public int theJitter;
56:
57: public ReportSchedule(ReportSchedulePG rspg) {
58: theBase = rspg.getBase();
59: theStep = rspg.getStep();
60: theJitter = rspg.getJitter();
61: }
62:
63: public ReportSchedule() {
64: }
65:
66: public void write(LineWriter writer) throws IOException {
67: writer.writeObject(theBase);
68: writer.writeInt(theStep);
69: writer.writeInt(theJitter);
70: }
71:
72: public void read(LineReader reader) throws IOException {
73: theBase = (GregorianCalendar) reader.readObject();
74: theStep = reader.readInt();
75: theJitter = reader.readInt();
76: }
77: }
|