/*
* 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 com.gallatinsystems.survey.dao;
import java.util.List;
import java.util.logging.Logger;
import com.gallatinsystems.common.Constants;
import com.gallatinsystems.framework.dao.BaseDAO;
import com.gallatinsystems.survey.domain.Survey;
import com.gallatinsystems.survey.domain.SurveyGroup;
/**
* Dao for manipulating surveyGroups
*/
public class SurveyGroupDAO extends BaseDAO<SurveyGroup> {
@SuppressWarnings("unused")
private static final Logger log = Logger.getLogger(SurveyGroupDAO.class
.getName());
private SurveyDAO surveyDao;
public SurveyGroupDAO() {
super(SurveyGroup.class);
surveyDao = new SurveyDAO();
}
/**
* saves the survey group and any surveys contained therein
*
* @param group
* @return
*/
public SurveyGroup save(SurveyGroup group) {
group = super.save(group);
if (group.getSurveyList() != null) {
for (Survey s : group.getSurveyList()) {
s.setSurveyGroupId(group.getKey().getId());
surveyDao.save(s);
}
}
return group;
}
/**
* finds a single survey group by code
*
* @param name
* @return
*/
public SurveyGroup findBySurveyGroupName(String name) {
return super.findByProperty("code", name, "String");
}
/**
* deletes the survey group and spawns asynchronous delete survey messages for any surveys
* contained therein.
*
* @param item
*/
public void delete(SurveyGroup item) {
// This probably won't work on the server
SurveyDAO surveyDao = new SurveyDAO();
item = super.getByKey(item.getKey().getId());
for (Survey survey : surveyDao
.listSurveysByGroup(item.getKey().getId())) {
SurveyTaskUtil.spawnDeleteTask("deleteSurvey", survey.getKey()
.getId());
}
super.delete(item);
}
/**
* @param parentId
* @return
*/
public List<SurveyGroup> listByProjectFolderId(Long parentId) {
return super.listByProperty("parentId", parentId, "Long");
}
/**
* Return a list of survey groups that are accessible by the current user
*
* @return
*/
public List<SurveyGroup> listAllFilteredByUserAuthorization() {
List<SurveyGroup> allSurveyGroups = list(Constants.ALL_RESULTS);
return filterByUserAuthorizationObjectId(allSurveyGroups);
}
}