package com.dreikraft.axbo.events; import com.dreikraft.events.ApplicationEvent; import com.dreikraft.axbo.data.MovementData; import com.dreikraft.axbo.util.ReflectUtil; /** * MovementEvent * * @author jan.illetschko@3kraft.com */ public final class MovementEvent extends ApplicationEvent implements Comparable<MovementEvent> { /** * SerialVersionUID. */ public static final long serialVersionUID = 1L; private final MovementData movementData; private final String id; private final String cmd; private final int[] rawData; public MovementEvent(final Object source, final MovementData movementData, final String id, final String cmd, final int[] rawData) { super(source); this.movementData = movementData; this.id = id; this.cmd = cmd; this.rawData = rawData; } public MovementData getMovementData() { return this.movementData; } public String getId() { return this.id; } public String getCmd() { return cmd; } public int[] getRawData() { return rawData; } @Override public String toString() { return ReflectUtil.toString(this); } @Override public int compareTo(MovementEvent evt) { if (this.getMovementData().getTimestamp().equals( evt.getMovementData().getTimestamp())) return 0; if (this.getMovementData().getTimestamp().before( evt.getMovementData().getTimestamp())) return -1; else return 1; } @Override public boolean equals(Object obj) { return obj != null && obj instanceof MovementEvent && ((MovementEvent) obj) .getMovementData() != null && getMovementData() != null && getMovementData().getTimestamp().equals(((MovementEvent) obj) .getMovementData().getTimestamp()); } @Override public int hashCode() { int hash = 7; hash = 13 * hash + (this.movementData != null && this.movementData .getTimestamp() != null ? this.movementData.getTimestamp().hashCode() : 0); return hash; } }