01: /*
02:
03: * <copyright>
04: *
05: * Copyright 2002-2007 BBNT Solutions, LLC
06: * under sponsorship of the Defense Advanced Research Projects
07: * Agency (DARPA).
08: *
09: * You can redistribute this software and/or modify it under the
10: * terms of the Cougaar Open Source License as published on the
11: * Cougaar Open Source Website (www.cougaar.org).
12: *
13: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
17: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24: *
25: * </copyright>
26:
27: */
28:
29: package org.cougaar.qos.qrs;
30:
31: import org.cougaar.qos.ResourceStatus.ResourceNode;
32:
33: public class RSSUtils implements Constants {
34:
35: private static TaskScheduler scheduler;
36:
37: // Pretty-Printers
38: public static void nodeToString(StringBuffer buf, ResourceNode node) {
39: buf.append("<Resource ");
40: buf.append(node.kind);
41: buf.append("(");
42: for (int i = 0; i < node.parameters.length; i++) {
43: if (i > 0) {
44: buf.append(", ");
45: }
46: buf.append(node.parameters[i]);
47: }
48: buf.append(")>");
49: }
50:
51: public static String nodeToString(ResourceNode node) {
52: StringBuffer buf = new StringBuffer();
53: nodeToString(buf, node);
54: return buf.toString();
55: }
56:
57: public static void pathToString(StringBuffer buf,
58: ResourceNode[] path) {
59: buf.append("[");
60: for (int i = 0; i < path.length; i++) {
61: if (i > 0) {
62: buf.append(" ");
63: }
64: nodeToString(buf, path[i]);
65: }
66: buf.append("]");
67: }
68:
69: public static String pathToString(ResourceNode[] path) {
70: StringBuffer buf = new StringBuffer();
71: pathToString(buf, path);
72: return buf.toString();
73: }
74:
75: // Semi-abstract scheduling
76: public static synchronized void setScheduler(TaskScheduler scheduler) {
77: RSSUtils.scheduler = scheduler;
78: }
79:
80: private static synchronized TaskScheduler getScheduler() {
81: if (scheduler == null) {
82: scheduler = new TaskSchedulerImpl();
83: }
84: return scheduler;
85: }
86:
87: public static Object schedule(Runnable body, long delay, long period) {
88: return getScheduler().schedule(body, delay, period);
89: }
90:
91: public static Object schedule(Runnable body, long delay) {
92: return getScheduler().schedule(body, delay);
93: }
94:
95: public static void unschedule(Object task) {
96: getScheduler().unschedule(task);
97: }
98:
99: }
|