@data @NoArgsConstructor @AllArgsConstructor public class MilestoneEvent { private static final Gson gson = new Gson(); private String warehouseId; private String pickerId; private String milestoneGroup; private String milestoneType; private Date timeStamp; private String date; private Map data = Collections.emptyMap(); private UUID eventId; @Override public String toString() { return gson.toJson(this); } @Override public boolean equals(Object o) { if (o == this) return true; if (!(o instanceof MilestoneEvent)) { return false; } MilestoneEvent event = (MilestoneEvent) o; return Objects.equals(warehouseId, event.getWarehouseId()) && Objects.equals(pickerId, event.getPickerId()) && Objects.equals(milestoneGroup, event.getMilestoneGroup()) && Objects.equals(milestoneType, event.getMilestoneType()) && Objects.equals(timeStamp, event.getTimeStamp()) && Objects.equals(date, event.getDate()) && Objects.equals(data, event.getData()) && Objects.equals(eventId, event.getEventId()); } @Override public int hashCode() { return eventId.hashCode(); } }