All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.osgi.util.measurement.State Maven / Gradle / Ivy

/*
 * Copyright (c) OSGi Alliance (2002, 2010). All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.osgi.util.measurement;

/**
 * Groups a state name, value and timestamp.
 * 
 * 

* The state itself is represented as an integer and the time is measured in * milliseconds since midnight, January 1, 1970 UTC. * *

* A {@code State} object is immutable so that it may be easily shared. * * @Immutable * @version $Id: ff96b95ce2466f6b5a90daeb07560f6fb8a930cb $ */ public class State { private final int value; private final long time; private final String name; /** * Create a new {@code State} object. * * @param value The value of the state. * @param name The name of the state. * @param time The time measured in milliseconds since midnight, January 1, * 1970 UTC. */ public State(int value, String name, long time) { this.value = value; this.name = name; this.time = time; } /** * Create a new {@code State} object with a time of 0. * * @param value The value of the state. * @param name The name of the state. */ public State(int value, String name) { this(value, name, 0); } /** * Returns the value of this {@code State}. * * @return The value of this {@code State} object. */ public final int getValue() { return value; } /** * Returns the time with which this {@code State} was created. * * @return The time with which this {@code State} was created. The time * is measured in milliseconds since midnight, January 1, 1970 UTC. */ public final long getTime() { return time; } /** * Returns the name of this {@code State}. * * @return The name of this {@code State} object. */ public final String getName() { return name; } /** * Returns a {@code String} object representing this object. * * @return a {@code String} object representing this object. */ public String toString() { StringBuffer sb = new StringBuffer(); sb.append(value); if (name != null) { sb.append(" \""); sb.append(name); sb.append("\""); } return sb.toString(); } /** * Returns a hash code value for this object. * * @return A hash code value for this object. */ public int hashCode() { int hash = 31 * 17 + value; if (name != null) { hash = 31 * hash + name.hashCode(); } return hash; } /** * Return whether the specified object is equal to this object. Two * {@code State} objects are equal if they have same value and name. * * @param obj The object to compare with this object. * @return {@code true} if this object is equal to the specified object; * {@code false} otherwise. */ public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof State)) { return false; } State that = (State) obj; if (value != that.value) { return false; } if (name == that.name) { return true; } if (name == null) { return false; } return name.equals(that.name); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy