Using BigInteger was dumb. Just use strings

pull/14/head
Sam Bosley 13 years ago
parent 8585a1e2cd
commit 88ad53977a

@ -6,7 +6,6 @@
package com.todoroo.andlib.data; package com.todoroo.andlib.data;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import android.content.ContentValues; import android.content.ContentValues;
@ -367,10 +366,6 @@ abstract public class AbstractDatabase {
public String visitString(Property<String> property, Void data) { public String visitString(Property<String> property, Void data) {
return String.format("%s TEXT", property.getColumnName()); return String.format("%s TEXT", property.getColumnName());
} }
public String visitBigInteger(Property<BigInteger> property, Void data) {
return String.format("%s TEXT", property.getColumnName());
}
} }
} }

@ -8,7 +8,6 @@ package com.todoroo.andlib.data;
import java.lang.reflect.Array; import java.lang.reflect.Array;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
@ -479,11 +478,6 @@ public abstract class AbstractModel implements Parcelable, Cloneable {
store.put(property.getColumnName(), (String) value); store.put(property.getColumnName(), (String) value);
return null; return null;
} }
public Void visitBigInteger(Property<BigInteger> property, Object value) {
store.put(property.getColumnName(), ((BigInteger) value).toString());
return null;
}
} }
// --- parcelable helpers // --- parcelable helpers

@ -10,8 +10,6 @@ import static com.todoroo.andlib.sql.SqlConstants.LEFT_PARENTHESIS;
import static com.todoroo.andlib.sql.SqlConstants.RIGHT_PARENTHESIS; import static com.todoroo.andlib.sql.SqlConstants.RIGHT_PARENTHESIS;
import static com.todoroo.andlib.sql.SqlConstants.SPACE; import static com.todoroo.andlib.sql.SqlConstants.SPACE;
import java.math.BigInteger;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Field; import com.todoroo.andlib.sql.Field;
import com.todoroo.andlib.sql.Operator; import com.todoroo.andlib.sql.Operator;
@ -103,8 +101,6 @@ public abstract class Property<TYPE> extends Field implements Cloneable {
public RETURN visitDouble(Property<Double> property, PARAMETER data); public RETURN visitDouble(Property<Double> property, PARAMETER data);
public RETURN visitString(Property<String> property, PARAMETER data); public RETURN visitString(Property<String> property, PARAMETER data);
public RETURN visitBigInteger(Property<BigInteger> property, PARAMETER data);
} }
// --- children // --- children
@ -243,27 +239,6 @@ public abstract class Property<TYPE> extends Field implements Cloneable {
} }
} }
public static class BigIntegerProperty extends Property<BigInteger> {
public BigIntegerProperty(Table table, String name) {
super(table, name);
}
public BigIntegerProperty(Table table, String name, boolean nullable) {
super(table, name, nullable);
}
protected BigIntegerProperty(Table table, String name, String expression) {
super(table, name, expression);
}
@Override
public <RETURN, PARAMETER> RETURN accept(
PropertyVisitor<RETURN, PARAMETER> visitor, PARAMETER data) {
return visitor.visitBigInteger(this, data);
}
}
public String getColumnName() { public String getColumnName() {
if (hasAlias()) if (hasAlias())
return alias; return alias;

@ -5,7 +5,6 @@
*/ */
package com.todoroo.andlib.data; package com.todoroo.andlib.data;
import java.math.BigInteger;
import java.util.WeakHashMap; import java.util.WeakHashMap;
import android.database.Cursor; import android.database.Cursor;
@ -130,14 +129,6 @@ public class TodorooCursor<TYPE extends AbstractModel> extends CursorWrapper {
return cursor.getString(column); return cursor.getString(column);
} }
public Object visitBigInteger(Property<BigInteger> property,
TodorooCursor<?> cursor) {
int column = columnIndex(property, cursor);
if(property.nullable && cursor.isNull(column))
return null;
return new BigInteger(cursor.getString(column));
}
private int columnIndex(Property<?> property, TodorooCursor<?> cursor) { private int columnIndex(Property<?> property, TodorooCursor<?> cursor) {
return cursor.getColumnIndexFromCache(property.getColumnName()); return cursor.getColumnIndexFromCache(property.getColumnName());
} }

@ -6,7 +6,6 @@
package com.todoroo.astrid.data; package com.todoroo.astrid.data;
import com.todoroo.andlib.data.AbstractModel; import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.Property.BigIntegerProperty;
import com.todoroo.andlib.data.Property.LongProperty; import com.todoroo.andlib.data.Property.LongProperty;
import com.todoroo.andlib.data.Property.StringProperty; import com.todoroo.andlib.data.Property.StringProperty;
@ -52,5 +51,8 @@ abstract public class RemoteModel extends AbstractModel {
public static final String UUID_PROPERTY_NAME = "uuid"; //$NON-NLS-1$ public static final String UUID_PROPERTY_NAME = "uuid"; //$NON-NLS-1$
/** new uuid property */ /** new uuid property */
public static final BigIntegerProperty UUID_PROPERTY = new BigIntegerProperty(null, UUID_PROPERTY_NAME); public static final StringProperty UUID_PROPERTY = new StringProperty(null, UUID_PROPERTY_NAME);
/** constant value for no uuid */
public static final String NO_UUID = "0"; //$NON-NLS-1$
} }

@ -11,7 +11,6 @@ import android.net.Uri;
import com.todoroo.andlib.data.AbstractModel; import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.Property; import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.Property.BigIntegerProperty;
import com.todoroo.andlib.data.Property.IntegerProperty; import com.todoroo.andlib.data.Property.IntegerProperty;
import com.todoroo.andlib.data.Property.LongProperty; import com.todoroo.andlib.data.Property.LongProperty;
import com.todoroo.andlib.data.Property.StringProperty; import com.todoroo.andlib.data.Property.StringProperty;
@ -127,7 +126,7 @@ public final class TagData extends RemoteModel {
TABLE, PUSHED_AT_PROPERTY_NAME); TABLE, PUSHED_AT_PROPERTY_NAME);
/** UUID */ /** UUID */
public static final BigIntegerProperty UUID = new BigIntegerProperty( public static final StringProperty UUID = new StringProperty(
TABLE, UUID_PROPERTY_NAME); TABLE, UUID_PROPERTY_NAME);
/** List of all properties for this model */ /** List of all properties for this model */

