package qa.qcri.aidr.dbmanager.dto;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import org.apache.log4j.Logger;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import qa.qcri.aidr.dbmanager.entities.task.TaskAnswer;
@XmlRootElement
@JsonIgnoreProperties(ignoreUnknown=true)
public class TaskAnswerDTO implements Serializable {
/**
*
*/
private static final long serialVersionUID = 5525860415454423643L;
private static final Logger logger = Logger.getLogger("db-manager-log");
@XmlElement
private Long taskID;
@XmlElement
private Long documentID;
@XmlElement
private Long userID;
@XmlElement
private String answer;
@XmlElement
private Date timestamp;
@XmlElement
private boolean fromTrustedUser;
public TaskAnswerDTO(){
// default
}
public TaskAnswerDTO(Long documentID, Long userID, String answer){
this.documentID = documentID;
this.userID = userID;
this.answer = answer;
}
public TaskAnswerDTO(TaskAnswer taskAnswer){
if (taskAnswer != null) {
if (taskAnswer.getId() != null) {
if (taskAnswer.getId().getTaskId() != null) {
this.setTaskID(taskAnswer.getId().getTaskId());
}
this.setDocumentID(taskAnswer.getId().getDocumentId());
this.setUserID(taskAnswer.getId().getUserId());
}
this.setAnswer(taskAnswer.getAnswer());
this.setTimestamp(taskAnswer.getTimestamp());
}
}
public TaskAnswer toEntity() {
TaskAnswer entity = new TaskAnswer(this.getDocumentID(), this.getUserID(), this.getAnswer(), this.isFromTrustedUser());
if (this.getTaskID() != null) {
entity.getId().setTaskId(this.getTaskID());
}
if (this.getTimestamp() != null) {
entity.setTimestamp(this.getTimestamp());
}
return entity;
}
public List<TaskAnswer> toEntity(List<TaskAnswerDTO> answers){
List<TaskAnswer> taskAnswers = new ArrayList<TaskAnswer>();
for (TaskAnswerDTO dto: answers) {
TaskAnswer t = new TaskAnswer(dto.getDocumentID(), dto.getUserID(), dto.getAnswer(), dto.isFromTrustedUser());
if (this.getTaskID() != null) {
t.getId().setTaskId(this.getTaskID());
}
if (this.getTimestamp() != null) {
t.setTimestamp(this.getTimestamp());
}
taskAnswers.add(t);
}
return taskAnswers;
}
public Long getDocumentID() {
return documentID;
}
public void setDocumentID(Long documentID) {
if(documentID == null) {
logger.error("documentID cannot be null");
throw new IllegalArgumentException("documentID cannot be null");
}
this.documentID = documentID;
}
public Long getUserID() {
return userID;
}
public void setUserID(Long userID) {
if(userID == null) {
logger.error("userID cannot be null");
throw new IllegalArgumentException("userID cannot be null");
}
this.userID = userID;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
public Date getTimestamp() {
return timestamp;
}
public void setTimestamp(Date timestamp) {
this.timestamp = timestamp;
}
public boolean isFromTrustedUser() {
return fromTrustedUser;
}
public void setFromTrustedUser(boolean fromTrustedUser) {
this.fromTrustedUser = fromTrustedUser;
}
public Long getTaskID() {
return taskID;
}
public void setTaskID(Long taskID) {
this.taskID = taskID;
}
}