Package in.partake.model.dto

Source Code of in.partake.model.dto.User

package in.partake.model.dto;

import in.partake.base.DateTime;

import org.apache.commons.lang.ObjectUtils;
import org.codehaus.jackson.node.JsonNodeFactory;
import org.codehaus.jackson.node.ObjectNode;

public class User extends PartakeModel<User> {
    private String id;
    private String screenName;
    private String profileImageURL;
    private DateTime createdAt;
    private DateTime modifiedAt;
    /**
     * true if system administrator banned this account
     */
    private boolean isBanned;

    public User(String id, String screenName, String profileImageURL, DateTime createdAt, DateTime modifiedAt, boolean isBanned) {
        this.id = id;
        this.screenName = screenName;
        this.profileImageURL = profileImageURL;
        this.createdAt = createdAt;
        this.modifiedAt = modifiedAt;
        this.isBanned = isBanned;
    }

    public User(User user) {
        this(user.id, user.screenName, user.profileImageURL, user.createdAt, user.modifiedAt, user.isBanned);
    }

    public User(ObjectNode obj) {
        this.id = obj.get("id").asText();
        this.screenName = obj.get("screenName").asText();
        this.profileImageURL = obj.get("profileImageURL").asText();
        this.createdAt = new DateTime(obj.get("createdAt").asLong());
        if (obj.has("modifiedAt"))
            this.modifiedAt = new DateTime(obj.get("modifiedAt").asLong());
        if (obj.has("isBanned")) {
            this.isBanned = obj.get("isBanned").asBoolean();
        }
    }

    @Override
    public Object getPrimaryKey() {
        return id;
    }

    /**
     * sensitive な情報を含まないような user を取得します。
     *
     * @return
     */
    public ObjectNode toSafeJSON() {
        ObjectNode obj = new ObjectNode(JsonNodeFactory.instance);
        obj.put("id", id);
        obj.put("screenName", screenName);
        obj.put("profileImageURL", profileImageURL);
        return obj;
    }

    public ObjectNode toJSON() {
        ObjectNode obj = new ObjectNode(JsonNodeFactory.instance);
        obj.put("id", id);
        obj.put("screenName", screenName);
        obj.put("profileImageURL", profileImageURL);
        obj.put("createdAt", createdAt.getTime());
        if (modifiedAt != null)
            obj.put("modifiedAt", modifiedAt.getTime());
        obj.put("isBanned", isBanned);
        return obj;
    }

    // ----------------------------------------------------------------------
    // equal methods

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof User)) { return false; }

        User lhs = this;
        User rhs = (User) obj;

        if (!ObjectUtils.equals(lhs.id, rhs.id)) { return false; }
        if (!ObjectUtils.equals(lhs.screenName, rhs.screenName)) { return false; }
        if (!ObjectUtils.equals(lhs.profileImageURL, rhs.profileImageURL)) { return false; }
        if (!ObjectUtils.equals(lhs.createdAt, rhs.createdAt)) { return false; }
        if (!ObjectUtils.equals(lhs.modifiedAt, rhs.modifiedAt)) { return false; }
        if (!ObjectUtils.equals(lhs.isBanned, rhs.isBanned)) { return false; }
        return true;
    }

    @Override
    public int hashCode() {
        return ObjectUtils.hashCode(id);
    }

    // ----------------------------------------------------------------------
    // accessors

    public String getId() {
        return id;
    }

    public String getScreenName() {
        return screenName;
    }

    public String getProfileImageURL() {
        return profileImageURL;
    }

    public DateTime getCreatedAt() {
        return createdAt;
    }

    public DateTime getModifiedAt() {
        return modifiedAt;
    }

    public boolean isBanned() {
        return isBanned;
    }

    public void setId(String id) {
        checkFrozen();
        this.id = id;
    }

    public void setScreenName(String screenName) {
        checkFrozen();
        this.screenName = screenName;
    }

    public void setProfileImageURL(String profileImageURL) {
        checkFrozen();
        this.profileImageURL = profileImageURL;
    }

    public void setCreatedAt(DateTime createdAt) {
        checkFrozen();
        this.createdAt = createdAt;
    }

    public void setModifiedAt(DateTime modifiedAt) {
        checkFrozen();
        this.modifiedAt = modifiedAt;
    }

    public void setBanned(boolean isBanned) {
        checkFrozen();
        this.isBanned = isBanned;
    }

}
TOP

Related Classes of in.partake.model.dto.User

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.