/*
* Copyright (C) 2010-2017 Stichting Akvo (Akvo Foundation)
*
* This file is part of Akvo FLOW.
*
* Akvo FLOW is free software: you can redistribute it and modify it under the terms of
* the GNU Affero General Public License (AGPL) as published by the Free Software Foundation,
* either version 3 of the License or any later version.
*
* Akvo FLOW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Affero General Public License included below for more details.
*
* The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>.
*/
package org.waterforpeople.mapping.app.gwt.client.survey;
import com.gallatinsystems.framework.gwt.dto.client.BaseDto;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
public class QuestionDto extends BaseDto {
private static final long serialVersionUID = -4708385830894435407L;
public enum QuestionType {
FREE_TEXT, OPTION, NUMBER, GEO, PHOTO, VIDEO, SCAN, TRACK, STRENGTH, DATE, CASCADE, GEOSHAPE, SIGNATURE, CADDISFLY
}
private QuestionType type;
private String tip = null;
private String text;
private Map<String, TranslationDto> translationMap;
private Boolean dependentFlag = null;
private Boolean allowMultipleFlag = null;
private Boolean allowOtherFlag = null;
private Boolean collapseable;
private Boolean geoLocked = null;
private Boolean requireDoubleEntry = null;
private Boolean immutable;
private Long dependentQuestionId;
private String dependentQuestionAnswer;
private Long cascadeResourceId;
private String caddisflyResourceUuid;
private Long metricId;
private OptionContainerDto optionContainerDto = null;
private List<QuestionHelpDto> questionHelpList;
private Long questionGroupId;
private Long surveyId;
private String questionId;
private Integer order;
private Boolean mandatoryFlag = null;
private String path;
private Boolean allowDecimal;
private Boolean allowSign;
private Double minVal;
private Double maxVal;
private Boolean allowExternalSources;
private Boolean isName;
private Boolean localeNameFlag;
private Boolean localeLocationFlag;
/**
* Geoshape question options
*/
private Boolean allowPoints;
private Boolean allowLine;
private Boolean allowPolygon;
private String optionList = null;
private List<Long> questionOptions = null;
private QuestionDependencyDto questionDependency = null;
private Long sourceId = null;
private List<String> levelNames = null;
public Boolean getAllowDecimal() {
return allowDecimal;
}
public void setAllowDecimal(Boolean allowDecimal) {
this.allowDecimal = allowDecimal;
}
public Boolean getAllowSign() {
return allowSign;
}
public void setAllowSign(Boolean allowSign) {
this.allowSign = allowSign;
}
public Double getMinVal() {
return minVal;
}
public void setMinVal(Double minVal) {
this.minVal = minVal;
}
public Double getMaxVal() {
return maxVal;
}
public void setMaxVal(Double maxVal) {
this.maxVal = maxVal;
}
public String getOptionList() {
return optionList;
}
public void setOptionList(String optionList) {
this.optionList = optionList;
}
public Boolean getName() {
return isName;
}
public void setName(Boolean name) {
isName = name;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public Map<String, TranslationDto> getTranslationMap() {
return translationMap;
}
public void setTranslationMap(Map<String, TranslationDto> translationMap) {
this.translationMap = translationMap;
}
/**
* adds the translation to the translation map. If a translation already
* exists (based on language code), it will be replaced
*
* @param trans
*/
public void addTranslation(TranslationDto trans) {
if (translationMap == null) {
translationMap = new TreeMap<String, TranslationDto>();
}
translationMap.put(trans.getLangCode(), trans);
}
public Long getSurveyId() {
return surveyId;
}
public void setSurveyId(Long surveyId) {
this.surveyId = surveyId;
}
public Long getQuestionGroupId() {
return questionGroupId;
}
public void setQuestionGroupId(Long questionGroupId) {
this.questionGroupId = questionGroupId;
}
public void addQuestionHelp(QuestionHelpDto questionHelp) {
if (questionHelpList == null) {
questionHelpList = new ArrayList<QuestionHelpDto>();
}
questionHelpList.add(questionHelp);
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public QuestionType getType() {
return type;
}
public void setType(QuestionType type) {
this.type = type;
}
public List<QuestionHelpDto> getQuestionHelpList() {
return questionHelpList;
}
public void setQuestionHelpList(List<QuestionHelpDto> questionHelpList) {
this.questionHelpList = questionHelpList;
}
public void setOptionContainerDto(OptionContainerDto optionContainer) {
this.optionContainerDto = optionContainer;
}
public OptionContainerDto getOptionContainerDto() {
return optionContainerDto;
}
public void setTip(String tip) {
this.tip = tip;
}
public String getTip() {
return tip;
}
public void setMandatoryFlag(Boolean mandatoryFlag) {
this.mandatoryFlag = mandatoryFlag;
}
public Boolean getMandatoryFlag() {
return mandatoryFlag;
}
public void setQuestionDependency(QuestionDependencyDto questionDependency) {
this.questionDependency = questionDependency;
}
public QuestionDependencyDto getQuestionDependency() {
return questionDependency;
}
public String getDependentQuestionAnswer() {
return dependentQuestionAnswer;
}
public void setDependentQuestionAnswer(String dependentQuestionAnswer) {
this.dependentQuestionAnswer = dependentQuestionAnswer;
}
public Long getDependentQuestionId() {
return dependentQuestionId;
}
public void setDependentQuestionId(Long dependentQuestionId) {
this.dependentQuestionId = dependentQuestionId;
}
public Long getMetricId() {
return metricId;
}
public void setMetricId(Long metricId) {
this.metricId = metricId;
}
public Boolean getDependentFlag() {
return dependentFlag;
}
public void setDependentFlag(Boolean dependentFlag) {
this.dependentFlag = dependentFlag;
}
public void setAllowMultipleFlag(Boolean allowMultipleFlag) {
this.allowMultipleFlag = allowMultipleFlag;
}
public Boolean getAllowMultipleFlag() {
return allowMultipleFlag;
}
public void setAllowOtherFlag(Boolean allowOtherFlag) {
this.allowOtherFlag = allowOtherFlag;
}
public Boolean getAllowOtherFlag() {
return allowOtherFlag;
}
@Override
public boolean equals(Object other) {
if (other == null || !(other instanceof QuestionDto)) {
return false;
}
QuestionDto otherQ = (QuestionDto) other;
if (getKeyId() != null && otherQ.getKeyId().equals(getKeyId())) {
return true;
} else if (getKeyId() == null && otherQ.getKeyId() == null) {
if (getText() != null && getText().equals(otherQ.getText())) {
return true;
}
}
return false;
}
@Override
public int hashCode() {
if (getKeyId() != null) {
return getKeyId().hashCode();
} else if (getText() != null) {
return getText().hashCode();
} else {
return 0;
}
}
public void setCollapseable(Boolean collapseable) {
this.collapseable = collapseable;
}
public Boolean getCollapseable() {
return collapseable;
}
public void setImmutable(Boolean immutable) {
this.immutable = immutable;
}
public Boolean getImmutable() {
return immutable;
}
public List<Long> getQuestionOptions() {
return questionOptions;
}
public void setQuestionOptions(List<Long> questionOption_ids) {
this.questionOptions = questionOption_ids;
}
public Long getSourceId() {
return sourceId;
}
public void setSourceId(Long sourceId) {
this.sourceId = sourceId;
}
public Boolean getLocaleNameFlag() {
return localeNameFlag;
}
public Boolean getGeoLocked() {
return geoLocked;
}
public void setGeoLocked(Boolean geoLocked) {
this.geoLocked = geoLocked;
}
public void setLocaleNameFlag(Boolean localeNameFlag) {
this.localeNameFlag = localeNameFlag;
}
public Boolean getAllowExternalSources() {
return allowExternalSources;
}
public void setAllowExternalSources(Boolean allowExternalSources) {
this.allowExternalSources = allowExternalSources;
}
public Boolean getLocaleLocationFlag() {
return localeLocationFlag;
}
public void setLocaleLocationFlag(Boolean localeLocationFlag) {
this.localeLocationFlag = localeLocationFlag;
}
public Boolean getRequireDoubleEntry() {
return requireDoubleEntry;
}
public void setRequireDoubleEntry(Boolean requireDoubleEntry) {
this.requireDoubleEntry = requireDoubleEntry;
}
public String getQuestionId() {
return questionId;
}
public void setQuestionId(String questionId) {
// Missing questionId is represented as null
if (questionId != null && questionId.matches("\\s*")) {
this.questionId = null;
} else {
this.questionId = questionId;
}
}
public Long getCascadeResourceId() {
return cascadeResourceId;
}
public void setCascadeResourceId(Long cascadeResourceId) {
this.cascadeResourceId = cascadeResourceId;
}
public List<String> getLevelNames() {
return levelNames;
}
public void setLevelNames(List<String> levelNames) {
this.levelNames = levelNames;
}
public void setAllowPoints(Boolean allowPoints) {
this.allowPoints = allowPoints;
}
public Boolean getAllowPoints() {
return allowPoints;
}
public void setAllowLine(Boolean allowLine) {
this.allowLine = allowLine;
}
public Boolean getAllowLine() {
return allowLine;
}
public void setAllowPolygon(Boolean allowPolygon) {
this.allowPolygon = allowPolygon;
}
public Boolean getAllowPolygon() {
return allowPolygon;
}
public String getCaddisflyResourceUuid() {
return caddisflyResourceUuid;
}
public void setCaddisflyResourceUuid(String caddisflyResourceUuid) {
this.caddisflyResourceUuid = caddisflyResourceUuid;
}
@Override
public String toString() {
return text + "(" + type + ")";
}
}