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.
tasks/api/src/com/todoroo/astrid/data/User.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;
}
}