/** * */ package vnet.sms.common.messages; import static org.apache.commons.lang.Validate.notNull; import java.io.Serializable; import java.util.Date; import java.util.UUID; /** * @author obergner * */ public abstract class GsmPdu implements Serializable, Comparable<GsmPdu> { private static final long serialVersionUID = 2543387338512341954L; private final UUID id; private final long creationTimestamp; protected GsmPdu() { this(UUID.randomUUID(), System.currentTimeMillis()); } protected GsmPdu(final UUID id, final long creationTimestamp) { notNull(id, "Argument 'id' must not be null"); this.id = id; this.creationTimestamp = creationTimestamp; } public final UUID getId() { return this.id; } public final long getCreationTimestamp() { return this.creationTimestamp; } public final Date getCreationTime() { return new Date(this.creationTimestamp); } /** * @see java.lang.Comparable#compareTo(java.lang.Object) */ @Override public int compareTo(final GsmPdu other) { return this.id.compareTo(other.id); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((this.id == null) ? 0 : this.id.hashCode()); return result; } @Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final GsmPdu other = (GsmPdu) obj; if (this.id == null) { if (other.id != null) { return false; } } else if (!this.id.equals(other.id)) { return false; } return true; } }