package net.heartshield.data;

import java.io.Serializable;

/**
 * Primary key for identifying a Measurement.
 *
 * @author David Madl (git@abanbytes.eu)
 * @date 2017-04-10
 */
public class MeasurementId implements Serializable {
    public String appId;
    public long startTime;

    public MeasurementId(String appId, long startTime) {
        this.appId = appId;
        this.startTime = startTime;
    }

    public static MeasurementId parse(String measurementId) {
        int underscore = measurementId.indexOf("_");
        if(underscore == -1)
            throw new IllegalArgumentException("could not parse measurementId " + measurementId + " since it did not contain '_'.");
        return new MeasurementId(measurementId.substring(underscore+1), Long.parseLong(measurementId.substring(0, underscore)));
    }

    public String toString() {
        return startTime + "_" + appId;
    }

    @Override
    public boolean equals(Object obj) {
        if(obj == null || !(obj instanceof MeasurementId))
            return false;
        MeasurementId other = (MeasurementId) obj;
        return (this.startTime == other.startTime && this.appId.equals(other.appId));
    }
}
