com.almende.dht.TimedValue.java Source code

Java tutorial

Introduction

Here is the source code for com.almende.dht.TimedValue.java

Source

/*
 * Copyright: Almende B.V. (2014), Rotterdam, The Netherlands
 * License: The Apache Software License, Version 2.0
 */
package com.almende.dht;

import com.fasterxml.jackson.databind.node.ObjectNode;

/**
 * The Class TimedValue.
 */
public class TimedValue implements Comparable<TimedValue> {

    private ObjectNode value;
    private long storedTime;
    private long expirationDuration;

    /**
     * Instantiates a new timed value.
     */
    public TimedValue() {
    }

    /**
     * Instantiates a new timed value.
     *
     * @param value
     *            the value
     */
    public TimedValue(ObjectNode value) {
        this.value = value;
        this.storedTime = System.currentTimeMillis();
        this.expirationDuration = Constants.EXPIRE;
    }

    /**
     * Gets the value.
     *
     * @return the value
     */
    public ObjectNode getValue() {
        return value;
    }

    /**
     * Sets the value. (Only for de-serialization, use store() instead!)
     *
     * @param value
     *            the new value
     */
    public void setValue(ObjectNode value) {
        this.value = value;
    }

    /**
     * Gets the stored time.
     *
     * @return the stored time
     */
    public long getStoredTime() {
        return storedTime;
    }

    /**
     * Sets the stored time.
     *
     * @param storedTime
     *            the new stored time
     */
    public void setStoredTime(long storedTime) {
        this.storedTime = storedTime;
    }

    /**
     * Gets the expiration duration.
     *
     * @return the expiration duration
     */
    public long getExpirationDuration() {
        return expirationDuration;
    }

    /**
     * Sets the expiration duration.
     *
     * @param expirationDuration
     *            the new expiration duration
     */
    public void setExpirationDuration(final long expirationDuration) {
        this.expirationDuration = expirationDuration;
    }

    /**
     * Sets the value and updates the storedTime.
     *
     * @param value
     *            the new value
     * @param storedTime
     *            the stored time (needed to be able to use Hypertime)
     */
    public void store(final ObjectNode value, final long storedTime) {
        this.storedTime = storedTime;
        this.value = value;
    }

    /**
     * Store.
     *
     * @param value
     *            the value
     */
    public void store(final ObjectNode value) {
        store(value, System.currentTimeMillis());
    }

    /**
     * Get remaining expire duration.
     *
     * @return the amount of ms until this value is expired.
     */
    public long getTtl() {
        return this.storedTime + this.expirationDuration - System.currentTimeMillis();
    }

    @Override
    public boolean equals(final Object o) {
        if (o == null)
            return false;
        if (!(o instanceof TimedValue)) {
            return false;
        }
        TimedValue other = (TimedValue) o;
        if (this.value.equals(other.value)) {
            return true;
        } else {
            return false;
        }
    }

    @Override
    public int hashCode() {
        return this.value.hashCode();
    }

    @Override
    //Newest first 
    public int compareTo(TimedValue o) {
        return ((storedTime == o.storedTime) ? 0 : (storedTime < o.storedTime ? 1 : -1));
    }

}