Package in.partake.model.dto

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

package in.partake.model.dto;

import in.partake.base.DateTime;
import in.partake.model.dto.auxiliary.MessageDelivery;
import in.partake.resource.Constants;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.UUID;

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

/**
* @author shinyak
*
*/
public class UserReceivedMessage extends PartakeModel<UserReceivedMessage> {
    private UUID id;
    private String senderId;
    private String receiverId;
    private String eventId;
    private String messageId;

    private boolean opened;
    private MessageDelivery delivery;
    private DateTime openedAt;
    private DateTime deliveredAt;
    private DateTime createdAt;
    private DateTime modifiedAt;

    public UserReceivedMessage(UserReceivedMessage message) {
        this(message.id, message.senderId, message.receiverId, message.eventId, message.messageId,
                message.opened, message.delivery, message.openedAt, message.deliveredAt,
                message.createdAt, message.modifiedAt);
    }

    public UserReceivedMessage(UUID id, String senderId, String receiverId, String eventId, String messageId,
            boolean opened, MessageDelivery delivery, DateTime openedAt, DateTime deliveredAt,
            DateTime createdAt, DateTime modifiedAt) {
        this.id = id;
        this.senderId = senderId;
        this.receiverId = receiverId;
        this.eventId = eventId;
        this.messageId = messageId;
        this.opened = opened;
        this.delivery = delivery;
        this.openedAt = openedAt;
        this.deliveredAt = deliveredAt;
        this.createdAt = createdAt;
        this.modifiedAt = modifiedAt;
    }

    public UserReceivedMessage(ObjectNode obj) {
        this.id = UUID.fromString(obj.get("id").asText());
        this.senderId = obj.get("senderId").asText();
        this.receiverId = obj.get("receiverId").asText();
        this.eventId = obj.get("eventId").asText();
        this.messageId = obj.get("messageId").asText();
        this.opened = obj.get("opened").asBoolean();
        this.delivery = MessageDelivery.safeValueOf(obj.get("delivery").asText());

        if (obj.has("openedAt"))
            this.openedAt = new DateTime(obj.get("openedAt").asLong());
        if (obj.has("deliveredAt"))
            this.deliveredAt = new DateTime(obj.get("deliveredAt").asLong());

        this.createdAt = new DateTime(obj.get("createdAt").asLong());
        if (obj.has("modifiedAt"))
            this.modifiedAt = new DateTime(obj.get("modifiedAt").asLong());
    }

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

    @Override
    public ObjectNode toJSON() {
        ObjectNode obj = new ObjectNode(JsonNodeFactory.instance);
        obj.put("id", id.toString());
        obj.put("senderId", senderId);
        obj.put("receiverId", receiverId);
        if (eventId != null)
            obj.put("eventId", eventId);
        obj.put("messageId", messageId);
        obj.put("opened", opened);
        obj.put("delivery", delivery.toString());

        if (openedAt != null)
            obj.put("openedAt", openedAt.getTime());
        if (deliveredAt != null)
            obj.put("deliveredAt", deliveredAt.getTime());

        obj.put("createdAt", createdAt.getTime());
        if (modifiedAt != null)
            obj.put("modifiedAt", modifiedAt.getTime());
        return obj;
    }

    public ObjectNode toSafeJSON() {
        DateFormat format = new SimpleDateFormat(Constants.READABLE_DATE_FORMAT, Locale.getDefault());

        ObjectNode obj = toJSON();
        if (this.deliveredAt != null) {
            obj.put("deliveredAtText", format.format(deliveredAt.toDate()));
            obj.put("deliveredAtTime", format.format(deliveredAt.getTime()));
        }

        return obj;
    }

    // ----------------------------------------------------------------------
    // equals method

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

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

        if (!(ObjectUtils.equals(lhs.id,          rhs.id)))          { return false; }
        if (!(ObjectUtils.equals(lhs.senderId,    rhs.senderId)))    { return false; }
        if (!(ObjectUtils.equals(lhs.receiverId,  rhs.receiverId)))  { return false; }
        if (!(ObjectUtils.equals(lhs.eventId,     rhs.eventId)))     { return false; }
        if (!(ObjectUtils.equals(lhs.messageId,   rhs.messageId)))   { return false; }
        if (!(ObjectUtils.equals(lhs.delivery,    rhs.delivery)))    { return false; }
        if (!(ObjectUtils.equals(lhs.opened,      rhs.opened)))      { return false; }
        if (!(ObjectUtils.equals(lhs.openedAt,    rhs.openedAt)))    { return false; }
        if (!(ObjectUtils.equals(lhs.deliveredAt, rhs.deliveredAt))) { return false; }
        if (!(ObjectUtils.equals(lhs.createdAt,   rhs.createdAt)))   { return false; }
        if (!(ObjectUtils.equals(lhs.modifiedAt,  rhs.modifiedAt)))  { return false; }

        return true;
    }

    @Override
    public int hashCode() {
        int code = 0;

        code = code * 37 + ObjectUtils.hashCode(id);
        code = code * 37 + ObjectUtils.hashCode(senderId);
        code = code * 37 + ObjectUtils.hashCode(receiverId);
        code = code * 37 + ObjectUtils.hashCode(eventId);
        code = code * 37 + ObjectUtils.hashCode(messageId);
        code = code * 37 + ObjectUtils.hashCode(delivery);
        code = code * 37 + ObjectUtils.hashCode(opened);
        code = code * 37 + ObjectUtils.hashCode(openedAt);
        code = code * 37 + ObjectUtils.hashCode(deliveredAt);
        code = code * 37 + ObjectUtils.hashCode(createdAt);
        code = code * 37 + ObjectUtils.hashCode(modifiedAt);

        return code;
    }

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

    public UUID getId() {
        return id;
    }

    public String getSenderId() {
        return senderId;
    }

    public String getReceiverId() {
        return receiverId;
    }

    public String getEventId() {
        return eventId;
    }

    public String getMessageId() {
        return messageId;
    }

    public boolean isOpened() {
        return opened;
    }

    public MessageDelivery getDelivery() {
        return delivery;
    }

    public DateTime getCreatedAt() {
        return createdAt;
    }

    public DateTime getModifiedAt() {
        return modifiedAt;
    }

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

    public void setSenderId(String senderId) {
        checkFrozen();
        this.senderId = senderId;
    }

    public void setReceiverId(String receiverId) {
        checkFrozen();
        this.receiverId = receiverId;
    }

    public void setEventId(String eventId) {
        checkFrozen();
        this.eventId = eventId;
    }

    public void setMessageId(String messageId) {
        checkFrozen();
        this.messageId = messageId;
    }

    public void setOpened(boolean opened) {
        checkFrozen();
        this.opened = opened;
    }

    public void setDelivery(MessageDelivery delivery) {
        checkFrozen();
        this.delivery = delivery;
    }

    public void setOpenedAt(DateTime openedAt) {
        checkFrozen();
        this.openedAt = openedAt;
    }

    public void setDeliveredAt(DateTime deliveredAt) {
        checkFrozen();
        this.deliveredAt = deliveredAt;
    }

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

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

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

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.