/* # Licensed Materials - Property of IBM # Copyright IBM Corp. 2015 */ package com.ibm.streamsx.topology.tuple; import java.io.Serializable; import com.ibm.json.java.JSONObject; import com.ibm.streamsx.topology.streams.BeaconStreams; /** * Tuple type issued by a beacon stream. * * @see BeaconStreams */ public class BeaconTuple implements Serializable, Keyable<Long>, Comparable<BeaconTuple>, JSONAble { /** * */ private static final long serialVersionUID = 1L; private final long sequence; private final long time; /** * Create a BeaconTuple with the current time. * * @param sequence * Sequence of the tuple */ public BeaconTuple(long sequence) { this(sequence, System.currentTimeMillis()); } /** * Create a BeaconTuple. * * @param sequence * Sequence of the tuple * @param time * time of the tuple */ public BeaconTuple(long sequence, long time) { this.sequence = sequence; this.time = time; } /** * Get the sequence identifier of this tuple. * * @return sequence identifier of this tuple */ public long getSequence() { return sequence; } /** * Get the key (sequence identifier) of this tuple. * @return sequence identifier of this tuple * @see #getSequence() */ @Override public Long getKey() { return getSequence(); } /** * Get the time of this tuple. * * @return time of this tuple */ public long getTime() { return time; } /** * Creates a JSON object with two attributes: * <UL> * <li>{@code sequence} Value of {@link #getSequence()}</li> * <li>{@code time} Value of {@link #getTime()}</li> * </UL> * @return JSON representation of this tuple. */ @Override public JSONObject toJSON() { JSONObject btjson = new JSONObject(); btjson.put("sequence", getSequence()); btjson.put("time", getTime()); return btjson; } @Override public String toString() { return "{sequence=" + sequence + ", time=" + time + "}"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (int) (sequence ^ (sequence >>> 32)); result = prime * result + (int) (time ^ (time >>> 32)); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; BeaconTuple other = (BeaconTuple) obj; if (sequence != other.sequence) return false; if (time != other.time) return false; return true; } @Override public int compareTo(BeaconTuple o) { return Long.compare(sequence, o.sequence); } }