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}