package in.partake.model.dto;
import in.partake.base.DateTime;
import java.util.UUID;
import org.apache.commons.lang.ObjectUtils;
import org.codehaus.jackson.node.JsonNodeFactory;
import org.codehaus.jackson.node.ObjectNode;
public class Message extends PartakeModel<Message> {
private UUID id;
private String subject;
private String body;
private DateTime createdAt;
private DateTime modifiedAt;
public Message(UUID id, String subject, String body, DateTime createdAt, DateTime modifiedAt) {
this.id = id;
this.subject = subject;
this.body = body;
this.createdAt = createdAt;
this.modifiedAt = modifiedAt;
}
public Message(Message message) {
this(message.id, message.subject, message.body, message.createdAt, message.modifiedAt);
}
public Message(ObjectNode obj) {
this.id = UUID.fromString(obj.get("id").asText());
this.subject = obj.get("subject").asText();
this.body = obj.get("body").asText();
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("subject", subject);
obj.put("body", body);
if (createdAt != null)
obj.put("createdAt", createdAt.getTime());
if (modifiedAt != null)
obj.put("modifiedAt", modifiedAt.getTime());
return obj;
}
public ObjectNode toSafeJSON() {
// Safe to use JSON for now.
return toJSON();
}
// ----------------------------------------------------------------------
// equals method
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Message)) { return false; }
Message lhs = this;
Message rhs = (Message) obj;
if (!(ObjectUtils.equals(lhs.id, rhs.id))) { return false; }
if (!(ObjectUtils.equals(lhs.subject, rhs.subject))) { return false; }
if (!(ObjectUtils.equals(lhs.body, rhs.body))) { 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(subject);
code = code * 37 + ObjectUtils.hashCode(body);
code = code * 37 + ObjectUtils.hashCode(createdAt);
code = code * 37 + ObjectUtils.hashCode(modifiedAt);
return code;
}
// ----------------------------------------------------------------------
// accessors
public UUID getId() {
return id;
}
public String getSubject() {
return subject;
}
public String getBody() {
return body;
}
public DateTime getCreatedAt() {
return createdAt;
}
public DateTime getModifiedAt() {
return modifiedAt;
}
public void setId(UUID id) {
checkFrozen();
this.id = id;
}
public void setTitle(String title) {
checkFrozen();
this.subject = title;
}
public void setBody(String body) {
checkFrozen();
this.body = body;
}
public void setCreatedAt(DateTime createdAt) {
checkFrozen();
this.createdAt = createdAt;
}
public void setModifiedAt(DateTime modifiedAt) {
checkFrozen();
this.modifiedAt = modifiedAt;
}
}