/* * Copyright (C) 2010-2015 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 com.gallatinsystems.survey.dao; import java.util.List; import java.util.TreeMap; import com.gallatinsystems.framework.dao.BaseDAO; import com.gallatinsystems.survey.domain.QuestionOption; import com.gallatinsystems.survey.domain.Translation; /** * Dao for manipulating questionOptions * * @author Christopher Fagiani */ public class QuestionOptionDao extends BaseDAO<QuestionOption> { private TranslationDao translationDao; public QuestionOptionDao() { super(QuestionOption.class); translationDao = new TranslationDao(); } /** * lists all options for a given question id, including the translations (if any) * * @param questionId * @return */ public TreeMap<Integer, QuestionOption> listOptionByQuestion(Long questionId) { List<QuestionOption> oList = listByProperty("questionId", questionId, "Long", "order", "asc"); TreeMap<Integer, QuestionOption> map = new TreeMap<Integer, QuestionOption>(); if (oList != null) { int i = 1; for (QuestionOption o : oList) { o.setTranslationMap(translationDao.findTranslations( Translation.ParentType.QUESTION_OPTION, o.getKey() .getId())); i++; map.put(o.getOrder() != null ? o.getOrder() : i, o); } } return map; } /** * Lists all options for a given question id * * @param questionId * @return */ public List<QuestionOption> listByQuestionId(Long questionId) { return listByProperty("questionId", questionId, "Long", "order", "asc"); } /** * Deletes all options associated with a given question * * @param questionId */ public void deleteOptionsForQuestion(Long questionId) { List<QuestionOption> oList = listByProperty("questionId", questionId, "Long"); if (oList != null) { TranslationDao tDao = new TranslationDao(); for (QuestionOption opt : oList) { tDao.deleteTranslationsForParent(opt.getKey().getId(), Translation.ParentType.QUESTION_OPTION); } super.delete(oList); } } }