package edu.harvard.iq.dataverse;
import java.io.Serializable;
import java.util.List;
import javax.persistence.*;
import org.hibernate.validator.constraints.NotBlank;
/**
*
* @author skraffmiller
*/
@Entity
@Table(indexes = {
@Index(columnList = "guestbook_id")
})
public class CustomQuestion implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@ManyToOne
@JoinColumn(nullable=false)
private Guestbook guestbook;
@OneToMany(mappedBy="customQuestion",cascade={CascadeType.REMOVE, CascadeType.MERGE, CascadeType.PERSIST},orphanRemoval=true)
private List<CustomQuestionResponse> customQuestionResponses;
@OneToMany(mappedBy="customQuestion",cascade={CascadeType.REMOVE, CascadeType.MERGE, CascadeType.PERSIST},orphanRemoval=true)
@OrderBy("displayOrder")
private List<CustomQuestionValue> customQuestionValues;
@Column( nullable = false )
private String questionType;
@NotBlank(message = "Please enter question text.")
@Column( nullable = false )
private String questionString;
private boolean required;
private boolean hidden; //when a question is marked for removal, but it has data it is set to hidden
private int displayOrder;
public int getDisplayOrder() {
return this.displayOrder;
}
public void setDisplayOrder(int displayOrder) {
this.displayOrder = displayOrder;
}
public boolean isHidden() {
return hidden;
}
public void setHidden(boolean hidden) {
this.hidden = hidden;
}
public boolean isRequired() {
return required;
}
public void setRequired(boolean required) {
this.required = required;
}
public Guestbook getGuestbook() {
return guestbook;
}
public void setGuestbook(Guestbook guestbook) {
this.guestbook = guestbook;
}
public String getQuestionString() {
return questionString;
}
public void setQuestionString(String questionString) {
this.questionString = questionString;
}
public List<CustomQuestionValue> getCustomQuestionValues() {
return customQuestionValues;
}
public String getCustomQuestionValueString(){
String retString = "";
if (customQuestionValues != null && !this.customQuestionValues.isEmpty()){
for (CustomQuestionValue customQuestionValue : this.customQuestionValues){
if (!retString.isEmpty()){
retString += ", ";
} else {
retString += "Answers: ";
}
retString += customQuestionValue.getValueString();
}
}
return retString;
}
public void setCustomQuestionValues(List<CustomQuestionValue> customQuestionValues) {
this.customQuestionValues = customQuestionValues;
}
public String getQuestionType() {
return questionType;
}
public void setQuestionType(String questionType) {
this.questionType = questionType;
}
public List<CustomQuestionResponse> getCustomQuestionResponses() {
return customQuestionResponses;
}
public void setCustomQuestionResponses(List<CustomQuestionResponse> customQuestionResponses) {
this.customQuestionResponses = customQuestionResponses;
}
public void removeCustomQuestionValue(int index){
customQuestionValues.remove(index);
}
public void addCustomQuestionValue(int index, CustomQuestionValue cq){
customQuestionValues.add(index, cq);
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof CustomQuestion)) {
return false;
}
CustomQuestion other = (CustomQuestion) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "edu.harvard.iq.dvn.core.vdc.CustomQuestion[ id=" + id + " ]";
}
}