package io.kaif.web.v1.dto;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.kaif.web.v1.V1Commons;
@ApiModel("Debate")
public class V1DebateDto {
@ApiModelProperty(required = true)
private final String articleId;
@ApiModelProperty(required = true)
private final String debateId;
@ApiModelProperty(required = true)
private final String zone;
@ApiModelProperty(value = "reply to debateId, null if reply to article", required = false)
private final String parentDebateId;
@ApiModelProperty(value = "depth level of debate tree, start from 1", required = true)
private final int level;
@ApiModelProperty(required = true)
private final String content;
@ApiModelProperty(value = "debater's username", required = true)
private final String debaterName;
@ApiModelProperty(value = "total up voted count", required = true)
private final long upVote;
@ApiModelProperty(value = "total down voted count", required = true)
private final long downVote;
@ApiModelProperty(required = true, dataType = V1Commons.API_DATA_TYPE_DATE_TIME,
value = "create time in ISO8601 format")
@JsonFormat(pattern = V1Commons.JSON_ISO_DATE_PATTERN)
private final Date createTime;
@ApiModelProperty(required = true, dataType = V1Commons.API_DATA_TYPE_DATE_TIME,
value = "content last update time, same as create time if not updated (ISO8601 format)")
@JsonFormat(pattern = V1Commons.JSON_ISO_DATE_PATTERN)
private final Date lastUpdateTime;
public V1DebateDto(String articleId,
String debateId,
String zone,
String parentDebateId,
int level,
String content,
String debaterName,
long upVote,
long downVote,
Date createTime,
Date lastUpdateTime) {
this.zone = zone;
this.articleId = articleId;
this.debateId = debateId;
this.parentDebateId = parentDebateId;
this.level = level;
this.content = content;
this.debaterName = debaterName;
this.upVote = upVote;
this.downVote = downVote;
this.createTime = createTime;
this.lastUpdateTime = lastUpdateTime;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
V1DebateDto that = (V1DebateDto) o;
if (level != that.level) {
return false;
}
if (upVote != that.upVote) {
return false;
}
if (downVote != that.downVote) {
return false;
}
if (articleId != null ? !articleId.equals(that.articleId) : that.articleId != null) {
return false;
}
if (debateId != null ? !debateId.equals(that.debateId) : that.debateId != null) {
return false;
}
if (zone != null ? !zone.equals(that.zone) : that.zone != null) {
return false;
}
if (parentDebateId != null
? !parentDebateId.equals(that.parentDebateId)
: that.parentDebateId != null) {
return false;
}
if (content != null ? !content.equals(that.content) : that.content != null) {
return false;
}
if (debaterName != null ? !debaterName.equals(that.debaterName) : that.debaterName != null) {
return false;
}
if (createTime != null ? !createTime.equals(that.createTime) : that.createTime != null) {
return false;
}
return !(lastUpdateTime != null
? !lastUpdateTime.equals(that.lastUpdateTime)
: that.lastUpdateTime != null);
}
@Override
public int hashCode() {
int result = articleId != null ? articleId.hashCode() : 0;
result = 31 * result + (debateId != null ? debateId.hashCode() : 0);
result = 31 * result + (zone != null ? zone.hashCode() : 0);
result = 31 * result + (parentDebateId != null ? parentDebateId.hashCode() : 0);
result = 31 * result + level;
result = 31 * result + (content != null ? content.hashCode() : 0);
result = 31 * result + (debaterName != null ? debaterName.hashCode() : 0);
result = 31 * result + (int) (upVote ^ (upVote >>> 32));
result = 31 * result + (int) (downVote ^ (downVote >>> 32));
result = 31 * result + (createTime != null ? createTime.hashCode() : 0);
result = 31 * result + (lastUpdateTime != null ? lastUpdateTime.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "V1DebateDto{" +
"articleId='" + articleId + '\'' +
", debateId='" + debateId + '\'' +
", zone='" + zone + '\'' +
", parentDebateId='" + parentDebateId + '\'' +
", level=" + level +
", content='" + content + '\'' +
", debaterName='" + debaterName + '\'' +
", upVote=" + upVote +
", downVote=" + downVote +
", createTime=" + createTime +
", lastUpdateTime=" + lastUpdateTime +
'}';
}
public String getArticleId() {
return articleId;
}
public String getDebateId() {
return debateId;
}
public String getZone() {
return zone;
}
public String getParentDebateId() {
return parentDebateId;
}
public int getLevel() {
return level;
}
public String getContent() {
return content;
}
public String getDebaterName() {
return debaterName;
}
public long getUpVote() {
return upVote;
}
public long getDownVote() {
return downVote;
}
public Date getCreateTime() {
return createTime;
}
public Date getLastUpdateTime() {
return lastUpdateTime;
}
}