01: /*
02: * <copyright>
03: *
04: * Copyright 2002-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.core.examples.mobility.ldm;
27:
28: import java.io.Serializable;
29: import org.cougaar.core.mobility.Ticket;
30:
31: /**
32: * Script wrapper for StepOptions, allowing scripting
33: * override for the otherwise immutable options.
34: */
35: public class ScriptStep implements Script.Entry, Serializable {
36:
37: // flag modifiers; for infrastructure use only!
38: public static final int ADD_PAUSE = (1 << 0);
39: public static final int REL_PAUSE = (1 << 1);
40: public static final int PRI_PAUSE = (1 << 2);
41: public static final int ADD_TIMEOUT = (1 << 3);
42: public static final int REL_TIMEOUT = (1 << 4);
43: public static final int PRI_TIMEOUT = (1 << 5);
44:
45: public final int flags;
46:
47: // maybe replace with strings, to allow variable
48: // substitutions at runtime
49: public final StepOptions opts;
50:
51: public ScriptStep(int flags, StepOptions opts) {
52: this .flags = flags;
53: this .opts = opts;
54: if (opts == null) {
55: throw new IllegalArgumentException("null opts");
56: }
57: }
58:
59: public int getFlags() {
60: return flags;
61: }
62:
63: public boolean hasFlag(int f) {
64: // helper
65: return ((flags & f) != 0);
66: }
67:
68: public StepOptions getStepOptions() {
69: return opts;
70: }
71:
72: public String toString() {
73: Ticket t = opts.getTicket();
74: return "move "
75: + ((opts.getTarget() != null) ? opts.getTarget()
76: .toString() : "")
77: + ", "
78: + (hasFlag(ADD_PAUSE) ? "+" : "")
79: + (hasFlag(REL_PAUSE) ? "@" : "")
80: + (hasFlag(PRI_PAUSE) ? "^" : "")
81: + opts.getPauseTime()
82: + ", "
83: + (hasFlag(ADD_TIMEOUT) ? "+" : "")
84: + (hasFlag(REL_TIMEOUT) ? "@" : "")
85: + (hasFlag(PRI_TIMEOUT) ? "^" : "")
86: + opts.getTimeoutTime()
87: + ", "
88: + ((t.getMobileAgent() != null) ? t.getMobileAgent()
89: .toString() : "")
90: + ", "
91: + ((t.getOriginNode() != null) ? t.getOriginNode()
92: .toString() : "")
93: + ", "
94: + ((t.getDestinationNode() != null) ? t
95: .getDestinationNode().toString() : "") + ", "
96: + t.isForceRestart();
97: }
98: }
|