@ -14,7 +14,6 @@ import android.net.Uri;
import com.todoroo.andlib.data.AbstractModel; import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.Property; import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.Property.BigIntegerProperty;
import com.todoroo.andlib.data.Property.IntegerProperty; import com.todoroo.andlib.data.Property.IntegerProperty;
import com.todoroo.andlib.data.Property.LongProperty; import com.todoroo.andlib.data.Property.LongProperty;
import com.todoroo.andlib.data.Property.StringProperty; import com.todoroo.andlib.data.Property.StringProperty;
@ -172,8 +171,8 @@ public final class Task extends RemoteModel {
TABLE, PUSHED_AT_PROPERTY_NAME); TABLE, PUSHED_AT_PROPERTY_NAME);
/** UUID */ /** UUID */
public static final BigIntegerProperty UUID = new BigIntegerProperty( public static final StringProperty UUID = new StringProperty(
TABLE, UUID_PROPERTY_NAME); TABLE, UUID_PROPERTY_NAME, true);
/** List of all properties for this model */ /** List of all properties for this model */
public static final Property<?>[] PROPERTIES = generateProperties(Task.class); public static final Property<?>[] PROPERTIES = generateProperties(Task.class);

@ -11,7 +11,6 @@ import android.net.Uri;
import com.todoroo.andlib.data.AbstractModel; import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.Property; import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.Property.BigIntegerProperty;
import com.todoroo.andlib.data.Property.LongProperty; import com.todoroo.andlib.data.Property.LongProperty;
import com.todoroo.andlib.data.Property.StringProperty; import com.todoroo.andlib.data.Property.StringProperty;
import com.todoroo.andlib.data.Table; import com.todoroo.andlib.data.Table;
@ -111,7 +110,7 @@ public class Update extends RemoteModel {
TABLE, PUSHED_AT_PROPERTY_NAME); TABLE, PUSHED_AT_PROPERTY_NAME);
/** UUID */ /** UUID */
public static final BigIntegerProperty UUID = new BigIntegerProperty( public static final StringProperty UUID = new StringProperty(
TABLE, UUID_PROPERTY_NAME); TABLE, UUID_PROPERTY_NAME);
/** List of all properties for this model */ /** List of all properties for this model */

