001package co.codewizards.cloudstore.ls.core.invoke;
002
003import static co.codewizards.cloudstore.core.util.Util.*;
004import static java.util.Objects.*;
005
006import co.codewizards.cloudstore.core.Uid;
007
008public class DelayedResponseIdScheduledEviction implements Comparable<DelayedResponseIdScheduledEviction> {
009
010        private final long scheduledEvictionTimestamp;
011        private final Uid delayedResponseId;
012
013        public DelayedResponseIdScheduledEviction(final long scheduledEvictionTimestamp, final Uid delayedResponseId) {
014                this.scheduledEvictionTimestamp = scheduledEvictionTimestamp;
015                this.delayedResponseId = requireNonNull(delayedResponseId, "delayedResponseId");
016        }
017
018        public Uid getDelayedResponseId() {
019                return delayedResponseId;
020        }
021
022        public long getScheduledEvictionTimestamp() {
023                return scheduledEvictionTimestamp;
024        }
025
026        @Override
027        public int hashCode() {
028                final int prime = 31;
029                int result = 1;
030                result = prime * result + (int) (scheduledEvictionTimestamp ^ (scheduledEvictionTimestamp >>> 32));
031                result = prime * result + ((delayedResponseId == null) ? 0 : delayedResponseId.hashCode());
032                return result;
033        }
034
035        @Override
036        public boolean equals(final Object obj) {
037                if (this == obj)
038                        return true;
039                if (obj == null)
040                        return false;
041                if (getClass() != obj.getClass())
042                        return false;
043                final DelayedResponseIdScheduledEviction other = (DelayedResponseIdScheduledEviction) obj;
044                return equal(this.scheduledEvictionTimestamp, other.scheduledEvictionTimestamp)
045                                && equal(this.delayedResponseId, other.delayedResponseId);
046        }
047
048        @Override
049        public int compareTo(final DelayedResponseIdScheduledEviction other) {
050                int res = Long.compare(this.scheduledEvictionTimestamp, other.scheduledEvictionTimestamp);
051                if (res != 0)
052                        return res;
053
054                res = this.delayedResponseId.compareTo(other.delayedResponseId);
055                return res;
056        }
057}