package eu.tpmusielak.securephoto.verification.geo; import eu.tpmusielak.securephoto.verification.VerificationFactorData; import java.io.Serializable; import java.nio.ByteBuffer; import java.util.Date; /** * Created by IntelliJ IDEA. * User: Tomasz P. Musielak * Date: 29/03/12 * Time: 14:08 */ public class GeolocationData implements VerificationFactorData, Serializable { public final double latitude; public final double longitude; public final double altitude; public final long fixtime; public final float accuracy; public final byte[] dataHash; public GeolocationData(long fixtime, double latitude, double longitude, double altitude, float accuracy) { this.fixtime = fixtime; this.latitude = latitude; this.longitude = longitude; this.altitude = altitude; this.accuracy = accuracy; dataHash = ByteBuffer.allocate(4 * 8 + 4) .putDouble(latitude) .putDouble(longitude) .putDouble(altitude) .putLong(fixtime) .putFloat(accuracy).array(); } public GeolocationData(long fixtime, double latitude, double longitude, double altitude) { this(fixtime, latitude, longitude, altitude, 0); } @Override public byte[] getHash() { return dataHash; } @Override public String toString() { Date fixDate = new Date(fixtime); final String format = "Geolocation Data:\n" + " Fix acquired: %s\n" + " Latitude: %f\n" + " Longitude: %f\n" + " Altitude: %f\n" + " Accuracy: +/- %f m"; return String.format(format, fixDate.toString(), latitude, longitude, altitude, accuracy); } }