@ -6,7 +6,6 @@
package com.timsu.astrid; package com.timsu.astrid;
import java.io.IOException; import java.io.IOException;
import java.math.BigInteger;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
@ -138,7 +137,7 @@ public class C2DMReceiver extends BroadcastReceiver {
try { try {
TagData tagData = new TagData(); TagData tagData = new TagData();
if(cursor.getCount() == 0) { if(cursor.getCount() == 0) {
tagData.setValue(TagData.UUID, new BigInteger(intent.getStringExtra("tag_id"))); tagData.setValue(TagData.UUID, intent.getStringExtra("tag_id"));
tagData.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); tagData.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true);
tagDataService.save(tagData); tagDataService.save(tagData);
} else { } else {
@ -157,7 +156,7 @@ public class C2DMReceiver extends BroadcastReceiver {
try { try {
final Task task = new Task(); final Task task = new Task();
if(cursor.getCount() == 0) { if(cursor.getCount() == 0) {
task.setValue(Task.UUID, new BigInteger(intent.getStringExtra("task_id"))); task.setValue(Task.UUID, intent.getStringExtra("task_id"));
task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true);
taskService.save(task); taskService.save(task);
} else { } else {
@ -304,7 +303,7 @@ public class C2DMReceiver extends BroadcastReceiver {
final Task task = new Task(); final Task task = new Task();
if(cursor.getCount() == 0) { if(cursor.getCount() == 0) {
task.setValue(Task.TITLE, intent.getStringExtra("title")); task.setValue(Task.TITLE, intent.getStringExtra("title"));
task.setValue(Task.UUID, new BigInteger(intent.getStringExtra("task_id"))); task.setValue(Task.UUID, intent.getStringExtra("task_id"));
task.setValue(Task.USER_ID, Task.USER_ID_UNASSIGNED); task.setValue(Task.USER_ID, Task.USER_ID_UNASSIGNED);
task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true);
taskService.save(task); taskService.save(task);
@ -345,7 +344,7 @@ public class C2DMReceiver extends BroadcastReceiver {
final TagData tagData = new TagData(); final TagData tagData = new TagData();
if(cursor.getCount() == 0) { if(cursor.getCount() == 0) {
tagData.setValue(TagData.NAME, intent.getStringExtra("title")); tagData.setValue(TagData.NAME, intent.getStringExtra("title"));
tagData.setValue(TagData.UUID, new BigInteger(intent.getStringExtra("tag_id"))); tagData.setValue(TagData.UUID, intent.getStringExtra("tag_id"));
tagData.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); tagData.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true);
tagDataService.save(tagData); tagDataService.save(tagData);
@ -371,7 +370,7 @@ public class C2DMReceiver extends BroadcastReceiver {
if(intent.hasExtra("activity_id")) { if(intent.hasExtra("activity_id")) {
try { try {
Update update = new Update(); Update update = new Update();
update.setValue(Update.UUID, new BigInteger(intent.getStringExtra("activity_id"))); update.setValue(Update.UUID, intent.getStringExtra("activity_id"));
update.setValue(Update.USER_ID, Long.parseLong(intent.getStringExtra("user_id"))); update.setValue(Update.USER_ID, Long.parseLong(intent.getStringExtra("user_id")));
JSONObject user = new JSONObject(); JSONObject user = new JSONObject();
user.put("id", update.getValue(Update.USER_ID)); user.put("id", update.getValue(Update.USER_ID));

@ -5,7 +5,6 @@
*/ */
package com.todoroo.astrid.actfm; package com.todoroo.astrid.actfm;
import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
@ -828,7 +827,7 @@ public class EditPeopleControlSet extends PopupControlSet {
ArrayList<Object> values = new ArrayList<Object>(); ArrayList<Object> values = new ArrayList<Object>();
if(task.containsNonNullValue(Task.UUID)) { if(task.containsNonNullValue(Task.UUID)) {
BigInteger currentTaskID = task.getValue(Task.UUID); String currentTaskID = task.getValue(Task.UUID);
values.add("id"); values.add("id");
values.add(currentTaskID); values.add(currentTaskID);
} }

@ -6,7 +6,6 @@
package com.todoroo.astrid.actfm; package com.todoroo.astrid.actfm;
import java.io.IOException; import java.io.IOException;
import java.math.BigInteger;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
@ -46,6 +45,7 @@ import com.todoroo.astrid.actfm.sync.ActFmSyncService;
import com.todoroo.astrid.activity.FilterListFragment; import com.todoroo.astrid.activity.FilterListFragment;
import com.todoroo.astrid.activity.ShortcutActivity; import com.todoroo.astrid.activity.ShortcutActivity;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.SyncFlags;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.helper.AsyncImageView; import com.todoroo.astrid.helper.AsyncImageView;
@ -334,7 +334,7 @@ public class TagSettingsActivity extends FragmentActivity {
@Override @Override
public void run() { public void run() {
actFmSyncService.pushTagDataOnSave(tagData, tagData.getMergedValues()); actFmSyncService.pushTagDataOnSave(tagData, tagData.getMergedValues());
if(setBitmap != null && BigInteger.ZERO.compareTo(tagData.getValue(TagData.UUID)) != 0) if(setBitmap != null && !RemoteModel.NO_UUID.equals(tagData.getValue(TagData.UUID)))
uploadTagPicture(setBitmap); uploadTagPicture(setBitmap);
runOnUiThread(loadTag); runOnUiThread(loadTag);
@ -460,7 +460,7 @@ public class TagSettingsActivity extends FragmentActivity {
public void handleCameraResult(Bitmap bitmap) { public void handleCameraResult(Bitmap bitmap) {
picture.setImageBitmap(bitmap); picture.setImageBitmap(bitmap);
setBitmap = bitmap; setBitmap = bitmap;
if(BigInteger.ZERO.compareTo(tagData.getValue(TagData.UUID)) != 0) if(!RemoteModel.NO_UUID.equals(tagData.getValue(TagData.UUID)))
uploadTagPicture(bitmap); uploadTagPicture(bitmap);
saveTagPictureLocally(bitmap); saveTagPictureLocally(bitmap);
} }

@ -5,8 +5,6 @@
*/ */
package com.todoroo.astrid.actfm; package com.todoroo.astrid.actfm;
import java.math.BigInteger;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.database.Cursor; import android.database.Cursor;
@ -48,6 +46,7 @@ import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.adapter.UpdateAdapter; import com.todoroo.astrid.adapter.UpdateAdapter;
import com.todoroo.astrid.dao.UpdateDao; import com.todoroo.astrid.dao.UpdateDao;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.SyncFlags;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Update; import com.todoroo.astrid.data.Update;
@ -277,7 +276,7 @@ public class TagUpdatesFragment extends ListFragment {
} }
public void setLastViewed() { public void setLastViewed() {
if(tagData != null && BigInteger.ZERO.compareTo(tagData.getValue(TagData.UUID)) != 0) { if(tagData != null && !RemoteModel.NO_UUID.equals(tagData.getValue(TagData.UUID))) {
Preferences.setLong(UPDATES_LAST_VIEWED + tagData.getValue(TagData.UUID), DateUtilities.now()); Preferences.setLong(UPDATES_LAST_VIEWED + tagData.getValue(TagData.UUID), DateUtilities.now());
Activity activity = getActivity(); Activity activity = getActivity();
if (activity instanceof TaskListActivity) if (activity instanceof TaskListActivity)

@ -5,8 +5,6 @@
*/ */
package com.todoroo.astrid.actfm; package com.todoroo.astrid.actfm;
import java.math.BigInteger;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
@ -53,6 +51,7 @@ import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.core.SortHelper;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.Update; import com.todoroo.astrid.data.Update;
@ -200,14 +199,14 @@ public class TagViewFragment extends TaskListFragment {
TaskListActivity activity = (TaskListActivity) getActivity(); TaskListActivity activity = (TaskListActivity) getActivity();
String tag = extras.getString(EXTRA_TAG_NAME); String tag = extras.getString(EXTRA_TAG_NAME);
BigInteger uuid = BigInteger.ZERO; String uuid = RemoteModel.NO_UUID;
if (extras.containsKey(EXTRA_TAG_UUID)) if (extras.containsKey(EXTRA_TAG_UUID))
uuid = new BigInteger(extras.getString(EXTRA_TAG_UUID)); uuid = extras.getString(EXTRA_TAG_UUID);
else if (extras.containsKey(EXTRA_TAG_REMOTE_ID)) // For legacy support with shortcuts, widgets, etc. else if (extras.containsKey(EXTRA_TAG_REMOTE_ID)) // For legacy support with shortcuts, widgets, etc.
uuid = BigInteger.valueOf(extras.getLong(EXTRA_TAG_REMOTE_ID)); uuid = Long.toString(extras.getLong(EXTRA_TAG_REMOTE_ID));
if(tag == null && BigInteger.ZERO.compareTo(uuid) == 0) if(tag == null && RemoteModel.NO_UUID.equals(uuid))
return; return;
TodorooCursor<TagData> cursor = tagDataService.query(Query.select(TagData.PROPERTIES).where( TodorooCursor<TagData> cursor = tagDataService.query(Query.select(TagData.PROPERTIES).where(
@ -484,7 +483,11 @@ public class TagViewFragment extends TaskListFragment {
refreshData(false); refreshData(false);
NotificationManager nm = new AndroidNotificationManager(ContextManager.getContext()); NotificationManager nm = new AndroidNotificationManager(ContextManager.getContext());
nm.cancel(tagData.getValue(TagData.UUID).intValue()); try {
nm.cancel(Integer.parseInt(tagData.getValue(TagData.UUID)));
} catch (NumberFormatException e) {
// Eh
}
} }
}; };

@ -8,7 +8,6 @@ package com.todoroo.astrid.actfm.sync;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@ -451,7 +450,7 @@ public final class ActFmSyncService {
for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
metadata.readFromCursor(cursor); metadata.readFromCursor(cursor);
if(metadata.containsNonNullValue(TagMetadata.TAG_UUID) && if(metadata.containsNonNullValue(TagMetadata.TAG_UUID) &&
metadata.getValue(TagMetadata.TAG_UUID).compareTo(BigInteger.ZERO) != 0) { !RemoteModel.NO_UUID.equals(metadata.getValue(TagMetadata.TAG_UUID))) {
params.add("tag_ids[]"); params.add("tag_ids[]");
params.add(metadata.getValue(TagMetadata.TAG_UUID)); params.add(metadata.getValue(TagMetadata.TAG_UUID));
} else { } else {
@ -1099,7 +1098,7 @@ public final class ActFmSyncService {
* @throws IOException * @throws IOException
* @throws ActFmServiceException * @throws ActFmServiceException
*/ */
public String setTagPicture(BigInteger tagId, Bitmap bitmap) throws ActFmServiceException, IOException { public String setTagPicture(String tagId, Bitmap bitmap) throws ActFmServiceException, IOException {
if(!checkForToken()) if(!checkForToken())
return null; return null;
@ -1540,8 +1539,8 @@ public final class ActFmSyncService {
public static void taskFromJson(JSONObject json, Task model, ArrayList<Metadata> metadata) throws JSONException { public static void taskFromJson(JSONObject json, Task model, ArrayList<Metadata> metadata) throws JSONException {
metadata.clear(); metadata.clear();
model.clearValue(Task.UUID); model.clearValue(Task.UUID);
BigInteger remoteId = new BigInteger(json.getString("id")); String remoteId = json.getString("id");
if (remoteId.compareTo(BigInteger.ZERO) == 0) if (RemoteModel.NO_UUID.equals(remoteId))
model.setValue(Task.UUID, null); model.setValue(Task.UUID, null);
else else
model.setValue(Task.UUID, remoteId); model.setValue(Task.UUID, remoteId);
@ -1575,7 +1574,7 @@ public final class ActFmSyncService {
String name = tag.getString("name"); String name = tag.getString("name");
if(TextUtils.isEmpty(name)) if(TextUtils.isEmpty(name))
continue; continue;
Metadata tagMetadata = TagMetadata.newTagMetadata(model.getId(), remoteId, name, new BigInteger(tag.getString("id"))); Metadata tagMetadata = TagMetadata.newTagMetadata(model.getId(), remoteId, name, tag.getString("id"));
metadata.add(tagMetadata); metadata.add(tagMetadata);
} }
} }

@ -1,13 +1,11 @@
package com.todoroo.astrid.actfm.sync.messages; package com.todoroo.astrid.actfm.sync.messages;
import java.math.BigInteger;
import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.RemoteModel;
public class BriefMe<TYPE extends RemoteModel> implements ClientToServerMessage { public class BriefMe<TYPE extends RemoteModel> implements ClientToServerMessage {
private final Class<? extends RemoteModel> modelClass; private final Class<? extends RemoteModel> modelClass;
private final BigInteger uuid; private final String uuid;
private long pushedAt; // TODO: Populate and use private long pushedAt; // TODO: Populate and use
public BriefMe(TYPE entity) { public BriefMe(TYPE entity) {

@ -1,7 +1,6 @@
package com.todoroo.astrid.actfm.sync.messages; package com.todoroo.astrid.actfm.sync.messages;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -23,7 +22,7 @@ public class ChangesHappened<TYPE extends RemoteModel, OE extends OutstandingEnt
private final Class<? extends RemoteModel> modelClass; private final Class<? extends RemoteModel> modelClass;
private final Class<OE> outstandingClass; private final Class<OE> outstandingClass;
private final long id; private final long id;
private final BigInteger uuid; private final String uuid;
private final List<OE> changes; private final List<OE> changes;
private long pushedAt; private long pushedAt;
private final OutstandingEntryDao<OE> outstandingDao; private final OutstandingEntryDao<OE> outstandingDao;
@ -41,7 +40,7 @@ public class ChangesHappened<TYPE extends RemoteModel, OE extends OutstandingEnt
entity = modelDao.fetch(entity.getId(), getModelProperties(modelClass)); entity = modelDao.fetch(entity.getId(), getModelProperties(modelClass));
} }
if (entity == null) { if (entity == null) {
this.uuid = BigInteger.ZERO; this.uuid = RemoteModel.NO_UUID;
this.pushedAt = 0; this.pushedAt = 0;
} else { } else {
this.uuid = entity.getValue(RemoteModel.UUID_PROPERTY); this.uuid = entity.getValue(RemoteModel.UUID_PROPERTY);

@ -1,13 +1,11 @@
package com.todoroo.astrid.actfm.sync.messages; package com.todoroo.astrid.actfm.sync.messages;
import java.math.BigInteger;
import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.RemoteModel;
public class RequestDoubleCheck<TYPE extends RemoteModel> implements ClientToServerMessage { public class RequestDoubleCheck<TYPE extends RemoteModel> implements ClientToServerMessage {
private final Class<? extends RemoteModel> modelClass; private final Class<? extends RemoteModel> modelClass;
private final BigInteger uuid; private final String uuid;
public RequestDoubleCheck(TYPE entity) { public RequestDoubleCheck(TYPE entity) {
this.modelClass = entity.getClass(); this.modelClass = entity.getClass();

@ -8,7 +8,6 @@ package com.todoroo.astrid.backup;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.math.BigInteger;
import org.xmlpull.v1.XmlSerializer; import org.xmlpull.v1.XmlSerializer;
@ -316,27 +315,6 @@ public class TasksXmlExporter {
} }
return null; return null;
} }
@Override
public Void visitBigInteger(Property<BigInteger> property,
AbstractModel data) {
try {
BigInteger value = data.getValue(property);
if(value == null)
return null;
xml.attribute(null, property.name, value.toString());
} catch (UnsupportedOperationException e) {
// didn't read this value, do nothing
} catch (IllegalArgumentException e) {
throw new RuntimeException(e);
} catch (IllegalStateException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
return null;
}
} }
private void onFinishExport(final String outputFile) { private void onFinishExport(final String outputFile) {

@ -7,7 +7,6 @@ package com.todoroo.astrid.backup;
import java.io.FileReader; import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import java.math.BigInteger;
import java.util.Date; import java.util.Date;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.StringTokenizer; import java.util.StringTokenizer;
@ -387,14 +386,6 @@ public class TasksXmlImporter {
return null; return null;
} }
@Override
public Void visitBigInteger(Property<BigInteger> property,
AbstractModel data) {
String value = xpp.getAttributeValue(null, property.name);
if(value != null)
data.setValue(property, new BigInteger(value));
return null;
}
} }
} }

@ -137,7 +137,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
public void loadViewForTaskID(long t){ public void loadViewForTaskID(long t){
try { try {
task = PluginServices.getTaskService().fetchById(t, Task.NOTES, Task.ID, Task.REMOTE_ID, Task.TITLE); task = PluginServices.getTaskService().fetchById(t, Task.NOTES, Task.ID, Task.UUID, Task.TITLE);
} catch (SQLiteException e) { } catch (SQLiteException e) {
StartupService.handleSQLiteColumnMissing(ContextManager.getContext(), e); StartupService.handleSQLiteColumnMissing(ContextManager.getContext(), e);
} }
@ -148,7 +148,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
setUpListAdapter(); setUpListAdapter();
if(actFmPreferenceService.isLoggedIn()) { if(actFmPreferenceService.isLoggedIn()) {
if(!task.containsNonNullValue(Task.REMOTE_ID)) if(!task.containsNonNullValue(Task.UUID))
refreshData(true, null); refreshData(true, null);
else { else {
String fetchKey = LAST_FETCH_KEY + task.getId(); String fetchKey = LAST_FETCH_KEY + task.getId();
@ -285,12 +285,12 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
TodorooCursor<Update> updates; TodorooCursor<Update> updates;
if (!task.containsNonNullValue(Task.REMOTE_ID)) { if (!task.containsNonNullValue(Task.UUID)) {
updates = updateDao.query(Query.select(Update.PROPERTIES).where(Update.TASK_LOCAL.eq(task.getId()))); updates = updateDao.query(Query.select(Update.PROPERTIES).where(Update.TASK_LOCAL.eq(task.getId())));
} }
else { else {
updates = updateDao.query(Query.select(Update.PROPERTIES).where(Criterion.or( updates = updateDao.query(Query.select(Update.PROPERTIES).where(Criterion.or(
Update.TASK.eq(task.getValue(Task.REMOTE_ID)), Update.TASK_LOCAL.eq(task.getId())))); Update.TASK.eq(task.getValue(Task.UUID)), Update.TASK_LOCAL.eq(task.getId()))));
} }
try { try {
Update update = new Update(); Update update = new Update();
@ -391,7 +391,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
} }
public void refreshData(boolean manual, SyncResultCallback existingCallback) { public void refreshData(boolean manual, SyncResultCallback existingCallback) {
if(!task.containsNonNullValue(Task.REMOTE_ID)) { if(!task.containsNonNullValue(Task.UUID)) {
return; return;
} }

@ -1,7 +1,5 @@
package com.todoroo.astrid.tags; package com.todoroo.astrid.tags;
import java.math.BigInteger;
import android.util.Log; import android.util.Log;
import com.todoroo.andlib.data.DatabaseDao; import com.todoroo.andlib.data.DatabaseDao;
@ -104,14 +102,14 @@ public class Astrid44SyncMigrator {
if (Constants.DEBUG) if (Constants.DEBUG)
Log.w(LOG_TAG, "Incomplete linking task " + m.getValue(Metadata.TASK) + " to " + m.getValue(TagMetadata.TAG_NAME)); Log.w(LOG_TAG, "Incomplete linking task " + m.getValue(Metadata.TASK) + " to " + m.getValue(TagMetadata.TAG_NAME));
if (!m.containsNonNullValue(TagMetadata.TASK_UUID) || m.getValue(TagMetadata.TASK_UUID).compareTo(BigInteger.ZERO) == 0) { if (!m.containsNonNullValue(TagMetadata.TASK_UUID) || RemoteModel.NO_UUID.equals(m.getValue(TagMetadata.TASK_UUID))) {
if (Constants.DEBUG) if (Constants.DEBUG)
Log.w(LOG_TAG, "No task uuid"); Log.w(LOG_TAG, "No task uuid");
updateTaskUuid(m); updateTaskUuid(m);
changes = true; changes = true;
} }
if (!m.containsNonNullValue(TagMetadata.TAG_UUID) || m.getValue(TagMetadata.TAG_UUID).compareTo(BigInteger.ZERO) == 0) { if (!m.containsNonNullValue(TagMetadata.TAG_UUID) || RemoteModel.NO_UUID.equals(m.getValue(TagMetadata.TAG_UUID))) {
if (Constants.DEBUG) if (Constants.DEBUG)
Log.w(LOG_TAG, "No tag uuid"); Log.w(LOG_TAG, "No tag uuid");
updateTagUuid(m); updateTagUuid(m);
@ -138,12 +136,12 @@ public class Astrid44SyncMigrator {
instance.readPropertiesFromCursor(cursor); instance.readPropertiesFromCursor(cursor);
if (!instance.containsNonNullValue(RemoteModel.REMOTE_ID_PROPERTY)) { if (!instance.containsNonNullValue(RemoteModel.REMOTE_ID_PROPERTY)) {
// No remote id exists, just create a UUID // No remote id exists, just create a UUID
Pair<BigInteger, String> uuidPair = UUIDHelper.newUUID(); Pair<String, String> uuidPair = UUIDHelper.newUUID();
instance.setValue(RemoteModel.UUID_PROPERTY, uuidPair.getLeft()); instance.setValue(RemoteModel.UUID_PROPERTY, uuidPair.getLeft());
instance.setValue(RemoteModel.PROOF_TEXT_PROPERTY, uuidPair.getRight()); instance.setValue(RemoteModel.PROOF_TEXT_PROPERTY, uuidPair.getRight());
} else { } else {
// Migrate remote id to uuid field // Migrate remote id to uuid field
instance.setValue(RemoteModel.UUID_PROPERTY, BigInteger.valueOf(instance.getValue(RemoteModel.REMOTE_ID_PROPERTY))); instance.setValue(RemoteModel.UUID_PROPERTY, Long.toString(instance.getValue(RemoteModel.REMOTE_ID_PROPERTY)));
} }
dao.saveExisting(instance); dao.saveExisting(instance);
} }

@ -5,7 +5,6 @@
*/ */
package com.todoroo.astrid.tags; package com.todoroo.astrid.tags;
import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -42,6 +41,7 @@ import com.todoroo.astrid.api.FilterWithUpdate;
import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.core.SortHelper;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.gtasks.GtasksPreferenceService; import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.AstridDependencyInjector;
@ -79,7 +79,7 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
FilterWithUpdate filter = new FilterWithUpdate(tag.tag, FilterWithUpdate filter = new FilterWithUpdate(tag.tag,
title, tagTemplate, title, tagTemplate,
contentValues); contentValues);
if(BigInteger.ZERO.compareTo(tag.uuid) != 0) { if(!RemoteModel.NO_UUID.equals(tag.uuid)) {
filter.listingTitle += " (" + tag.count + ")"; filter.listingTitle += " (" + tag.count + ")";
if(tag.count == 0) if(tag.count == 0)
filter.color = Color.GRAY; filter.color = Color.GRAY;

@ -1,8 +1,5 @@
package com.todoroo.astrid.tags; package com.todoroo.astrid.tags;
import java.math.BigInteger;
import com.todoroo.andlib.data.Property.BigIntegerProperty;
import com.todoroo.andlib.data.Property.LongProperty; import com.todoroo.andlib.data.Property.LongProperty;
import com.todoroo.andlib.data.Property.StringProperty; import com.todoroo.andlib.data.Property.StringProperty;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
@ -17,11 +14,11 @@ public class TagMetadata {
public static final StringProperty TAG_NAME = Metadata.VALUE1; public static final StringProperty TAG_NAME = Metadata.VALUE1;
/** Tag uuid */ /** Tag uuid */
public static final BigIntegerProperty TAG_UUID = new BigIntegerProperty( public static final StringProperty TAG_UUID = new StringProperty(
Metadata.TABLE, Metadata.VALUE2.name); Metadata.TABLE, Metadata.VALUE2.name);
/** Task uuid */ /** Task uuid */
public static final BigIntegerProperty TASK_UUID = new BigIntegerProperty( public static final StringProperty TASK_UUID = new StringProperty(
Metadata.TABLE, Metadata.VALUE3.name); Metadata.TABLE, Metadata.VALUE3.name);
/** Pushed at time */ /** Pushed at time */
@ -40,11 +37,11 @@ public class TagMetadata {
* @param tagUuid * @param tagUuid
* @return * @return
*/ */
public static Metadata newTagMetadata(Task task, String tagName, BigInteger tagUuid) { public static Metadata newTagMetadata(Task task, String tagName, String tagUuid) {
return newTagMetadata(task.getId(), task.getValue(Task.UUID), tagName, tagUuid); return newTagMetadata(task.getId(), task.getValue(Task.UUID), tagName, tagUuid);
} }
public static Metadata newTagMetadata(long taskId, BigInteger taskUuid, String tagName, BigInteger tagUuid) { public static Metadata newTagMetadata(long taskId, String taskUuid, String tagName, String tagUuid) {
Metadata link = new Metadata(); Metadata link = new Metadata();
link.setValue(Metadata.KEY, KEY); link.setValue(Metadata.KEY, KEY);
link.setValue(Metadata.TASK, taskId); link.setValue(Metadata.TASK, taskId);

@ -5,7 +5,6 @@
*/ */
package com.todoroo.astrid.tags; package com.todoroo.astrid.tags;
import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
@ -105,14 +104,14 @@ public final class TagService {
public String tag; public String tag;
public int count; public int count;
public long id; public long id;
public BigInteger uuid; public String uuid;
public String image; public String image;
public long userId; public long userId;
public long memberCount; public long memberCount;
@Deprecated public long remoteId; @Deprecated public long remoteId;
public static Tag tagFromUUID(BigInteger uuid) { public static Tag tagFromUUID(String uuid) {
TodorooCursor<TagData> tagData = PluginServices.getTagDataService().query(Query.select(TagData.PROPERTIES).where(TagData.UUID.eq(uuid))); TodorooCursor<TagData> tagData = PluginServices.getTagDataService().query(Query.select(TagData.PROPERTIES).where(TagData.UUID.eq(uuid)));
try { try {
if (tagData.getCount() > 0) { if (tagData.getCount() > 0) {
@ -257,7 +256,7 @@ public final class TagService {
} }
} }
public void createLink(Task task, String tagName, BigInteger tagUuid) { public void createLink(Task task, String tagName, String tagUuid) {
TodorooCursor<Metadata> existing = metadataDao.query(Query.select(Metadata.PROPERTIES) TodorooCursor<Metadata> existing = metadataDao.query(Query.select(Metadata.PROPERTIES)
.where(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), .where(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY),
TagMetadata.TASK_UUID.eq(task.getValue(Task.UUID)), TagMetadata.TASK_UUID.eq(task.getValue(Task.UUID)),
@ -420,8 +419,8 @@ public final class TagService {
* @param taskId * @param taskId
* @param tags * @param tags
*/ */
public boolean synchronizeTags(long taskId, BigInteger taskUuid, Set<String> tags) { public boolean synchronizeTags(long taskId, String taskUuid, Set<String> tags) {
HashSet<BigInteger> existingLinks = new HashSet<BigInteger>(); HashSet<String> existingLinks = new HashSet<String>();
TodorooCursor<Metadata> links = metadataDao.query(Query.select(Metadata.PROPERTIES) TodorooCursor<Metadata> links = metadataDao.query(Query.select(Metadata.PROPERTIES)
.where(Criterion.and(TagMetadata.TASK_UUID.eq(taskUuid), Metadata.DELETION_DATE.eq(0)))); .where(Criterion.and(TagMetadata.TASK_UUID.eq(taskUuid), Metadata.DELETION_DATE.eq(0))));
try { try {

@ -1,6 +1,5 @@
package com.todoroo.astrid.tags.reusable; package com.todoroo.astrid.tags.reusable;
import java.math.BigInteger;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import android.content.Context; import android.content.Context;
@ -17,6 +16,7 @@ import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.Flags;
@ -50,7 +50,7 @@ public class ReusableTaskAdapter extends TaskAdapter {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
ReusableTaskViewHolder holder = (ReusableTaskViewHolder) v.getTag(); ReusableTaskViewHolder holder = (ReusableTaskViewHolder) v.getTag();
taskService.cloneReusableTask(holder.task, null, BigInteger.ZERO); taskService.cloneReusableTask(holder.task, null, RemoteModel.NO_UUID);
Toast.makeText(fragment.getActivity(), R.string.actfm_feat_list_task_clone_success, Toast.LENGTH_LONG).show(); Toast.makeText(fragment.getActivity(), R.string.actfm_feat_list_task_clone_success, Toast.LENGTH_LONG).show();
Flags.set(Flags.REFRESH); Flags.set(Flags.REFRESH);
} }

@ -7,7 +7,6 @@ package com.todoroo.astrid.activity;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@ -65,6 +64,7 @@ import com.todoroo.astrid.actfm.EditPeopleControlSet;
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.actfm.sync.ActFmSyncService; import com.todoroo.astrid.actfm.sync.ActFmSyncService;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.files.AACRecordingActivity; import com.todoroo.astrid.files.AACRecordingActivity;
import com.todoroo.astrid.files.FileExplore; import com.todoroo.astrid.files.FileExplore;
@ -259,7 +259,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
private boolean overrideFinishAnim; private boolean overrideFinishAnim;
private BigInteger remoteId = BigInteger.ZERO; private String remoteId = RemoteModel.NO_UUID;
private WebServicesView webServices = null; private WebServicesView webServices = null;
@ -303,7 +303,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
model = task; model = task;
} }
if (savedInstanceState.containsKey(TASK_UUID)) { if (savedInstanceState.containsKey(TASK_UUID)) {
remoteId = new BigInteger(savedInstanceState.getString(TASK_UUID)); remoteId = savedInstanceState.getString(TASK_UUID);
} }
} }
@ -790,7 +790,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
/** Convenience method to populate fields after setting model to null */ /** Convenience method to populate fields after setting model to null */
public void repopulateFromScratch(Intent intent) { public void repopulateFromScratch(Intent intent) {
model = null; model = null;
remoteId = BigInteger.ZERO; remoteId = RemoteModel.NO_UUID;
populateFields(intent); populateFields(intent);
if (webServices != null) { if (webServices != null) {
webServices.setTask(model); webServices.setTask(model);
@ -1163,7 +1163,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
@Override @Override
public void onPrepareOptionsMenu (Menu menu) { public void onPrepareOptionsMenu (Menu menu) {
if(actFmPreferenceService.isLoggedIn() && BigInteger.ZERO.compareTo(remoteId) != 0 && menu.findItem(MENU_COMMENTS_REFRESH_ID) == null) { if(actFmPreferenceService.isLoggedIn() && !RemoteModel.NO_UUID.equals(remoteId) && menu.findItem(MENU_COMMENTS_REFRESH_ID) == null) {
MenuItem item = menu.add(Menu.NONE, MENU_COMMENTS_REFRESH_ID, Menu.NONE, MenuItem item = menu.add(Menu.NONE, MENU_COMMENTS_REFRESH_ID, Menu.NONE,
R.string.ENA_refresh_comments); R.string.ENA_refresh_comments);
item.setIcon(R.drawable.icn_menu_refresh_dark); item.setIcon(R.drawable.icn_menu_refresh_dark);

@ -6,7 +6,6 @@
package com.todoroo.astrid.adapter; package com.todoroo.astrid.adapter;
import java.io.IOException; import java.io.IOException;
import java.math.BigInteger;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -362,7 +361,7 @@ public class UpdateAdapter extends CursorAdapter {
if (TASK_LINK_TYPE.equals(linkType)) { if (TASK_LINK_TYPE.equals(linkType)) {
long taskId = update.getValue(Update.TASK_LOCAL); long taskId = update.getValue(Update.TASK_LOCAL);
if (taskId <= 0) { if (taskId <= 0) {
Task local = PluginServices.getTaskService().fetchByRemoteId(BigInteger.valueOf(update.getValue(Update.TASK)), Task.ID); Task local = PluginServices.getTaskService().fetchByRemoteId(Long.toString(update.getValue(Update.TASK)), Task.ID);
if (local != null) if (local != null)
taskId = local.getId(); taskId = local.getId();
} }

@ -1,7 +1,5 @@
package com.todoroo.astrid.dao; package com.todoroo.astrid.dao;
import java.math.BigInteger;
import com.todoroo.andlib.data.DatabaseDao; import com.todoroo.andlib.data.DatabaseDao;
import com.todoroo.andlib.utility.Pair; import com.todoroo.andlib.utility.Pair;
import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.RemoteModel;
@ -25,7 +23,7 @@ public class RemoteModelDao<RTYPE extends RemoteModel> extends DatabaseDao<RTYPE
@Override @Override
public boolean createNew(RTYPE item) { public boolean createNew(RTYPE item) {
if (!item.containsValue(RemoteModel.UUID_PROPERTY)) { if (!item.containsValue(RemoteModel.UUID_PROPERTY)) {
Pair<BigInteger, String> uuidPair = UUIDHelper.newUUID(); Pair<String, String> uuidPair = UUIDHelper.newUUID();
item.setValue(RemoteModel.UUID_PROPERTY, uuidPair.getLeft()); item.setValue(RemoteModel.UUID_PROPERTY, uuidPair.getLeft());
item.setValue(RemoteModel.PROOF_TEXT_PROPERTY, uuidPair.getRight()); item.setValue(RemoteModel.PROOF_TEXT_PROPERTY, uuidPair.getRight());
} }

@ -5,8 +5,6 @@
*/ */
package com.todoroo.astrid.dao; package com.todoroo.astrid.dao;
import java.math.BigInteger;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -338,7 +336,7 @@ public class TaskDao extends RemoteModelDao<Task> {
try { try {
saveExisting(item); saveExisting(item);
} catch (SQLiteConstraintException e) { } catch (SQLiteConstraintException e) {
BigInteger uuid = item.getValue(Task.UUID); String uuid = item.getValue(Task.UUID);
TodorooCursor<Task> tasksWithUUID = query(Query.select( TodorooCursor<Task> tasksWithUUID = query(Query.select(
SQL_CONSTRAINT_MERGE_PROPERTIES).where( SQL_CONSTRAINT_MERGE_PROPERTIES).where(
Task.UUID.eq(uuid))); Task.UUID.eq(uuid)));

@ -1,6 +1,5 @@
package com.todoroo.astrid.helper; package com.todoroo.astrid.helper;
import java.math.BigInteger;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.util.UUID; import java.util.UUID;
@ -40,7 +39,7 @@ public class UUIDHelper {
* @return a pair consisting of the newly * @return a pair consisting of the newly
* generated uuid and the corresponding proof text * generated uuid and the corresponding proof text
*/ */
public static Pair<BigInteger, String> newUUID() { public static Pair<String, String> newUUID() {
long uuid = 0; long uuid = 0;
String proofText = ""; //$NON-NLS-1$ String proofText = ""; //$NON-NLS-1$
do { do {
@ -55,7 +54,7 @@ public class UUIDHelper {
proofText = d + "," + s; //$NON-NLS-1$ proofText = d + "," + s; //$NON-NLS-1$
uuid = bcryptToLong(proofText); uuid = bcryptToLong(proofText);
} while (uuid < MIN_UUID); } while (uuid < MIN_UUID);
return Pair.create(BigInteger.valueOf(uuid), proofText); return Pair.create(Long.toString(uuid), proofText);
} }
private static final String SALT = "$2a$10$2RHhxhKaPb4VXlQUJyBU/O"; //$NON-NLS-1$ private static final String SALT = "$2a$10$2RHhxhKaPb4VXlQUJyBU/O"; //$NON-NLS-1$

@ -5,7 +5,6 @@
*/ */
package com.todoroo.astrid.service; package com.todoroo.astrid.service;
import java.math.BigInteger;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map.Entry; import java.util.Map.Entry;
@ -315,14 +314,6 @@ public class Astrid2To3UpgradeHelper {
Log.d("upgrade", "wrote " + value + " to -> " + property + " of model id " + data.cursor.getLong(1)); Log.d("upgrade", "wrote " + value + " to -> " + property + " of model id " + data.cursor.getLong(1));
return null; return null;
} }
@Override
public Void visitBigInteger(Property<BigInteger> property, UpgradeVisitorContainer<?> data) {
BigInteger value = new BigInteger(data.cursor.getString(data.columnIndex));
data.model.setValue(property, value);
Log.d("upgrade", "wrote " + value + " to -> " + property + " of model id " + data.cursor.getLong(1));
return null;
}
} }
/** /**

@ -5,8 +5,6 @@
*/ */
package com.todoroo.astrid.service; package com.todoroo.astrid.service;
import java.math.BigInteger;
import com.todoroo.andlib.data.Property; import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
@ -19,6 +17,7 @@ import com.todoroo.astrid.api.PermaSql;
import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.UpdateDao; import com.todoroo.astrid.dao.UpdateDao;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Update; import com.todoroo.astrid.data.Update;
@ -147,7 +146,7 @@ public class TagDataService {
return updateDao.query(Query.select(Update.PROPERTIES).where( return updateDao.query(Query.select(Update.PROPERTIES).where(
criterion). criterion).
orderBy(Order.desc(Update.CREATION_DATE))); orderBy(Order.desc(Update.CREATION_DATE)));
if(BigInteger.ZERO.compareTo(tagData.getValue(TagData.UUID)) == 0) if(RemoteModel.NO_UUID.equals(tagData.getValue(TagData.UUID)))
return updateDao.query(Query.select(Update.PROPERTIES).where(Update.TAGS_LOCAL.like("%," + tagData.getId() + ",%"))); return updateDao.query(Query.select(Update.PROPERTIES).where(Update.TAGS_LOCAL.like("%," + tagData.getId() + ",%")));
return updateDao.query(Query.select(Update.PROPERTIES).where(Criterion.and(criterion, return updateDao.query(Query.select(Update.PROPERTIES).where(Criterion.and(criterion,
Criterion.or(Update.TAGS.like("%," + tagData.getValue(TagData.UUID) + ",%"), Criterion.or(Update.TAGS.like("%," + tagData.getValue(TagData.UUID) + ",%"),
@ -161,7 +160,7 @@ public class TagDataService {
* @return * @return
*/ */
public Update getLatestUpdate(TagData tagData) { public Update getLatestUpdate(TagData tagData) {
if(BigInteger.ZERO.compareTo(tagData.getValue(TagData.UUID)) == 0) if(RemoteModel.NO_UUID.equals(tagData.getValue(TagData.UUID)))
return null; return null;
@SuppressWarnings("nls") @SuppressWarnings("nls")

@ -5,7 +5,6 @@
*/ */
package com.todoroo.astrid.service; package com.todoroo.astrid.service;
import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
@ -33,6 +32,7 @@ import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.SyncFlags;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.gcal.GCalHelper;
@ -105,7 +105,7 @@ public class TaskService {
* @param properties * @param properties
* @return item, or null if it doesn't exist * @return item, or null if it doesn't exist
*/ */
public Task fetchByRemoteId(BigInteger uuid, Property<?>... properties) { public Task fetchByRemoteId(String uuid, Property<?>... properties) {
TodorooCursor<Task> task = query(Query.select(properties).where(Task.UUID.eq(uuid))); TodorooCursor<Task> task = query(Query.select(properties).where(Task.UUID.eq(uuid)));
try { try {
if (task.getCount() > 0) { if (task.getCount() > 0) {
@ -193,7 +193,7 @@ public class TaskService {
return newTask; return newTask;
} }
public Task cloneReusableTask(Task task, String tagName, BigInteger tagUuid) { public Task cloneReusableTask(Task task, String tagName, String tagUuid) {
Task newTask = fetchById(task.getId(), Task.PROPERTIES); Task newTask = fetchById(task.getId(), Task.PROPERTIES);
if (newTask == null) if (newTask == null)
return new Task(); return new Task();
@ -205,7 +205,7 @@ public class TaskService {
taskDao.save(newTask); taskDao.save(newTask);
if (BigInteger.ZERO.compareTo(tagUuid) != 0) { if (!RemoteModel.NO_UUID.equals(tagUuid)) {
TagService.getInstance().createLink(task, tagName, tagUuid); TagService.getInstance().createLink(task, tagName, tagUuid);
} }
return newTask; return newTask;
@ -535,7 +535,7 @@ public class TaskService {
metadata.setValue(Metadata.TASK, task.getId()); metadata.setValue(Metadata.TASK, task.getId());
metadata.mergeWith(forMetadata); metadata.mergeWith(forMetadata);
if (TagMetadata.KEY.equals(metadata.getValue(Metadata.KEY))) { if (TagMetadata.KEY.equals(metadata.getValue(Metadata.KEY))) {
if (metadata.containsNonNullValue(TagMetadata.TAG_UUID) && BigInteger.ZERO.compareTo(metadata.getValue(TagMetadata.TAG_UUID)) != 0) { if (metadata.containsNonNullValue(TagMetadata.TAG_UUID) && !RemoteModel.NO_UUID.equals(metadata.getValue(TagMetadata.TAG_UUID))) {
// This is more efficient // This is more efficient
TagService.getInstance().createLink(task, metadata.getValue(TagMetadata.TAG_NAME), metadata.getValue(TagMetadata.TAG_UUID)); TagService.getInstance().createLink(task, metadata.getValue(TagMetadata.TAG_NAME), metadata.getValue(TagMetadata.TAG_UUID));
} else { } else {

Loading…
Cancel
Save