| package org.onlab.onos.store.device.impl; |
| |
| import java.util.Objects; |
| |
| import org.onlab.onos.store.Timestamp; |
| |
| /** |
| * Wrapper class for a entity that is versioned |
| * and can either be up or down. |
| * |
| * @param <T> type of the value. |
| */ |
| public class VersionedValue<T> { |
| private final T entity; |
| private final Timestamp timestamp; |
| private final boolean isUp; |
| |
| public VersionedValue(T entity, boolean isUp, Timestamp timestamp) { |
| this.entity = entity; |
| this.isUp = isUp; |
| this.timestamp = timestamp; |
| } |
| |
| /** |
| * Returns the value. |
| * @return value. |
| */ |
| public T entity() { |
| return entity; |
| } |
| |
| /** |
| * Tells whether the entity is up or down. |
| * @return true if up, false otherwise. |
| */ |
| public boolean isUp() { |
| return isUp; |
| } |
| |
| /** |
| * Returns the timestamp (version) associated with this entity. |
| * @return timestamp. |
| */ |
| public Timestamp timestamp() { |
| return timestamp; |
| } |
| |
| |
| @Override |
| public int hashCode() { |
| return Objects.hash(entity, timestamp, isUp); |
| } |
| |
| @Override |
| public boolean equals(Object obj) { |
| if (this == obj) { |
| return true; |
| } |
| if (obj == null) { |
| return false; |
| } |
| if (getClass() != obj.getClass()) { |
| return false; |
| } |
| @SuppressWarnings("unchecked") |
| VersionedValue<T> that = (VersionedValue<T>) obj; |
| return Objects.equals(this.entity, that.entity) && |
| Objects.equals(this.timestamp, that.timestamp) && |
| Objects.equals(this.isUp, that.isUp); |
| } |
| |
| // Default constructor for serializer |
| protected VersionedValue() { |
| this.entity = null; |
| this.isUp = false; |
| this.timestamp = null; |
| } |
| } |