Package in.partake.model.dto

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

package in.partake.model.dto;

import in.partake.base.DateTime;
import in.partake.base.JSONable;
import in.partake.model.dto.auxiliary.NotificationType;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

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

/**
* @author shinyak
*
*/
// TODO: Should use MessageCode to convert EventNotification to Text.
public class EventTicketNotification extends PartakeModel<EventTicketNotification> implements JSONable {
    private String id;
    private UUID ticketId;
    private String eventId;
    private List<String> userIds;
    private NotificationType notificationType;

    private DateTime createdAt;

    public EventTicketNotification(EventTicketNotification message) {
        this(message.id, message.ticketId, message.eventId, message.userIds, message.notificationType, message.createdAt);
    }

    public EventTicketNotification(String id, UUID ticketId, String eventId, List<String> userIds, NotificationType notificationType,  DateTime createdAt) {
        this.id = id;
        this.ticketId = ticketId;
        this.eventId = eventId;
        if (userIds != null)
            this.userIds = new ArrayList<String>(userIds);
        this.notificationType = notificationType;
        this.createdAt = createdAt;
    }

    public EventTicketNotification(ObjectNode obj) {
        this.id = obj.get("id").asText();
        this.ticketId = UUID.fromString(obj.get("ticketId").asText());
        this.eventId = obj.get("eventId").asText();

        this.userIds = new ArrayList<String>();
        if (userIds != null) {
            JsonNode array = obj.get("userIds");
            for (int i = 0; i < array.size(); ++i)
                userIds.add(array.get(i).asText());
        }

        this.notificationType = NotificationType.safeValueOf(obj.get("notificationType").asText());
        this.createdAt = new DateTime(obj.get("createdAt").asLong());
    }

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

    @Override
    public ObjectNode toJSON() {
        ObjectNode obj = new ObjectNode(JsonNodeFactory.instance);
        obj.put("id", id);
        obj.put("ticketId", ticketId.toString());
        obj.put("eventId", eventId);

        ArrayNode array = obj.putArray("userIds");
        for (String userId : userIds)
            array.add(userId);

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

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

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

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

        if (!(ObjectUtils.equals(lhs.id,         rhs.id)))         { return false; }
        if (!(ObjectUtils.equals(lhs.ticketId,   rhs.ticketId)))   { return false; }
        if (!(ObjectUtils.equals(lhs.eventId,    rhs.eventId)))   { return false; }
        if (!(ObjectUtils.equals(lhs.userIds,    rhs.userIds)))    { return false; }
        if (!(ObjectUtils.equals(lhs.notificationType,   rhs.notificationType)))   { return false; }
        if (!(ObjectUtils.equals(lhs.createdAt,  rhs.createdAt)))  { return false; }
        return true;
    }

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

        code = code * 37 + ObjectUtils.hashCode(id);
        code = code * 37 + ObjectUtils.hashCode(ticketId);
        code = code * 37 + ObjectUtils.hashCode(eventId);
        code = code * 37 + ObjectUtils.hashCode(userIds);
        code = code * 37 + ObjectUtils.hashCode(notificationType);
        code = code * 37 + ObjectUtils.hashCode(createdAt);

        return code;
    }

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

    public String getId() {
        return id;
    }

    public UUID getTicketId() {
        return ticketId;
    }

    public String getEventId() {
        return eventId;
    }

    public List<String> getUserIds() {
        return this.userIds;
    }

    public NotificationType getNotificationType() {
        return notificationType;
    }

    public DateTime getCreatedAt() {
        return createdAt;
    }

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

    public void setTicketId(UUID ticketId) {
        checkFrozen();
        this.ticketId = ticketId;
    }

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

    public void setUserIds(List<String> userIds) {
        checkFrozen();
        if (userIds == null)
            this.userIds = null;
        else
            this.userIds = new ArrayList<String>(userIds);
    }

    public void setNotificationType(NotificationType notificationType) {
        checkFrozen();
        this.notificationType = notificationType;
    }

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

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

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.