mirror of https://github.com/tasks/tasks
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
221 lines
6.1 KiB
Java
221 lines
6.1 KiB
Java
/**
|
|
* 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>
|
|
*/
|
|
@SuppressWarnings("nls")
|
|
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;
|
|
}
|
|
|
|
}
|