Remove User and UserDao

pull/46/head
Alex Baker 12 years ago
parent df321eda14
commit ea695ead9c

@ -37,10 +37,6 @@ public final class Task extends RemoteModel {
/** table for this model */ /** table for this model */
public static final Table TABLE = new Table("tasks", Task.class); public static final Table TABLE = new Table("tasks", Task.class);
/** model class for entries in the outstanding table */
public static final Class<? extends OutstandingEntry<Task>> OUTSTANDING_MODEL = TaskOutstanding.class;
/** content uri for this model */
public static final Uri CONTENT_URI = Uri.parse("content://" + AstridApiConstants.API_PACKAGE + "/" + public static final Uri CONTENT_URI = Uri.parse("content://" + AstridApiConstants.API_PACKAGE + "/" +
TABLE.name); TABLE.name);
@ -162,10 +158,6 @@ public final class Task extends RemoteModel {
public static final StringProperty USER_ID = new StringProperty( public static final StringProperty USER_ID = new StringProperty(
TABLE, USER_ID_PROPERTY_NAME, Property.PROP_FLAG_USER_ID); TABLE, USER_ID_PROPERTY_NAME, Property.PROP_FLAG_USER_ID);
/** User Object (JSON) */
@Deprecated public static final StringProperty USER = new StringProperty(
TABLE, USER_JSON_PROPERTY_NAME);
/** Creator user id */ /** Creator user id */
public static final StringProperty CREATOR_ID = new StringProperty( public static final StringProperty CREATOR_ID = new StringProperty(
TABLE, "creatorId", Property.PROP_FLAG_USER_ID); TABLE, "creatorId", Property.PROP_FLAG_USER_ID);
@ -190,41 +182,11 @@ public final class Task extends RemoteModel {
/** 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);
// --- flags
/** whether repeat occurs relative to completion date instead of due date */
@Deprecated public static final int FLAG_REPEAT_AFTER_COMPLETION = 1 << 1;
/** whether task is read-only */
@Deprecated public static final int FLAG_IS_READONLY = 1 << 2;
/** whether a task is public */
@Deprecated public static final int FLAG_PUBLIC = 1 << 3;
// --- user id special values // --- user id special values
/** user id = doesn't exist/ignore it. For filtering in tags */
public static final String USER_ID_IGNORE = "-3";
/** user id = read user email value */
public static final String USER_ID_EMAIL = "-2";
/** user id = unassigned */
public static final String USER_ID_UNASSIGNED = "-1";
/** user id = myself */ /** user id = myself */
public static final String USER_ID_SELF = "0"; public static final String USER_ID_SELF = "0";
public static boolean isRealUserId(String userId) {
if (userId == null) {
return false;
}
return !(Task.USER_ID_SELF.equals(userId) ||
Task.USER_ID_UNASSIGNED.equals(userId) ||
Task.USER_ID_EMAIL.equals(userId) ||
Task.USER_ID_IGNORE.equals(userId));
}
public static boolean userIdIsEmail(String userId) { public static boolean userIdIsEmail(String userId) {
if (userId == null) { if (userId == null) {
return false; return false;
@ -256,9 +218,6 @@ public final class Task extends RemoteModel {
// --- social reminder types // --- social reminder types
public static final String REMINDER_SOCIAL_UNSEEN = "unseen"; public static final String REMINDER_SOCIAL_UNSEEN = "unseen";
public static final String REMINDER_SOCIAL_PRIVATE = "private";
public static final String REMINDER_SOCIAL_NO_FACES = "no_faces";
public static final String REMINDER_SOCIAL_FACES = "faces";
/** /**
* @return colors that correspond to importance values * @return colors that correspond to importance values
@ -314,8 +273,6 @@ public final class Task extends RemoteModel {
defaultValues.put(UUID.name, NO_UUID); defaultValues.put(UUID.name, NO_UUID);
defaultValues.put(USER_ID.name, "0"); defaultValues.put(USER_ID.name, "0");
defaultValues.put(CREATOR_ID.name, 0); defaultValues.put(CREATOR_ID.name, 0);
defaultValues.put(USER.name, "");
// defaultValues.put(USER_EMAIL.name, "");
defaultValues.put(PUSHED_AT.name, 0L); defaultValues.put(PUSHED_AT.name, 0L);
defaultValues.put(ATTACHMENTS_PUSHED_AT.name, 0L); defaultValues.put(ATTACHMENTS_PUSHED_AT.name, 0L);
defaultValues.put(USER_ACTIVITIES_PUSHED_AT.name, 0L); defaultValues.put(USER_ACTIVITIES_PUSHED_AT.name, 0L);

@ -1,190 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.data;
import android.content.ContentValues;
import android.net.Uri;
import android.text.TextUtils;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.Property.LongProperty;
import com.todoroo.andlib.data.Property.StringProperty;
import com.todoroo.andlib.data.Table;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.astrid.api.AstridApiConstants;
/**
* Data Model which represents a user.
*
* @author Tim Su <tim@todoroo.com>
*
*/
public final class User extends RemoteModel {
// --- table and uri
/** table for this model */
public static final Table TABLE = new Table("users", User.class);
/** content uri for this model */
public static final Uri CONTENT_URI = Uri.parse("content://" + AstridApiConstants.API_PACKAGE + "/" +
TABLE.name);
// --- properties
/** ID */
public static final LongProperty ID = new LongProperty(
TABLE, ID_PROPERTY_NAME);
/** User Name */
public static final StringProperty NAME = new StringProperty(
TABLE, "name");
/** User first name */
public static final StringProperty FIRST_NAME = new StringProperty(
TABLE, "first_name");
/** User last name */
public static final StringProperty LAST_NAME = new StringProperty(
TABLE, "last_name");
/** User Email */
@Deprecated public static final StringProperty EMAIL = new StringProperty(
TABLE, "email");
/** User picture */
public static final StringProperty PICTURE = new StringProperty(
TABLE, "picture", Property.PROP_FLAG_JSON);
/** Remote id */
public static final StringProperty UUID = new StringProperty(
TABLE, UUID_PROPERTY_NAME);
/** Pushed at date */
public static final LongProperty PUSHED_AT = new LongProperty(
TABLE, PUSHED_AT_PROPERTY_NAME);
/** Pushed at date */
public static final LongProperty TASKS_PUSHED_AT = new LongProperty(
TABLE, "tasks_pushed_at");
/** Friendship status. One of the STATUS constants below */
public static final StringProperty STATUS = new StringProperty(
TABLE, "status");
/** Last autosync */
public static final LongProperty LAST_AUTOSYNC = new LongProperty(
TABLE, "lastAutosync");
/** Friendship tatus that needs to be reported to the server.
* One of the PENDING constants below */
@Deprecated public static final StringProperty PENDING_STATUS = new StringProperty(
TABLE, "pendingStatus");
/** List of all properties for this model */
public static final Property<?>[] PROPERTIES = generateProperties(User.class);
// --- defaults
/** Default values container */
private static final ContentValues defaultValues = new ContentValues();
static {
defaultValues.put(NAME.name, "");
defaultValues.put(FIRST_NAME.name, "");
defaultValues.put(LAST_NAME.name, "");
defaultValues.put(EMAIL.name, "");
defaultValues.put(PICTURE.name, "");
defaultValues.put(PUSHED_AT.name, 0L);
defaultValues.put(TASKS_PUSHED_AT.name, 0L);
defaultValues.put(UUID.name, NO_UUID);
defaultValues.put(STATUS.name, "");
defaultValues.put(LAST_AUTOSYNC.name, 0L);
}
@Override
public ContentValues getDefaultValues() {
return defaultValues;
}
public static final String STATUS_PENDING = "pending";
public static final String STATUS_OTHER_PENDING = "other_pending";
public static final String STATUS_FRIENDS = "friends";
public static final String STATUS_IGNORED = "ignored";
public static final String STATUS_BLOCKED = "blocked";
public static final String STATUS_REQUEST = "request";
public static final String STATUS_CONFIRM = "confirm";
public static final String STATUS_IGNORE = "ignore";
public static final String STATUS_RENOUNCE = "renounce";
// --- data access boilerplate
public User() {
super();
}
public User(TodorooCursor<User> cursor) {
this();
readPropertiesFromCursor(cursor);
}
public void readFromCursor(TodorooCursor<User> cursor) {
super.readPropertiesFromCursor(cursor);
}
public String getDisplayName() {
return getDisplayName(NAME, FIRST_NAME, LAST_NAME);
}
private String getCheckedString(StringProperty stringProperty) {
return containsNonNullValue(stringProperty) ? getValue(stringProperty) : null;
}
public String getDisplayName(StringProperty nameProperty, StringProperty firstNameProperty, StringProperty lastNameProperty) {
String name = getCheckedString(nameProperty);
if (!(TextUtils.isEmpty(name) || "null".equals(name))) {
return name;
}
String firstName = getCheckedString(firstNameProperty);
boolean firstNameEmpty = TextUtils.isEmpty(firstName) || "null".equals(firstName);
String lastName = getCheckedString(lastNameProperty);
boolean lastNameEmpty = TextUtils.isEmpty(lastName) || "null".equals(lastName);
if (firstNameEmpty && lastNameEmpty) {
return getCheckedString(EMAIL);
}
StringBuilder nameBuilder = new StringBuilder();
if (!firstNameEmpty) {
nameBuilder.append(firstName).append(" ");
}
if (!lastNameEmpty) {
nameBuilder.append(lastName);
}
return nameBuilder.toString().trim();
}
@Override
public long getId() {
return getIdHelper(ID);
}
@Override
public String getUuid() {
return getUuidHelper(UUID);
}
// --- parcelable helpers
public static final Creator<User> CREATOR = new ModelCreator<User>(User.class);
@Override
protected Creator<? extends AbstractModel> getCreator() {
return CREATOR;
}
}

@ -67,7 +67,7 @@ public class TagCommentsFragment extends CommentsFragment {
@Override @Override
protected Cursor getCursor() { protected Cursor getCursor() {
return tagDataService.getActivityForTagData(tagData, null, UpdateAdapter.USER_TABLE_ALIAS, UpdateAdapter.USER_PROPERTIES); return tagDataService.getActivityForTagData(tagData, null);
} }
@Override @Override

@ -23,31 +23,22 @@ import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuItem;
import com.actionbarsherlock.view.Window; import com.actionbarsherlock.view.Window;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.ActFmCameraModule.CameraResultCallback; import com.todoroo.astrid.actfm.ActFmCameraModule.CameraResultCallback;
import com.todoroo.astrid.dao.TagMetadataDao; import com.todoroo.astrid.dao.TagMetadataDao;
import com.todoroo.astrid.dao.TagMetadataDao.TagMetadataCriteria;
import com.todoroo.astrid.dao.UserDao;
import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.TagMetadata;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.helper.UUIDHelper; import com.todoroo.astrid.helper.UUIDHelper;
import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.tags.TagFilterExposer; import com.todoroo.astrid.tags.TagFilterExposer;
import com.todoroo.astrid.tags.TagMemberMetadata;
import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.tags.TagService;
import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.AstridPreferences;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import org.tasks.R; import org.tasks.R;
@ -72,8 +63,6 @@ public class TagSettingsActivity extends SherlockFragmentActivity {
@Autowired TagDataService tagDataService; @Autowired TagDataService tagDataService;
@Autowired UserDao userDao;
@Autowired TagMetadataDao tagMetadataDao; @Autowired TagMetadataDao tagMetadataDao;
private EditText tagName; private EditText tagName;
@ -119,22 +108,6 @@ public class TagSettingsActivity extends SherlockFragmentActivity {
} }
setUpSettingsPage(); setUpSettingsPage();
if(savedInstanceState != null && savedInstanceState.containsKey(MEMBERS_IN_PROGRESS)) {
final String members = savedInstanceState.getString(MEMBERS_IN_PROGRESS);
new Thread(new Runnable() {
@Override
public void run() {
AndroidUtilities.sleepDeep(500);
runOnUiThread(new Runnable() {
@Override
public void run() {
updateMembers(members, RemoteModel.NO_UUID);
}
});
}
}).start();
}
} }
private void setupForDialogOrFullscreen() { private void setupForDialogOrFullscreen() {
@ -178,7 +151,6 @@ public class TagSettingsActivity extends SherlockFragmentActivity {
String autopopulateMembers = getIntent().getStringExtra(TOKEN_AUTOPOPULATE_MEMBERS); String autopopulateMembers = getIntent().getStringExtra(TOKEN_AUTOPOPULATE_MEMBERS);
if (!TextUtils.isEmpty(autopopulateMembers)) { if (!TextUtils.isEmpty(autopopulateMembers)) {
updateMembers(autopopulateMembers, RemoteModel.NO_UUID);
getIntent().removeExtra(TOKEN_AUTOPOPULATE_MEMBERS); getIntent().removeExtra(TOKEN_AUTOPOPULATE_MEMBERS);
} }
@ -297,72 +269,6 @@ public class TagSettingsActivity extends SherlockFragmentActivity {
} }
String peopleJson = tagData.getValue(TagData.MEMBERS); String peopleJson = tagData.getValue(TagData.MEMBERS);
updateMembers(peopleJson, tagData.getUuid());
}
private void updateMembers(String peopleJson, String tagUuid) {
JSONArray people = null;
try {
people = new JSONArray(peopleJson);
} catch (JSONException e) {
if (!RemoteModel.isUuidEmpty(tagUuid)) {
people = new JSONArray();
TodorooCursor<User> members = userDao.query(Query.select(User.PROPERTIES)
.where(User.UUID.in(Query.select(TagMemberMetadata.USER_UUID)
.from(TagMetadata.TABLE).where(Criterion.and(TagMetadataCriteria.byTagAndWithKey(tagUuid, TagMemberMetadata.KEY), TagMetadata.DELETION_DATE.eq(0))))));
try {
User user = new User();
for (members.moveToFirst(); !members.isAfterLast(); members.moveToNext()) {
user.clear();
user.readFromCursor(members);
try {
JSONObject userJson = new JSONObject();
jsonFromUser(userJson, user);
people.put(userJson);
} catch (JSONException e2) {
//
}
}
} finally {
members.close();
}
TodorooCursor<TagMetadata> emailMembers = tagMetadataDao.query(Query.select(TagMemberMetadata.USER_UUID)
.where(Criterion.and(TagMetadataCriteria.byTagAndWithKey(tagUuid, TagMemberMetadata.KEY),
TagMetadata.DELETION_DATE.eq(0),
TagMemberMetadata.USER_UUID.like("%@%"))));
try {
TagMetadata m = new TagMetadata();
for (emailMembers.moveToFirst(); !emailMembers.isAfterLast(); emailMembers.moveToNext()) {
m.clear();
m.readFromCursor(emailMembers);
try {
JSONObject userJson = new JSONObject();
userJson.put("email", m.getValue(TagMemberMetadata.USER_UUID));
people.put(userJson);
} catch (JSONException e2) {
//
}
}
} finally {
emailMembers.close();
}
User u = userDao.fetch(tagData.getValue(TagData.USER_ID), User.PROPERTIES);
if (u != null) {
try {
JSONObject owner = new JSONObject();
jsonFromUser(owner, u);
owner.put("owner", true);
people.put(owner);
} catch (JSONException e2) {
//
}
}
}
}
} }
@Override @Override
@ -427,12 +333,4 @@ public class TagSettingsActivity extends SherlockFragmentActivity {
} }
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }
private static void jsonFromUser(JSONObject json, User model) throws JSONException {
json.put("id", model.getValue(User.UUID));
json.put("name", model.getDisplayName());
json.put("email", model.getValue(User.EMAIL));
json.put("picture", model.getPictureUrl(User.PICTURE, RemoteModel.PICTURE_THUMB));
json.put("first_name", model.getValue(User.FIRST_NAME));
}
} }

@ -5,7 +5,6 @@ import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskAttachment; import com.todoroo.astrid.data.TaskAttachment;
import com.todoroo.astrid.data.TaskListMetadata; import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.data.UserActivity; import com.todoroo.astrid.data.UserActivity;
import java.util.HashMap; import java.util.HashMap;
@ -22,7 +21,6 @@ public class NameMaps {
// Universal table identifiers // Universal table identifiers
public static final String TABLE_ID_TASKS = "tasks"; public static final String TABLE_ID_TASKS = "tasks";
public static final String TABLE_ID_TAGS = "tags"; public static final String TABLE_ID_TAGS = "tags";
public static final String TABLE_ID_USERS = "users";
public static final String TABLE_ID_USER_ACTIVITY = "user_activities"; public static final String TABLE_ID_USER_ACTIVITY = "user_activities";
public static final String TABLE_ID_ATTACHMENTS = "task_attachments"; public static final String TABLE_ID_ATTACHMENTS = "task_attachments";
public static final String TABLE_ID_TASK_LIST_METADATA = "task_list_metadata"; public static final String TABLE_ID_TASK_LIST_METADATA = "task_list_metadata";
@ -119,32 +117,6 @@ public class NameMaps {
public static final String MEMBER_ADDED_COLUMN = "member_added"; public static final String MEMBER_ADDED_COLUMN = "member_added";
public static final String MEMBER_REMOVED_COLUMN = "member_removed"; public static final String MEMBER_REMOVED_COLUMN = "member_removed";
// ----------
// Users
// ----------
private static final Map<Property<?>, String> USER_PROPERTIES_LOCAL_TO_SERVER;
private static final Map<String, Property<?>> USER_COLUMN_NAMES_TO_PROPERTIES;
private static final Map<String, String> USER_COLUMNS_LOCAL_TO_SERVER;
private static final Set<String> USER_PROPERTIES_EXCLUDED;
private static void putUserPropertyToServerName(Property<?> property, String serverName, boolean writeable) {
putPropertyToServerName(property, serverName, USER_PROPERTIES_LOCAL_TO_SERVER, USER_COLUMN_NAMES_TO_PROPERTIES,
USER_COLUMNS_LOCAL_TO_SERVER, USER_PROPERTIES_EXCLUDED, writeable);
}
static {
USER_PROPERTIES_LOCAL_TO_SERVER = new HashMap<Property<?>, String>();
USER_COLUMN_NAMES_TO_PROPERTIES = new HashMap<String, Property<?>>();
USER_COLUMNS_LOCAL_TO_SERVER = new HashMap<String, String>();
USER_PROPERTIES_EXCLUDED = new HashSet<String>();
putUserPropertyToServerName(User.UUID, "uuid", false);
putUserPropertyToServerName(User.PICTURE, "picture", false);
putUserPropertyToServerName(User.FIRST_NAME, "first_name", false);
putUserPropertyToServerName(User.LAST_NAME, "last_name", false);
putUserPropertyToServerName(User.STATUS, "connection", true);
}
// ---------- // ----------
// User Activity // User Activity
// ---------- // ----------
@ -253,10 +225,6 @@ public class NameMaps {
if (USER_ACTIVITY_COLUMN_NAMES_TO_PROPERTIES.containsKey(column)) { if (USER_ACTIVITY_COLUMN_NAMES_TO_PROPERTIES.containsKey(column)) {
return !USER_ACTIVITY_PROPERTIES_EXCLUDED.contains(column); return !USER_ACTIVITY_PROPERTIES_EXCLUDED.contains(column);
} }
} else if (TABLE_ID_USERS.equals(table)) {
if (USER_COLUMN_NAMES_TO_PROPERTIES.containsKey(column)) {
return !USER_PROPERTIES_EXCLUDED.contains(column);
}
} else if (TABLE_ID_ATTACHMENTS.equals(table)) { } else if (TABLE_ID_ATTACHMENTS.equals(table)) {
if (TASK_ATTACHMENT_COLUMN_NAMES_TO_PROPERTIES.containsKey(column)) { if (TASK_ATTACHMENT_COLUMN_NAMES_TO_PROPERTIES.containsKey(column)) {
return !TASK_ATTACHMENT_PROPERTIES_EXCLUDED.contains(column); return !TASK_ATTACHMENT_PROPERTIES_EXCLUDED.contains(column);

@ -76,7 +76,6 @@ import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskAttachment; import com.todoroo.astrid.data.TaskAttachment;
import com.todoroo.astrid.data.TaskListMetadata; import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.helper.SyncActionHelper; import com.todoroo.astrid.helper.SyncActionHelper;
import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader; import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader;
import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader.ContextMenuItem; import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader.ContextMenuItem;
@ -922,8 +921,6 @@ public class TaskListFragment extends SherlockListFragment implements OnSortSele
String joinedQuery = String joinedQuery =
Join.left(Metadata.TABLE.as(TAGS_METADATA_JOIN), Join.left(Metadata.TABLE.as(TAGS_METADATA_JOIN),
tagsJoinCriterion).toString() //$NON-NLS-1$ tagsJoinCriterion).toString() //$NON-NLS-1$
+ Join.left(User.TABLE.as(USER_IMAGE_JOIN),
Task.USER_ID.eq(Field.field(USER_IMAGE_JOIN + "." + User.UUID.name))).toString()
+ Join.left(TaskAttachment.TABLE.as(FILE_METADATA_JOIN), Task.UUID.eq(Field.field(FILE_METADATA_JOIN + "." + TaskAttachment.TASK_UUID.name))) + Join.left(TaskAttachment.TABLE.as(FILE_METADATA_JOIN), Task.UUID.eq(Field.field(FILE_METADATA_JOIN + "." + TaskAttachment.TASK_UUID.name)))
+ filter.getSqlQuery(); + filter.getSqlQuery();

@ -65,7 +65,6 @@ import com.todoroo.astrid.core.LinkActionExposer;
import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskAttachment; import com.todoroo.astrid.data.TaskAttachment;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.files.FilesAction; import com.todoroo.astrid.files.FilesAction;
import com.todoroo.astrid.files.FilesControlSet; import com.todoroo.astrid.files.FilesControlSet;
import com.todoroo.astrid.helper.TaskAdapterAddOnManager; import com.todoroo.astrid.helper.TaskAdapterAddOnManager;
@ -108,8 +107,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
private static final LongProperty FILE_ID_PROPERTY = TaskAttachment.ID.cloneAs(TaskListFragment.FILE_METADATA_JOIN, "fileId"); private static final LongProperty FILE_ID_PROPERTY = TaskAttachment.ID.cloneAs(TaskListFragment.FILE_METADATA_JOIN, "fileId");
private static final IntegerProperty HAS_NOTES_PROPERTY = new IntegerProperty(null, "length(" + Task.NOTES + ") > 0").as("hasNotes"); private static final IntegerProperty HAS_NOTES_PROPERTY = new IntegerProperty(null, "length(" + Task.NOTES + ") > 0").as("hasNotes");
private static final StringProperty PICTURE = User.PICTURE.cloneAs(TaskListFragment.USER_IMAGE_JOIN, null);
// --- other constants // --- other constants
/** Properties that need to be read from the action item */ /** Properties that need to be read from the action item */
@ -130,10 +127,8 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
Task.TIMER_START, Task.TIMER_START,
Task.RECURRENCE, Task.RECURRENCE,
Task.USER_ID, Task.USER_ID,
Task.USER,
Task.REMINDER_LAST, Task.REMINDER_LAST,
Task.SOCIAL_REMINDER, Task.SOCIAL_REMINDER,
PICTURE,
HAS_NOTES_PROPERTY, // Whether or not the task has notes HAS_NOTES_PROPERTY, // Whether or not the task has notes
TAGS, // Concatenated list of tags TAGS, // Concatenated list of tags
FILE_ID_PROPERTY // File id FILE_ID_PROPERTY // File id
@ -403,7 +398,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
if (!titleOnlyLayout) { if (!titleOnlyLayout) {
viewHolder.tagsString = cursor.get(TAGS); viewHolder.tagsString = cursor.get(TAGS);
viewHolder.imageUrl = RemoteModel.PictureHelper.getPictureUrlFromCursor(cursor, PICTURE, RemoteModel.PICTURE_THUMB);
viewHolder.hasFiles = cursor.get(FILE_ID_PROPERTY) > 0; viewHolder.hasFiles = cursor.get(FILE_ID_PROPERTY) > 0;
viewHolder.hasNotes = cursor.get(HAS_NOTES_PROPERTY) > 0; viewHolder.hasNotes = cursor.get(HAS_NOTES_PROPERTY) > 0;
} }

@ -31,12 +31,8 @@ import com.todoroo.andlib.data.Property.StringProperty;
import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.actfm.sync.messages.NameMaps; import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.data.UserActivity; import com.todoroo.astrid.data.UserActivity;
import org.tasks.R; import org.tasks.R;
@ -59,20 +55,8 @@ public class UpdateAdapter extends CursorAdapter {
public static final String USER_TABLE_ALIAS = "users_join"; //$NON-NLS-1$ public static final String USER_TABLE_ALIAS = "users_join"; //$NON-NLS-1$
public static final StringProperty USER_PICTURE = User.PICTURE.cloneAs(USER_TABLE_ALIAS, "userPicture"); //$NON-NLS-1$
private static final StringProperty USER_FIRST_NAME = User.FIRST_NAME.cloneAs(USER_TABLE_ALIAS, "userFirstName"); //$NON-NLS-1$
private static final StringProperty USER_LAST_NAME = User.LAST_NAME.cloneAs(USER_TABLE_ALIAS, "userLastName"); //$NON-NLS-1$
private static final StringProperty USER_NAME = User.NAME.cloneAs(USER_TABLE_ALIAS, "userName"); //$NON-NLS-1$
public static final StringProperty ACTIVITY_TYPE_PROPERTY = new StringProperty(null, "'" + NameMaps.TABLE_ID_USER_ACTIVITY + "' as type"); //$NON-NLS-1$//$NON-NLS-2$ public static final StringProperty ACTIVITY_TYPE_PROPERTY = new StringProperty(null, "'" + NameMaps.TABLE_ID_USER_ACTIVITY + "' as type"); //$NON-NLS-1$//$NON-NLS-2$
public static final Property<?>[] USER_PROPERTIES = {
USER_PICTURE,
USER_FIRST_NAME,
USER_LAST_NAME,
USER_NAME
};
public static final Property<?>[] USER_ACTIVITY_PROPERTIES = { public static final Property<?>[] USER_ACTIVITY_PROPERTIES = {
UserActivity.CREATED_AT, UserActivity.CREATED_AT,
UserActivity.UUID, UserActivity.UUID,
@ -92,8 +76,6 @@ public class UpdateAdapter extends CursorAdapter {
public static final String FROM_TASK_VIEW = "from_task"; //$NON-NLS-1$ public static final String FROM_TASK_VIEW = "from_task"; //$NON-NLS-1$
public static final String FROM_RECENT_ACTIVITY_VIEW = "from_recent_activity"; //$NON-NLS-1$ public static final String FROM_RECENT_ACTIVITY_VIEW = "from_recent_activity"; //$NON-NLS-1$
private final User self;
private final int color; private final int color;
/** /**
@ -120,7 +102,6 @@ public class UpdateAdapter extends CursorAdapter {
this.resource = resource; this.resource = resource;
this.fragment = fragment; this.fragment = fragment;
this.self = getSelfUser();
TypedValue tv = new TypedValue(); TypedValue tv = new TypedValue();
fragment.getActivity().getTheme().resolveAttribute(R.attr.asTextColor, tv, false); fragment.getActivity().getTheme().resolveAttribute(R.attr.asTextColor, tv, false);
@ -129,23 +110,6 @@ public class UpdateAdapter extends CursorAdapter {
fragment.getActivity().getTheme().resolveAttribute(R.attr.asDueDateColor, tv, false); fragment.getActivity().getTheme().resolveAttribute(R.attr.asDueDateColor, tv, false);
} }
public static User getSelfUser() {
User self = new User();
readPreferenceToUser(self, USER_FIRST_NAME, ActFmPreferenceService.PREF_FIRST_NAME);
readPreferenceToUser(self, USER_LAST_NAME, ActFmPreferenceService.PREF_LAST_NAME);
readPreferenceToUser(self, USER_NAME, ActFmPreferenceService.PREF_NAME);
readPreferenceToUser(self, USER_PICTURE, ActFmPreferenceService.PREF_PICTURE);
return self;
}
private static void readPreferenceToUser(User u, StringProperty prop, String prefKey) {
String val = Preferences.getStringValue(prefKey);
if (val == null) {
val = ""; //$NON-NLS-1$
}
u.setValue(prop, val);
}
public static String getLinkColor(Fragment f) { public static String getLinkColor(Fragment f) {
TypedValue colorType = new TypedValue(); TypedValue colorType = new TypedValue();
f.getActivity().getTheme().resolveAttribute(R.attr.asDetailsColor, colorType, false); f.getActivity().getTheme().resolveAttribute(R.attr.asDetailsColor, colorType, false);
@ -158,7 +122,6 @@ public class UpdateAdapter extends CursorAdapter {
private class ModelHolder { private class ModelHolder {
public UserActivity activity = new UserActivity(); public UserActivity activity = new UserActivity();
public User user = new User();
} }
/** Creates a new view for use in the list view */ /** Creates a new view for use in the list view */
@ -185,13 +148,7 @@ public class UpdateAdapter extends CursorAdapter {
UserActivity update = mh.activity; UserActivity update = mh.activity;
update.clear(); update.clear();
User user = mh.user;
user.clear();
boolean isSelf;
readUserActivityProperties(cursor, update); readUserActivityProperties(cursor, update);
isSelf = Task.USER_ID_SELF.equals(update.getValue(UserActivity.USER_UUID));
readUserProperties(cursor, user, self, isSelf);
setFieldContentsAndVisibility(view, update, type); setFieldContentsAndVisibility(view, update, type);
} }
@ -207,18 +164,6 @@ public class UpdateAdapter extends CursorAdapter {
activity.setValue(UserActivity.USER_UUID, unionCursor.getString(7)); activity.setValue(UserActivity.USER_UUID, unionCursor.getString(7));
} }
public static void readUserProperties(TodorooCursor<UserActivity> joinCursor, User user, User self, boolean isSelf) {
if (isSelf) {
user.mergeWith(self.getSetValues());
} else {
user.setValue(USER_FIRST_NAME, joinCursor.get(USER_FIRST_NAME));
user.setValue(USER_LAST_NAME, joinCursor.get(USER_LAST_NAME));
user.setValue(USER_NAME, joinCursor.get(USER_NAME));
user.setValue(USER_PICTURE, joinCursor.get(USER_PICTURE));
}
}
/** Helper method to set the contents and visibility of each field */ /** Helper method to set the contents and visibility of each field */
public synchronized void setFieldContentsAndVisibility(View view, UserActivity activity, String type) { public synchronized void setFieldContentsAndVisibility(View view, UserActivity activity, String type) {
// picture // picture

@ -13,7 +13,6 @@ import com.todoroo.astrid.dao.StoreObjectDao;
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.TaskListMetadataDao; import com.todoroo.astrid.dao.TaskListMetadataDao;
import com.todoroo.astrid.dao.UserDao;
import com.todoroo.astrid.gtasks.GtasksPreferenceService; import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.MetadataService;
@ -52,9 +51,6 @@ public final class PluginServices {
@Autowired @Autowired
StoreObjectDao storeObjectDao; StoreObjectDao storeObjectDao;
@Autowired
UserDao userDao;
@Autowired @Autowired
TaskListMetadataDao taskListMetadataDao; TaskListMetadataDao taskListMetadataDao;
@ -117,10 +113,6 @@ public final class PluginServices {
return getInstance().storeObjectDao; return getInstance().storeObjectDao;
} }
public static UserDao getUserDao() {
return getInstance().userDao;
}
public static TaskListMetadataDao getTaskListMetadataDao() { public static TaskListMetadataDao getTaskListMetadataDao() {
return getInstance().taskListMetadataDao; return getInstance().taskListMetadataDao;
} }

@ -26,7 +26,6 @@ import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.data.TaskListMetadataOutstanding; import com.todoroo.astrid.data.TaskListMetadataOutstanding;
import com.todoroo.astrid.data.TaskOutstanding; import com.todoroo.astrid.data.TaskOutstanding;
import com.todoroo.astrid.data.Update; import com.todoroo.astrid.data.Update;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.data.UserActivity; import com.todoroo.astrid.data.UserActivity;
import com.todoroo.astrid.data.UserActivityOutstanding; import com.todoroo.astrid.data.UserActivityOutstanding;
import com.todoroo.astrid.provider.Astrid2TaskProvider; import com.todoroo.astrid.provider.Astrid2TaskProvider;
@ -64,7 +63,6 @@ public class Database extends AbstractDatabase {
StoreObject.TABLE, StoreObject.TABLE,
TagData.TABLE, TagData.TABLE,
Update.TABLE, Update.TABLE,
User.TABLE,
UserActivity.TABLE, UserActivity.TABLE,
TagMetadata.TABLE, TagMetadata.TABLE,
TaskAttachment.TABLE, TaskAttachment.TABLE,
@ -194,9 +192,6 @@ public class Database extends AbstractDatabase {
database.execSQL("ALTER TABLE " + Task.TABLE.name + " ADD " + database.execSQL("ALTER TABLE " + Task.TABLE.name + " ADD " +
property.accept(visitor, null) + " DEFAULT 0"); property.accept(visitor, null) + " DEFAULT 0");
} }
database.execSQL("ALTER TABLE " + Task.TABLE.name + " ADD " +
Task.USER.accept(visitor, null));
} catch (SQLiteException e) { } catch (SQLiteException e) {
Log.e("astrid", "db-upgrade-" + oldVersion + "-" + newVersion, e); Log.e("astrid", "db-upgrade-" + oldVersion + "-" + newVersion, e);
} }
@ -298,13 +293,7 @@ public class Database extends AbstractDatabase {
catch (SQLiteException e) { catch (SQLiteException e) {
Log.e("astrid", "db-upgrade-" + oldVersion + "-" + newVersion, e); Log.e("astrid", "db-upgrade-" + oldVersion + "-" + newVersion, e);
} }
case 22: try { case 22:
database.execSQL(createTableSql(visitor, User.TABLE.name, User.PROPERTIES));
onCreateTables();
} catch (SQLiteException e) {
Log.e("astrid", "db-upgrade-" + oldVersion + "-" + newVersion, e);
}
case 23: case 23:
case 24: try { case 24: try {
database.execSQL("ALTER TABLE " + Task.TABLE.name + " ADD " + database.execSQL("ALTER TABLE " + Task.TABLE.name + " ADD " +
@ -313,15 +302,7 @@ public class Database extends AbstractDatabase {
Log.e("astrid", "db-upgrade-" + oldVersion + "-" + newVersion, e); Log.e("astrid", "db-upgrade-" + oldVersion + "-" + newVersion, e);
} }
case 25: try { case 25:
database.execSQL("ALTER TABLE " + User.TABLE.name + " ADD " +
User.STATUS.accept(visitor, null));
database.execSQL("ALTER TABLE " + User.TABLE.name + " ADD " +
User.PENDING_STATUS.accept(visitor, null));
} catch (SQLiteException e) {
Log.e("astrid", "db-upgrade-" + oldVersion + "-" + newVersion, e);
}
case 26: try { case 26: try {
database.execSQL("ALTER TABLE " + TagData.TABLE.name + " ADD " + database.execSQL("ALTER TABLE " + TagData.TABLE.name + " ADD " +
TagData.TAG_ORDERING.accept(visitor, null)); TagData.TAG_ORDERING.accept(visitor, null));
@ -357,17 +338,12 @@ public class Database extends AbstractDatabase {
tryExecSQL(addColumnSql(TagData.TABLE, TagData.METADATA_PUSHED_AT, visitor, null)); tryExecSQL(addColumnSql(TagData.TABLE, TagData.METADATA_PUSHED_AT, visitor, null));
tryExecSQL(addColumnSql(TagData.TABLE, TagData.USER_ACTIVITIES_PUSHED_AT, visitor, null)); tryExecSQL(addColumnSql(TagData.TABLE, TagData.USER_ACTIVITIES_PUSHED_AT, visitor, null));
tryExecSQL(addColumnSql(Metadata.TABLE, Metadata.DELETION_DATE, visitor, "0")); tryExecSQL(addColumnSql(Metadata.TABLE, Metadata.DELETION_DATE, visitor, "0"));
tryExecSQL(addColumnSql(User.TABLE, User.PUSHED_AT, visitor, null));
tryExecSQL(addColumnSql(User.TABLE, User.FIRST_NAME, visitor, null));
tryExecSQL(addColumnSql(User.TABLE, User.LAST_NAME, visitor, null));
case 30: case 30:
case 31: case 31:
case 32: case 32:
tryExecSQL(addColumnSql(User.TABLE, User.TASKS_PUSHED_AT, visitor, null));
case 33: case 33:
tryExecSQL(addColumnSql(TagData.TABLE, TagData.LAST_AUTOSYNC, visitor, null)); tryExecSQL(addColumnSql(TagData.TABLE, TagData.LAST_AUTOSYNC, visitor, null));
tryExecSQL(addColumnSql(User.TABLE, User.LAST_AUTOSYNC, visitor, null));
case 34: case 34:
tryExecSQL(addColumnSql(TagData.TABLE, TagData.IS_FOLDER, visitor, null)); tryExecSQL(addColumnSql(TagData.TABLE, TagData.IS_FOLDER, visitor, null));

@ -1,26 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.dao;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.data.User;
public class UserDao extends RemoteModelDao<User> {
@Autowired Database database;
public UserDao() {
super(User.class);
DependencyInjectionService.getInstance().inject(this);
setDatabase(database);
}
@Override
protected boolean shouldRecordOutstandingEntry(String columnName, Object value) {
return NameMaps.shouldRecordOutstandingColumnForTable(NameMaps.TABLE_ID_USERS, columnName);
}
}

@ -9,16 +9,12 @@ import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.widget.TextView; import android.widget.TextView;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.activity.EditPreferences; import com.todoroo.astrid.activity.EditPreferences;
import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.dao.UserDao;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.service.ThemeService;
@ -28,21 +24,16 @@ import org.json.JSONObject;
import org.tasks.R; import org.tasks.R;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
public class CalendarAlarmListCreator extends Activity { public class CalendarAlarmListCreator extends Activity {
public static final String TOKEN_LIST_NAME = "listName"; //$NON-NLS-1$ public static final String TOKEN_LIST_NAME = "listName"; //$NON-NLS-1$
@Autowired
private UserDao userDao;
@Autowired @Autowired
private TagDataService tagDataService; private TagDataService tagDataService;
private ArrayList<String> names; private ArrayList<String> names;
private ArrayList<String> emails; private ArrayList<String> emails;
private HashMap<String, User> emailsToUsers;
private String tagName; private String tagName;
private TextView inviteAll; private TextView inviteAll;
@ -83,26 +74,11 @@ public class CalendarAlarmListCreator extends Activity {
emails = intent.getStringArrayListExtra(CalendarReminderActivity.TOKEN_EMAILS); emails = intent.getStringArrayListExtra(CalendarReminderActivity.TOKEN_EMAILS);
names = intent.getStringArrayListExtra(CalendarReminderActivity.TOKEN_NAMES); names = intent.getStringArrayListExtra(CalendarReminderActivity.TOKEN_NAMES);
initializeUserMap();
setupUi(); setupUi();
addListeners(); addListeners();
} }
private void initializeUserMap() {
emailsToUsers = new HashMap<String, User>();
TodorooCursor<User> users = userDao.query(Query.select(User.PROPERTIES).where(User.EMAIL.in(emails.toArray(new String[emails.size()]))));
try {
for (users.moveToFirst(); !users.isAfterLast(); users.moveToNext()) {
User u = new User(users);
emailsToUsers.put(u.getValue(User.EMAIL), u);
}
} finally {
users.close();
}
}
private void setupUi() { private void setupUi() {
TextView dialogView = (TextView) findViewById(R.id.reminder_message); TextView dialogView = (TextView) findViewById(R.id.reminder_message);
StringBuilder builder = new StringBuilder(getString(R.string.CRA_created_list_dialog, tagName)); StringBuilder builder = new StringBuilder(getString(R.string.CRA_created_list_dialog, tagName));
@ -204,14 +180,6 @@ public class CalendarAlarmListCreator extends Activity {
if (!TextUtils.isEmpty(name)) { if (!TextUtils.isEmpty(name)) {
return name; return name;
} }
String email = emails.get(index); return emails.get(index);
if (emailsToUsers.containsKey(email)) {
User u = emailsToUsers.get(email);
String userName = u.getDisplayName();
if (!TextUtils.isEmpty(userName)) {
return userName;
}
}
return email;
} }
} }

@ -51,7 +51,6 @@ import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.data.UserActivity; import com.todoroo.astrid.data.UserActivity;
import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.StartupService; import com.todoroo.astrid.service.StartupService;
@ -274,24 +273,17 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
notes.close(); notes.close();
} }
User self = UpdateAdapter.getSelfUser();
TodorooCursor<UserActivity> updates = taskService.getActivityForTask(task); TodorooCursor<UserActivity> updates = taskService.getActivityForTask(task);
try { try {
UserActivity update = new UserActivity(); UserActivity update = new UserActivity();
User user = new User();
for(updates.moveToFirst(); !updates.isAfterLast(); updates.moveToNext()) { for(updates.moveToFirst(); !updates.isAfterLast(); updates.moveToNext()) {
update.clear(); update.clear();
user.clear();
String type = updates.getString(UpdateAdapter.TYPE_PROPERTY_INDEX); String type = updates.getString(UpdateAdapter.TYPE_PROPERTY_INDEX);
NoteOrUpdate noa = null; NoteOrUpdate noa = null;
boolean isSelf;
if (NameMaps.TABLE_ID_USER_ACTIVITY.equals(type)) { if (NameMaps.TABLE_ID_USER_ACTIVITY.equals(type)) {
UpdateAdapter.readUserActivityProperties(updates, update); UpdateAdapter.readUserActivityProperties(updates, update);
isSelf = Task.USER_ID_SELF.equals(update.getValue(UserActivity.USER_UUID)); noa = NoteOrUpdate.fromUpdate(update);
UpdateAdapter.readUserProperties(updates, user, self, isSelf);
noa = NoteOrUpdate.fromUpdate(update, user);
} }
if(noa != null) { if(noa != null) {
items.add(noa); items.add(noa);
@ -461,7 +453,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
m.getValue(Metadata.CREATION_DATE), null); m.getValue(Metadata.CREATION_DATE), null);
} }
public static NoteOrUpdate fromUpdate(UserActivity u, User user) { public static NoteOrUpdate fromUpdate(UserActivity u) {
String userImage = ""; //$NON-NLS-1$ String userImage = ""; //$NON-NLS-1$
String pictureThumb = ""; //$NON-NLS-1$ String pictureThumb = ""; //$NON-NLS-1$
String pictureFull = ""; //$NON-NLS-1$ String pictureFull = ""; //$NON-NLS-1$
@ -481,9 +473,6 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
} }
title = UpdateAdapter.getUpdateComment(u); title = UpdateAdapter.getUpdateComment(u);
userImage = ""; //$NON-NLS-1$ userImage = ""; //$NON-NLS-1$
if (user.containsNonNullValue(UpdateAdapter.USER_PICTURE)) {
userImage = user.getPictureUrl(UpdateAdapter.USER_PICTURE, RemoteModel.PICTURE_THUMB);
}
createdAt = u.getValue(UserActivity.CREATED_AT); createdAt = u.getValue(UserActivity.CREATED_AT);
type = NameMaps.TABLE_ID_USER_ACTIVITY; type = NameMaps.TABLE_ID_USER_ACTIVITY;

@ -19,7 +19,6 @@ import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.TaskListMetadataDao; import com.todoroo.astrid.dao.TaskListMetadataDao;
import com.todoroo.astrid.dao.TaskOutstandingDao; import com.todoroo.astrid.dao.TaskOutstandingDao;
import com.todoroo.astrid.dao.UserActivityDao; import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.dao.UserDao;
import com.todoroo.astrid.gtasks.GtasksListService; import com.todoroo.astrid.gtasks.GtasksListService;
import com.todoroo.astrid.gtasks.GtasksMetadataService; import com.todoroo.astrid.gtasks.GtasksMetadataService;
import com.todoroo.astrid.gtasks.GtasksPreferenceService; import com.todoroo.astrid.gtasks.GtasksPreferenceService;
@ -64,7 +63,6 @@ public class AstridDependencyInjector extends AbstractDependencyInjector {
injectables.put("tagDataDao", TagDataDao.class); injectables.put("tagDataDao", TagDataDao.class);
injectables.put("storeObjectDao", StoreObjectDao.class); injectables.put("storeObjectDao", StoreObjectDao.class);
injectables.put("userActivityDao", UserActivityDao.class); injectables.put("userActivityDao", UserActivityDao.class);
injectables.put("userDao", UserDao.class);
injectables.put("taskOutstandingDao", TaskOutstandingDao.class); injectables.put("taskOutstandingDao", TaskOutstandingDao.class);
injectables.put("taskAttachmentDao", TaskAttachmentDao.class); injectables.put("taskAttachmentDao", TaskAttachmentDao.class);
injectables.put("taskListMetadataDao", TaskListMetadataDao.class); injectables.put("taskListMetadataDao", TaskListMetadataDao.class);

@ -257,7 +257,7 @@ public class StartupService {
// For some reason these properties are missing for some users. // For some reason these properties are missing for some users.
// Make them exist! // Make them exist!
try { try {
TodorooCursor<Task> tasks = taskService.query(Query.select(Task.UUID, Task.USER_ID, Task.USER).limit(1)); TodorooCursor<Task> tasks = taskService.query(Query.select(Task.UUID, Task.USER_ID).limit(1));
try { try {
System.err.println(tasks.getCount()); System.err.println(tasks.getCount());
} finally { } finally {
@ -266,7 +266,6 @@ public class StartupService {
} catch (SQLiteException e) { } catch (SQLiteException e) {
database.tryAddColumn(Task.TABLE, Task.UUID, "'0'"); //$NON-NLS-1$ database.tryAddColumn(Task.TABLE, Task.UUID, "'0'"); //$NON-NLS-1$
database.tryAddColumn(Task.TABLE, Task.USER_ID, "0"); //$NON-NLS-1$ database.tryAddColumn(Task.TABLE, Task.USER_ID, "0"); //$NON-NLS-1$
database.tryAddColumn(Task.TABLE, Task.USER, null);
} }
} }

@ -6,28 +6,21 @@
package com.todoroo.astrid.service; package com.todoroo.astrid.service;
import android.database.Cursor; import android.database.Cursor;
import android.text.TextUtils;
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;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Field;
import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.sql.Order; import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.adapter.UpdateAdapter; import com.todoroo.astrid.adapter.UpdateAdapter;
import com.todoroo.astrid.api.PermaSql;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.dao.UserActivityDao; import com.todoroo.astrid.dao.UserActivityDao;
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.data.User;
import com.todoroo.astrid.data.UserActivity; import com.todoroo.astrid.data.UserActivity;
import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.tags.TaskToTagMetadata;
@ -86,42 +79,7 @@ public class TagDataService {
} }
} }
/** private static Query queryForTagData(TagData tagData, Criterion extraCriterion, Property<?>[] activityProperties) {
* Fetch tag data
*/
public TodorooCursor<TagData> fetchFiltered(String queryTemplate, CharSequence constraint,
Property<?>... properties) {
Criterion whereConstraint = null;
if(constraint != null) {
whereConstraint = Functions.upper(TagData.NAME).like("%" +
constraint.toString().toUpperCase() + "%");
}
if(queryTemplate == null) {
if(whereConstraint == null) {
return tagDataDao.query(Query.select(properties));
} else {
return tagDataDao.query(Query.select(properties).where(whereConstraint));
}
}
String sql;
if(whereConstraint != null) {
if(!queryTemplate.toUpperCase().contains("WHERE")) {
sql = queryTemplate + " WHERE " + whereConstraint;
} else {
sql = queryTemplate.replace("WHERE ", "WHERE " + whereConstraint + " AND ");
}
} else {
sql = queryTemplate;
}
sql = PermaSql.replacePlaceholders(sql);
return tagDataDao.query(Query.select(properties).withQueryTemplate(sql));
}
private static Query queryForTagData(TagData tagData, Criterion extraCriterion, String userTableAlias, Property<?>[] activityProperties, Property<?>[] userProperties) {
Criterion criteria; Criterion criteria;
if (tagData == null) { if (tagData == null) {
criteria = UserActivity.DELETED_AT.eq(0); criteria = UserActivity.DELETED_AT.eq(0);
@ -137,50 +95,16 @@ public class TagDataService {
criteria = Criterion.and(criteria, extraCriterion); criteria = Criterion.and(criteria, extraCriterion);
} }
Query result = Query.select(AndroidUtilities.addToArray(Property.class, activityProperties, userProperties)).where(criteria); Query result = Query.select(AndroidUtilities.addToArray(Property.class, activityProperties)).where(criteria);
if (!TextUtils.isEmpty(userTableAlias)) {
result = result.join(Join.left(User.TABLE.as(userTableAlias), UserActivity.USER_UUID.eq(Field.field(userTableAlias + "." + User.UUID.name)))); //$NON-NLS-1$
}
return result; return result;
} }
public TodorooCursor<UserActivity> getUserActivityWithExtraCriteria(TagData tagData, Criterion criterion) { public Cursor getActivityForTagData(TagData tagData, Criterion extraCriterion) {
if (tagData == null) { Query activityQuery = queryForTagData(tagData, extraCriterion, UpdateAdapter.USER_ACTIVITY_PROPERTIES)
return userActivityDao.query(Query.select(UserActivity.PROPERTIES).where(
criterion).
orderBy(Order.desc(UserActivity.CREATED_AT)));
}
return userActivityDao.query(queryForTagData(tagData, criterion, null, UserActivity.PROPERTIES, null).orderBy(Order.desc(UserActivity.CREATED_AT)));
}
public Cursor getActivityForTagData(TagData tagData, Criterion extraCriterion, String userTableAlias, Property<?>... userProperties) {
Query activityQuery = queryForTagData(tagData, extraCriterion, userTableAlias, UpdateAdapter.USER_ACTIVITY_PROPERTIES, userProperties)
.from(UserActivity.TABLE); .from(UserActivity.TABLE);
Query resultQuery = activityQuery.orderBy(Order.desc("1")); //$NON-NLS-1$ Query resultQuery = activityQuery.orderBy(Order.desc("1")); //$NON-NLS-1$
return userActivityDao.query(resultQuery); return userActivityDao.query(resultQuery);
} }
/**
* Return update
*/
public UserActivity getLatestUpdate(TagData tagData) {
if(RemoteModel.NO_UUID.equals(tagData.getValue(TagData.UUID))) {
return null;
}
TodorooCursor<UserActivity> updates = userActivityDao.query(queryForTagData(tagData, null, null, UserActivity.PROPERTIES, null).orderBy(Order.desc(UserActivity.CREATED_AT)).limit(1));
try {
if(updates.getCount() == 0) {
return null;
}
updates.moveToFirst();
return new UserActivity(updates);
} finally {
updates.close();
}
}
} }

@ -6,16 +6,13 @@
package com.todoroo.astrid.service; package com.todoroo.astrid.service;
import android.content.ContentValues; import android.content.ContentValues;
import android.text.TextUtils;
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;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Field;
import com.todoroo.andlib.sql.Functions; import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.sql.Order; import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
@ -37,7 +34,6 @@ 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.data.TaskOutstanding; import com.todoroo.astrid.data.TaskOutstanding;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.data.UserActivity; import com.todoroo.astrid.data.UserActivity;
import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.gtasks.GtasksMetadata; import com.todoroo.astrid.gtasks.GtasksMetadata;
@ -201,26 +197,6 @@ public class TaskService {
return newTask; return newTask;
} }
public Task cloneReusableTask(Task task, String tagName, String tagUuid) {
Task newTask = fetchById(task.getId(), Task.PROPERTIES);
if (newTask == null) {
return new Task();
}
newTask.clearValue(Task.ID);
newTask.clearValue(Task.UUID);
newTask.clearValue(Task.USER);
newTask.clearValue(Task.USER_ID);
newTask.clearValue(Task.IS_READONLY);
newTask.clearValue(Task.IS_PUBLIC);
taskDao.save(newTask);
if (!RemoteModel.isUuidEmpty(tagUuid)) {
TagService.getInstance().createLink(newTask, tagName, tagUuid);
}
return newTask;
}
/** /**
* Delete the given task. Instead of deleting from the database, we set * Delete the given task. Instead of deleting from the database, we set
* the deleted flag. * the deleted flag.
@ -537,19 +513,16 @@ public class TaskService {
} }
public TodorooCursor<UserActivity> getActivityForTask(Task task) { public TodorooCursor<UserActivity> getActivityForTask(Task task) {
Query taskQuery = queryForTask(task, UpdateAdapter.USER_TABLE_ALIAS, UpdateAdapter.USER_ACTIVITY_PROPERTIES, UpdateAdapter.USER_PROPERTIES); Query taskQuery = queryForTask(task, UpdateAdapter.USER_TABLE_ALIAS, UpdateAdapter.USER_ACTIVITY_PROPERTIES);
Query resultQuery = taskQuery.orderBy(Order.desc("1")); //$NON-NLS-1$ Query resultQuery = taskQuery.orderBy(Order.desc("1")); //$NON-NLS-1$
return userActivityDao.query(resultQuery); return userActivityDao.query(resultQuery);
} }
private static Query queryForTask(Task task, String userTableAlias, Property<?>[] activityProperties, Property<?>[] userProperties) { private static Query queryForTask(Task task, String userTableAlias, Property<?>[] activityProperties) {
Query result = Query.select(AndroidUtilities.addToArray(Property.class, activityProperties, userProperties)) Query result = Query.select(AndroidUtilities.addToArray(Property.class, activityProperties))
.where(Criterion.and(UserActivity.ACTION.eq(UserActivity.ACTION_TASK_COMMENT), UserActivity.TARGET_ID.eq(task.getUuid()), UserActivity.DELETED_AT.eq(0))); .where(Criterion.and(UserActivity.ACTION.eq(UserActivity.ACTION_TASK_COMMENT), UserActivity.TARGET_ID.eq(task.getUuid()), UserActivity.DELETED_AT.eq(0)));
if (!TextUtils.isEmpty(userTableAlias)) {
result = result.join(Join.left(User.TABLE.as(userTableAlias), UserActivity.USER_UUID.eq(Field.field(userTableAlias + "." + User.UUID.name)))); //$NON-NLS-1$
}
return result; return result;
} }

@ -15,7 +15,6 @@ import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.User;
import org.tasks.R; import org.tasks.R;
@ -45,8 +44,6 @@ public class AstridPreferences {
spec = new AstridDefaultPreferenceSpec(); spec = new AstridDefaultPreferenceSpec();
spec.setIfUnset(); spec.setIfUnset();
setShowFriendsView();
} }
public static void resetToDefaults() { public static void resetToDefaults() {
@ -56,17 +53,6 @@ public class AstridPreferences {
spec.resetDefaults(); spec.resetDefaults();
} }
private static void setShowFriendsView() {
// Show friends view if necessary
boolean showFriends = false;
TodorooCursor<User> users = PluginServices.getUserDao().query(Query.select(User.ID).limit(1));
try {
showFriends = users.getCount() > 0;
} finally {
users.close();
}
}
/* ====================================================================== /* ======================================================================
* ========================================================= public prefs * ========================================================= public prefs
* ====================================================================== */ * ====================================================================== */

Loading…
Cancel
Save