package org.kairosdb.client; import com.google.inject.Inject; import org.json.JSONException; import org.json.JSONWriter; import org.kairosdb.core.DataPoint; import org.kairosdb.core.datastore.DataPointGroup; import java.io.DataOutput; import java.io.IOException; public class ComplexNumberDataPoint implements DataPoint { private long real; private long imaginary; private long timestamp; @Inject public ComplexNumberDataPoint(long timestamp, long real, long imaginary) { this.real = real; this.imaginary = imaginary; this.timestamp = timestamp; } public long getReal() { return real; } public long getImaginary() { return imaginary; } @Override public long getTimestamp() { return timestamp; } @Override public void writeValueToBuffer(DataOutput buffer) throws IOException { buffer.writeLong(real); buffer.writeLong(imaginary); } @Override public void writeValueToJson(JSONWriter writer) throws JSONException { writer.object().key("real").value(real).key("imaginary").value(imaginary).endObject(); } @Override public String getApiDataType() { return null; } @Override public String getDataStoreDataType() { return "jsabin-complex"; } @Override public boolean isLong() { return false; } @Override public long getLongValue() { return 0; } @Override public boolean isDouble() { return false; } @Override public double getDoubleValue() { return 0; } @Override public DataPointGroup getDataPointGroup() { return null; } @Override public void setDataPointGroup(DataPointGroup dataPointGroup) { } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } ComplexNumberDataPoint that = (ComplexNumberDataPoint) o; return imaginary == that.imaginary && real == that.real && timestamp == that.timestamp; } @Override public int hashCode() { int result = (int) (real ^ (real >>> 32)); result = 31 * result + (int) (imaginary ^ (imaginary >>> 32)); result = 31 * result + (int) (timestamp ^ (timestamp >>> 32)); return result; } }