package net.sf.gazpachoquest.dto.support; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.xml.bind.annotation.XmlTransient; import net.sf.gazpachoquest.dto.QuestionOptionDTO; import net.sf.gazpachoquest.dto.answers.AbstractAnswer; import net.sf.gazpachoquest.dto.answers.Answer; import net.sf.gazpachoquest.dto.embeddables.QuestionLanguageSettingsDTO; import net.sf.gazpachoquest.types.Language; import net.sf.gazpachoquest.types.QuestionType; /** * Copyright (c) 2014 antoniomariasanchez at gmail.com. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * antoniomaria - initial API and implementation * * @composed 1 has 0..* net.sf.gazpachoquest.dto.QuestionOptionDTO * @assoc 1 reply - net.sf.gazpachoquest.dto.answers.Answer */ @SuppressWarnings("serial") public abstract class AbstractQuestionDTO extends AbstractIdentifiableDTO implements IdentifiableLocalizable<QuestionLanguageSettingsDTO>{ protected String code; protected boolean required; private boolean otherAllowed; protected Language language; protected QuestionLanguageSettingsDTO languageSettings; protected final List<QuestionOptionDTO> questionOptions = new ArrayList<>(); protected QuestionType type; @XmlTransient protected Answer answer; private String relevance; protected AbstractQuestionDTO() { super(); } public String getRelevance() { return relevance; } public void setRelevance(String relevance) { this.relevance = relevance; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public void addQuestionOption(final QuestionOptionDTO questionOption) { questionOptions.add(questionOption); } @Override public Language getLanguage() { return language; } @Override public QuestionLanguageSettingsDTO getLanguageSettings() { if (languageSettings == null) { languageSettings = new QuestionLanguageSettingsDTO(); } return languageSettings; } public List<QuestionOptionDTO> getQuestionOptions() { return Collections.unmodifiableList(questionOptions); } public QuestionType getType() { return type; } public void setRequired(boolean required) { this.required = required; } public boolean isRequired() { return required; } public boolean isOtherAllowed() { return otherAllowed; } public void setOtherAllowed(boolean otherAllowed) { this.otherAllowed = otherAllowed; } @Override public void setLanguage(final Language language) { this.language = language; } @Override public void setLanguageSettings(final QuestionLanguageSettingsDTO languageSettings) { this.languageSettings = languageSettings; } public void setType(final QuestionType type) { this.type = type; } public Answer getAnswer() { return answer; } public void setAnswer(AbstractAnswer answer) { this.answer = answer; } }