package org.ei.drishti.common.audit; import org.apache.commons.lang.builder.ToStringBuilder; import org.joda.time.DateTime; import java.util.Map; public class AuditMessage implements Comparable<AuditMessage> { private final DateTime time; private final long messageIndex; private final AuditMessageType type; private final Map<String, String> extraData; public AuditMessage(DateTime time, long messageIndex, AuditMessageType type, Map<String, String> data) { this.time = time; this.messageIndex = messageIndex; this.type = type; this.extraData = data; } public AuditMessageType type() { return type; } public long index() { return messageIndex; } public Map<String, String> data() { return extraData; } public DateTime time() { return time; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; AuditMessage that = (AuditMessage) o; return messageIndex == that.messageIndex; } @Override public int hashCode() { return (int) (messageIndex ^ (messageIndex >>> 32)); } @Override public int compareTo(AuditMessage other) { return Long.valueOf(messageIndex - other.messageIndex).intValue(); } @Override public String toString() { return ToStringBuilder.reflectionToString(this); } }