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:
30: public class SetExecutionTime extends ExecutionRate implements EGObject {
31: public long theTime = -1L;
32: public boolean timeIsAbsolute = false;
33: public long theTransitionInterval;
34:
35: public static SetExecutionTime createAbsoluteInstance(
36: long anAbsoluteTime, double anExecutionRate,
37: long aTransitionInterval) {
38: return new SetExecutionTime(anAbsoluteTime, true,
39: anExecutionRate, aTransitionInterval);
40: }
41:
42: public static SetExecutionTime createRelativeInstance(
43: long aDeltaTime, double anExecutionRate,
44: long aTransitionInterval) {
45: return new SetExecutionTime(aDeltaTime, false, anExecutionRate,
46: aTransitionInterval);
47: }
48:
49: public static SetExecutionTime createRateChangeInstance(
50: double anExecutionRate) {
51: return new SetExecutionTime(0L, false, anExecutionRate, 0L);
52: }
53:
54: /**
55: * Construct an absolute or relative advancement with a given rate.
56: * Private constructor. Use static create methods.
57: **/
58: private SetExecutionTime(long aTime, boolean isAbsolute,
59: double anExecutionRate, long aTransitionInterval) {
60: super (anExecutionRate);
61: theTime = aTime;
62: timeIsAbsolute = isAbsolute;
63: theTransitionInterval = aTransitionInterval;
64: }
65:
66: public SetExecutionTime() {
67: }
68:
69: public void write(LineWriter writer) throws IOException {
70: super .write(writer);
71: writer.writeLong(theTime);
72: writer.writeBoolean(timeIsAbsolute);
73: writer.writeLong(theTransitionInterval);
74: }
75:
76: public void read(LineReader reader) throws IOException {
77: super .read(reader);
78: theTime = reader.readLong();
79: timeIsAbsolute = reader.readBoolean();
80: theTransitionInterval = reader.readLong();
81: }
82:
83: public String toString() {
84: return "*" + theExecutionRate + (timeIsAbsolute ? "@" : "+")
85: + theTime;
86: }
87: }
|