001: /*
002: * <copyright>
003: *
004: * Copyright 1997-2004 BBNT Solutions, LLC
005: * under sponsorship of the Defense Advanced Research Projects
006: * Agency (DARPA).
007: *
008: * You can redistribute this software and/or modify it under the
009: * terms of the Cougaar Open Source License as published on the
010: * Cougaar Open Source Website (www.cougaar.org).
011: *
012: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
013: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
014: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
015: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
016: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
017: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
018: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
019: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
020: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
021: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
022: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
023: *
024: * </copyright>
025: */
026:
027: package org.cougaar.core.qos.metrics;
028:
029: /**
030: * This is the standard implementation of Metric.
031: */
032: public class MetricImpl implements Metric, java.io.Serializable {
033: public static MetricImpl UndefinedMetric = new MetricImpl(0.0, 0.0,
034: null, "undefined");
035:
036: private Object rawValue;
037: private double credibility;
038: private String units;
039: private String provenance;
040: private long timestamp;
041: private long halflife;
042:
043: public MetricImpl(double raw, double credibility, String units,
044: String provenance) {
045: this (new Double(raw), credibility, units, provenance);
046: }
047:
048: public MetricImpl(Object raw, double credibility, String units,
049: String provenance) {
050: this (raw, credibility, units, provenance, System
051: .currentTimeMillis(), 0);
052: }
053:
054: public MetricImpl(Object raw, double credibility, String units,
055: String provenance, long timestamp, long halflife) {
056: this .rawValue = raw;
057: this .credibility = credibility;
058: this .units = units;
059: this .provenance = provenance;
060: this .timestamp = timestamp;
061: this .halflife = halflife;
062: }
063:
064: public String toString() {
065: return "<" + rawValue + ":" + credibility + ">";
066: }
067:
068: public String stringValue() {
069: return rawValue.toString();
070: }
071:
072: public byte byteValue() {
073: if (rawValue instanceof Number) {
074: return (((Number) rawValue).byteValue());
075: } else {
076: return 0;
077: }
078: }
079:
080: public short shortValue() {
081: if (rawValue instanceof Number) {
082: return (((Number) rawValue).shortValue());
083: } else {
084: return 0;
085: }
086: }
087:
088: public int intValue() {
089: if (rawValue instanceof Number) {
090: return (((Number) rawValue).intValue());
091: } else {
092: return 0;
093: }
094: }
095:
096: public long longValue() {
097: if (rawValue instanceof Number) {
098: return (((Number) rawValue).longValue());
099: } else {
100: return 0;
101: }
102: }
103:
104: public float floatValue() {
105: if (rawValue instanceof Number) {
106: return (((Number) rawValue).floatValue());
107: } else {
108: return 0;
109: }
110: }
111:
112: public double doubleValue() {
113: if (rawValue instanceof Number) {
114: return (((Number) rawValue).doubleValue());
115: } else {
116: return 0;
117: }
118: }
119:
120: public char charValue() {
121: if (rawValue instanceof String)
122: return ((String) rawValue).charAt(0);
123: else if (rawValue instanceof Character)
124: return (((Character) rawValue).charValue());
125: else
126: return '?';
127: }
128:
129: public boolean booleanValue() {
130: if (rawValue instanceof Boolean)
131: return (((Boolean) rawValue).booleanValue());
132: else
133: return false;
134: }
135:
136: public Object getRawValue() {
137: return rawValue;
138: }
139:
140: public double getCredibility() {
141: return credibility;
142: }
143:
144: public String getUnits() {
145: return units;
146: }
147:
148: public String getProvenance() {
149: return provenance;
150: }
151:
152: public long getTimestamp() {
153: return timestamp;
154: }
155:
156: public long getHalflife() {
157: return halflife;
158: }
159:
160: }
|