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 */
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 + "/" +
TABLE.name);
@ -162,10 +158,6 @@ public final class Task extends RemoteModel {
public static final StringProperty USER_ID = new StringProperty(
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 */
public static final StringProperty CREATOR_ID = new StringProperty(
TABLE, "creatorId", Property.PROP_FLAG_USER_ID);
@ -190,41 +182,11 @@ public final class Task extends RemoteModel {
/** List of all properties for this model */
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 = 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 */
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) {
if (userId == null) {
return false;
@ -256,9 +218,6 @@ public final class Task extends RemoteModel {
// --- social reminder types
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
@ -314,8 +273,6 @@ public final class Task extends RemoteModel {
defaultValues.put(UUID.name, NO_UUID);
defaultValues.put(USER_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(ATTACHMENTS_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
protected Cursor getCursor() {
return tagDataService.getActivityForTagData(tagData, null, UpdateAdapter.USER_TABLE_ALIAS, UpdateAdapter.USER_PROPERTIES);
return tagDataService.getActivityForTagData(tagData, null);
}
@Override

@ -23,31 +23,22 @@ import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.actionbarsherlock.view.Window;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
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.Preferences;
import com.todoroo.astrid.actfm.ActFmCameraModule.CameraResultCallback;
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.TagData;
import com.todoroo.astrid.data.TagMetadata;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.helper.UUIDHelper;
import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.tags.TagFilterExposer;
import com.todoroo.astrid.tags.TagMemberMetadata;
import com.todoroo.astrid.tags.TagService;
import com.todoroo.astrid.utility.AstridPreferences;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.tasks.R;
@ -72,8 +63,6 @@ public class TagSettingsActivity extends SherlockFragmentActivity {
@Autowired TagDataService tagDataService;
@Autowired UserDao userDao;
@Autowired TagMetadataDao tagMetadataDao;
private EditText tagName;
@ -119,22 +108,6 @@ public class TagSettingsActivity extends SherlockFragmentActivity {
}
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() {
@ -178,7 +151,6 @@ public class TagSettingsActivity extends SherlockFragmentActivity {
String autopopulateMembers = getIntent().getStringExtra(TOKEN_AUTOPOPULATE_MEMBERS);
if (!TextUtils.isEmpty(autopopulateMembers)) {
updateMembers(autopopulateMembers, RemoteModel.NO_UUID);
getIntent().removeExtra(TOKEN_AUTOPOPULATE_MEMBERS);
}
@ -297,72 +269,6 @@ public class TagSettingsActivity extends SherlockFragmentActivity {
}
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
@ -427,12 +333,4 @@ public class TagSettingsActivity extends SherlockFragmentActivity {
}
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.TaskAttachment;
import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.data.UserActivity;
import java.util.HashMap;
@ -22,7 +21,6 @@ public class NameMaps {
// Universal table identifiers
public static final String TABLE_ID_TASKS = "tasks";
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_ATTACHMENTS = "task_attachments";
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_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
// ----------
@ -253,10 +225,6 @@ public class NameMaps {
if (USER_ACTIVITY_COLUMN_NAMES_TO_PROPERTIES.containsKey(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)) {
if (TASK_ATTACHMENT_COLUMN_NAMES_TO_PROPERTIES.containsKey(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.TaskAttachment;
import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.helper.SyncActionHelper;
import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader;
import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader.ContextMenuItem;
@ -922,8 +921,6 @@ public class TaskListFragment extends SherlockListFragment implements OnSortSele
String joinedQuery =
Join.left(Metadata.TABLE.as(TAGS_METADATA_JOIN),
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)))
+ filter.getSqlQuery();

@ -65,7 +65,6 @@ import com.todoroo.astrid.core.LinkActionExposer;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskAttachment;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.files.FilesAction;
import com.todoroo.astrid.files.FilesControlSet;
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 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
/** 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.RECURRENCE,
Task.USER_ID,
Task.USER,
Task.REMINDER_LAST,
Task.SOCIAL_REMINDER,
PICTURE,
HAS_NOTES_PROPERTY, // Whether or not the task has notes
TAGS, // Concatenated list of tags
FILE_ID_PROPERTY // File id
@ -403,7 +398,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
if (!titleOnlyLayout) {
viewHolder.tagsString = cursor.get(TAGS);
viewHolder.imageUrl = RemoteModel.PictureHelper.getPictureUrlFromCursor(cursor, PICTURE, RemoteModel.PICTURE_THUMB);
viewHolder.hasFiles = cursor.get(FILE_ID_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.service.DependencyInjectionService;
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.data.RemoteModel;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.data.UserActivity;
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 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 Property<?>[] USER_PROPERTIES = {
USER_PICTURE,
USER_FIRST_NAME,
USER_LAST_NAME,
USER_NAME
};
public static final Property<?>[] USER_ACTIVITY_PROPERTIES = {
UserActivity.CREATED_AT,
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_RECENT_ACTIVITY_VIEW = "from_recent_activity"; //$NON-NLS-1$
private final User self;
private final int color;
/**
@ -120,7 +102,6 @@ public class UpdateAdapter extends CursorAdapter {
this.resource = resource;
this.fragment = fragment;
this.self = getSelfUser();
TypedValue tv = new TypedValue();
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);
}
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) {
TypedValue colorType = new TypedValue();
f.getActivity().getTheme().resolveAttribute(R.attr.asDetailsColor, colorType, false);
@ -158,7 +122,6 @@ public class UpdateAdapter extends CursorAdapter {
private class ModelHolder {
public UserActivity activity = new UserActivity();
public User user = new User();
}
/** Creates a new view for use in the list view */
@ -185,13 +148,7 @@ public class UpdateAdapter extends CursorAdapter {
UserActivity update = mh.activity;
update.clear();
User user = mh.user;
user.clear();
boolean isSelf;
readUserActivityProperties(cursor, update);
isSelf = Task.USER_ID_SELF.equals(update.getValue(UserActivity.USER_UUID));
readUserProperties(cursor, user, self, isSelf);
setFieldContentsAndVisibility(view, update, type);
}
@ -207,18 +164,6 @@ public class UpdateAdapter extends CursorAdapter {
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 */
public synchronized void setFieldContentsAndVisibility(View view, UserActivity activity, String type) {
// picture

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

@ -26,7 +26,6 @@ import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.data.TaskListMetadataOutstanding;
import com.todoroo.astrid.data.TaskOutstanding;
import com.todoroo.astrid.data.Update;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.data.UserActivity;
import com.todoroo.astrid.data.UserActivityOutstanding;
import com.todoroo.astrid.provider.Astrid2TaskProvider;
@ -64,7 +63,6 @@ public class Database extends AbstractDatabase {
StoreObject.TABLE,
TagData.TABLE,
Update.TABLE,
User.TABLE,
UserActivity.TABLE,
TagMetadata.TABLE,
TaskAttachment.TABLE,
@ -194,9 +192,6 @@ public class Database extends AbstractDatabase {
database.execSQL("ALTER TABLE " + Task.TABLE.name + " ADD " +
property.accept(visitor, null) + " DEFAULT 0");
}
database.execSQL("ALTER TABLE " + Task.TABLE.name + " ADD " +
Task.USER.accept(visitor, null));
} catch (SQLiteException e) {
Log.e("astrid", "db-upgrade-" + oldVersion + "-" + newVersion, e);
}
@ -298,13 +293,7 @@ public class Database extends AbstractDatabase {
catch (SQLiteException e) {
Log.e("astrid", "db-upgrade-" + oldVersion + "-" + newVersion, e);
}
case 22: try {
database.execSQL(createTableSql(visitor, User.TABLE.name, User.PROPERTIES));
onCreateTables();
} catch (SQLiteException e) {
Log.e("astrid", "db-upgrade-" + oldVersion + "-" + newVersion, e);
}
case 22:
case 23:
case 24: try {
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);
}
case 25: try {
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 25:
case 26: try {
database.execSQL("ALTER TABLE " + TagData.TABLE.name + " ADD " +
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.USER_ACTIVITIES_PUSHED_AT, visitor, null));
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 31:
case 32:
tryExecSQL(addColumnSql(User.TABLE, User.TASKS_PUSHED_AT, visitor, null));
case 33:
tryExecSQL(addColumnSql(TagData.TABLE, TagData.LAST_AUTOSYNC, visitor, null));
tryExecSQL(addColumnSql(User.TABLE, User.LAST_AUTOSYNC, visitor, null));
case 34:
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.widget.TextView;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.activity.EditPreferences;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.dao.UserDao;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.service.ThemeService;
@ -28,21 +24,16 @@ import org.json.JSONObject;
import org.tasks.R;
import java.util.ArrayList;
import java.util.HashMap;
public class CalendarAlarmListCreator extends Activity {
public static final String TOKEN_LIST_NAME = "listName"; //$NON-NLS-1$
@Autowired
private UserDao userDao;
@Autowired
private TagDataService tagDataService;
private ArrayList<String> names;
private ArrayList<String> emails;
private HashMap<String, User> emailsToUsers;
private String tagName;
private TextView inviteAll;
@ -83,26 +74,11 @@ public class CalendarAlarmListCreator extends Activity {
emails = intent.getStringArrayListExtra(CalendarReminderActivity.TOKEN_EMAILS);
names = intent.getStringArrayListExtra(CalendarReminderActivity.TOKEN_NAMES);
initializeUserMap();
setupUi();
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() {
TextView dialogView = (TextView) findViewById(R.id.reminder_message);
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)) {
return name;
}
String email = emails.get(index);
if (emailsToUsers.containsKey(email)) {
User u = emailsToUsers.get(email);
String userName = u.getDisplayName();
if (!TextUtils.isEmpty(userName)) {
return userName;
}
}
return email;
return emails.get(index);
}
}

@ -51,7 +51,6 @@ import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.data.Metadata;
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.service.MetadataService;
import com.todoroo.astrid.service.StartupService;
@ -274,24 +273,17 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
notes.close();
}
User self = UpdateAdapter.getSelfUser();
TodorooCursor<UserActivity> updates = taskService.getActivityForTask(task);
try {
UserActivity update = new UserActivity();
User user = new User();
for(updates.moveToFirst(); !updates.isAfterLast(); updates.moveToNext()) {
update.clear();
user.clear();
String type = updates.getString(UpdateAdapter.TYPE_PROPERTY_INDEX);
NoteOrUpdate noa = null;
boolean isSelf;
if (NameMaps.TABLE_ID_USER_ACTIVITY.equals(type)) {
UpdateAdapter.readUserActivityProperties(updates, update);
isSelf = Task.USER_ID_SELF.equals(update.getValue(UserActivity.USER_UUID));
UpdateAdapter.readUserProperties(updates, user, self, isSelf);
noa = NoteOrUpdate.fromUpdate(update, user);
noa = NoteOrUpdate.fromUpdate(update);
}
if(noa != null) {
items.add(noa);
@ -461,7 +453,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
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 pictureThumb = ""; //$NON-NLS-1$
String pictureFull = ""; //$NON-NLS-1$
@ -481,9 +473,6 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
}
title = UpdateAdapter.getUpdateComment(u);
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);
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.TaskOutstandingDao;
import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.dao.UserDao;
import com.todoroo.astrid.gtasks.GtasksListService;
import com.todoroo.astrid.gtasks.GtasksMetadataService;
import com.todoroo.astrid.gtasks.GtasksPreferenceService;
@ -64,7 +63,6 @@ public class AstridDependencyInjector extends AbstractDependencyInjector {
injectables.put("tagDataDao", TagDataDao.class);
injectables.put("storeObjectDao", StoreObjectDao.class);
injectables.put("userActivityDao", UserActivityDao.class);
injectables.put("userDao", UserDao.class);
injectables.put("taskOutstandingDao", TaskOutstandingDao.class);
injectables.put("taskAttachmentDao", TaskAttachmentDao.class);
injectables.put("taskListMetadataDao", TaskListMetadataDao.class);

@ -257,7 +257,7 @@ public class StartupService {
// For some reason these properties are missing for some users.
// Make them exist!
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 {
System.err.println(tasks.getCount());
} finally {
@ -266,7 +266,6 @@ public class StartupService {
} catch (SQLiteException e) {
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, null);
}
}

@ -6,28 +6,21 @@
package com.todoroo.astrid.service;
import android.database.Cursor;
import android.text.TextUtils;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
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.Query;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.adapter.UpdateAdapter;
import com.todoroo.astrid.api.PermaSql;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.data.UserActivity;
import com.todoroo.astrid.tags.TaskToTagMetadata;
@ -86,42 +79,7 @@ public class TagDataService {
}
}
/**
* 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) {
private static Query queryForTagData(TagData tagData, Criterion extraCriterion, Property<?>[] activityProperties) {
Criterion criteria;
if (tagData == null) {
criteria = UserActivity.DELETED_AT.eq(0);
@ -137,50 +95,16 @@ public class TagDataService {
criteria = Criterion.and(criteria, extraCriterion);
}
Query result = Query.select(AndroidUtilities.addToArray(Property.class, activityProperties, userProperties)).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$
}
Query result = Query.select(AndroidUtilities.addToArray(Property.class, activityProperties)).where(criteria);
return result;
}
public TodorooCursor<UserActivity> getUserActivityWithExtraCriteria(TagData tagData, Criterion criterion) {
if (tagData == null) {
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)
public Cursor getActivityForTagData(TagData tagData, Criterion extraCriterion) {
Query activityQuery = queryForTagData(tagData, extraCriterion, UpdateAdapter.USER_ACTIVITY_PROPERTIES)
.from(UserActivity.TABLE);
Query resultQuery = activityQuery.orderBy(Order.desc("1")); //$NON-NLS-1$
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;
import android.content.ContentValues;
import android.text.TextUtils;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
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.Query;
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.Task;
import com.todoroo.astrid.data.TaskOutstanding;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.data.UserActivity;
import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.gtasks.GtasksMetadata;
@ -201,26 +197,6 @@ public class TaskService {
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
* the deleted flag.
@ -537,19 +513,16 @@ public class TaskService {
}
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$
return userActivityDao.query(resultQuery);
}
private static Query queryForTask(Task task, String userTableAlias, Property<?>[] activityProperties, Property<?>[] userProperties) {
Query result = Query.select(AndroidUtilities.addToArray(Property.class, activityProperties, userProperties))
private static Query queryForTask(Task task, String userTableAlias, Property<?>[] activityProperties) {
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)));
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;
}

@ -15,7 +15,6 @@ import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.User;
import org.tasks.R;
@ -45,8 +44,6 @@ public class AstridPreferences {
spec = new AstridDefaultPreferenceSpec();
spec.setIfUnset();
setShowFriendsView();
}
public static void resetToDefaults() {
@ -56,17 +53,6 @@ public class AstridPreferences {
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
* ====================================================================== */

Loading…
Cancel
Save