package me.guillaumin.android.osmtracker.test.util;
import java.util.Calendar;
import java.util.Locale;
import java.util.Random;
import java.util.SimpleTimeZone;
import java.util.TimeZone;
import java.util.UUID;
import me.guillaumin.android.osmtracker.db.DataHelper;
import me.guillaumin.android.osmtracker.db.TrackContentProvider;
import me.guillaumin.android.osmtracker.db.TrackContentProvider.Schema;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.location.Location;
import android.net.Uri;
public class MockData {
private static Object[][] mockTrackPoints = new Object[][] {
{12.34, 56.78, 0.42f, 4321.7d, 45.8f },
{21.57, 12.6, 0.24f, 12.1d, 12.6f }
};
private static Object[][] mockWayPoints = new Object[][] {
{34.12, 18.45, 0.25f, 5812.2d, 284.5f, 2, "wp1", "http://link1.com", "uuid1"},
{43.76, 31.89, 0.61f, 75.4d, 127.4f, 6, "wp2", "http://link2.com", "uuid2"}
};
public static long mockTrack(Context context) {
// Use same date for everything so that the generated
// GPX file will always be the same
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("UTC"), Locale.ENGLISH);
c.clear();
c.set(Calendar.YEAR, 2012);
c.set(Calendar.MONTH, Calendar.MARCH);
c.set(Calendar.DAY_OF_MONTH, 12);
c.set(Calendar.HOUR_OF_DAY, 16);
c.set(Calendar.MINUTE, 46);
c.set(Calendar.SECOND, 38);
ContentResolver cr = context.getContentResolver();
// Create new track
ContentValues values = new ContentValues();
values.put(Schema.COL_NAME, "");
values.put(Schema.COL_START_DATE, c.getTime().getTime());
values.put(Schema.COL_ACTIVE, Schema.VAL_TRACK_ACTIVE);
values.put(Schema.COL_NAME, "gpx-test");
Uri trackUri = cr.insert(TrackContentProvider.CONTENT_URI_TRACK, values);
long trackId = ContentUris.parseId(trackUri);
DataHelper helper = new DataHelper(context);
for (Object[] mock: mockTrackPoints) {
Location l = new Location("test");
l.setLatitude((Double) mock[0]);
l.setLongitude((Double) mock[1]);
l.setAccuracy((Float) mock[2]);
l.setAltitude((Double) mock[3]);
l.setSpeed((Float) mock[4]);
l.setTime(c.getTime().getTime());
helper.track(trackId, l, DataHelper.AZIMUTH_INVALID, 0);
}
for (Object[] mock: mockWayPoints) {
Location l = new Location("test");
l.setLatitude((Double) mock[0]);
l.setLongitude((Double) mock[1]);
l.setAccuracy((Float) mock[2]);
l.setAltitude((Double) mock[3]);
l.setSpeed((Float) mock[4]);
l.setTime(c.getTime().getTime());
helper.wayPoint(trackId, l, (Integer) mock[5], (String) mock[6], (String) mock[7], (String) mock[8], DataHelper.AZIMUTH_INVALID, 0);
}
return trackId;
}
public static long mockBigTrack(Context context, int numWayPoints, int numTrackPoints) {
ContentResolver cr = context.getContentResolver();
// Create new track
ContentValues values = new ContentValues();
values.put(Schema.COL_NAME, "");
values.put(Schema.COL_START_DATE, System.currentTimeMillis());
values.put(Schema.COL_ACTIVE, Schema.VAL_TRACK_ACTIVE);
values.put(Schema.COL_NAME, "gpx-big-test");
Uri trackUri = cr.insert(TrackContentProvider.CONTENT_URI_TRACK, values);
long trackId = ContentUris.parseId(trackUri);
Random r = new Random();
DataHelper helper = new DataHelper(context);
for (int i=0; i<numWayPoints; i++) {
Location l = new Location("test");
l.setLatitude((r.nextDouble() * 180) -90);
l.setLongitude((r.nextDouble() * 360) - 180);
l.setAccuracy(r.nextFloat());
l.setAltitude((r.nextDouble() * 2000) - 1000);
l.setSpeed(r.nextFloat() * 200);
l.setTime(System.currentTimeMillis());
helper.track(trackId, l, DataHelper.AZIMUTH_INVALID, 0);
}
for (int i=0; i<numTrackPoints; i++) {
Location l = new Location("test");
l.setLatitude((r.nextDouble() * 180) -90);
l.setLongitude((r.nextDouble() * 360) - 180);
l.setAccuracy(r.nextFloat());
l.setAltitude((r.nextDouble() * 2000) - 1000);
l.setSpeed(r.nextFloat() * 200);
l.setTime(System.currentTimeMillis());
helper.wayPoint(trackId, l,
r.nextInt() * 10,
"wayPoint #"+i,
"http://link.com/"+i,
UUID.randomUUID().toString(), DataHelper.AZIMUTH_INVALID, 0);
}
return trackId;
}
}