Package com.agiletec.plugins.jpsurvey.aps.system.services.survey

Source Code of com.agiletec.plugins.jpsurvey.aps.system.services.survey.SurveyManager

/*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
* This file is part of Entando software.
* Entando is a free software;
* You can redistribute it and/or modify it
* under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2.
*
* See the file License for the specific language governing permissions  
* and limitations under the License
*
*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
*/
package com.agiletec.plugins.jpsurvey.aps.system.services.survey;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import com.agiletec.aps.system.ApsSystemUtils;
import com.agiletec.aps.system.common.AbstractService;
import com.agiletec.aps.system.exception.ApsSystemException;
import com.agiletec.aps.system.services.authorization.IAuthorizationManager;
import com.agiletec.aps.system.services.group.Group;
import com.agiletec.aps.system.services.group.GroupUtilizer;
import com.agiletec.aps.system.services.user.UserDetails;
import com.agiletec.plugins.jacms.aps.system.services.resource.ResourceUtilizer;
import com.agiletec.plugins.jpsurvey.aps.system.services.collect.IResponseDAO;
import com.agiletec.plugins.jpsurvey.aps.system.services.collect.IVoterDAO;
import com.agiletec.plugins.jpsurvey.aps.system.services.survey.model.Choice;
import com.agiletec.plugins.jpsurvey.aps.system.services.survey.model.Question;
import com.agiletec.plugins.jpsurvey.aps.system.services.survey.model.Survey;
import com.agiletec.plugins.jpsurvey.aps.system.services.survey.model.SurveyRecord;

public class SurveyManager extends AbstractService implements ISurveyManager, GroupUtilizer, ResourceUtilizer {
 
  @Override
  public void init() throws Exception {
    ApsSystemUtils.getLogger().debug(this.getClass().getName() + ": initiated ");
  }
 
  @Override
  public Survey loadSurvey(int id) throws ApsSystemException {
    try {
      return this.getSurveyDAO().loadSurvey(id);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "loadSurvey");
      throw new ApsSystemException("Error while loading a complete survey", t);
    }
  }
 
  @Override
  public void saveSurvey(Survey survey) throws ApsSystemException {
    try {
      this.getSurveyDAO().saveSurvey(survey);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "saveSurvey");
      throw new ApsSystemException("Error while saving a complete survey", t);
    }
  }
 
  @Override
  public void deleteSurvey(int id) throws ApsSystemException {
    try {
      this.getSurveyDAO().deleteSurvey(id);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "deleteSurvey");
      throw new ApsSystemException("Error while deleting a complete survey", t);
    }
  }
 
  @Override
  public Question loadQuestion(int id) throws ApsSystemException {
    try {
      return this.getQuestionDAO().loadQuestion(id);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "loadQuestion");
      throw new ApsSystemException("Error while loading a question with its choices", t);
    }
  }
 
  @Override
  public Choice loadChoice(int id) throws ApsSystemException {
    try {
      return this.getChoiceDAO().loadChoice(id);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "loadChoice");
      throw new ApsSystemException("Error while loading a choice", t);
    }
  }
 
  @Override
  public void saveChoice(Choice choice) throws ApsSystemException {
    try {
      this.getChoiceDAO().saveChoice(choice);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "saveChoice");
      throw new ApsSystemException("Error while saving a choice", t);
    }
  }
 
  @Override
  public void saveChoiceInSortedPosition(Choice choice) throws ApsSystemException {
    try {
      this.getChoiceDAO().saveChoiceInSortedPosition(choice);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "saveChoiceInSortedPosition");
      throw new ApsSystemException("Error while saving a choice in sorted position", t);
    }
  }
 
  @Override
  public void deleteChoice(int id) throws ApsSystemException {
    try {
      this.getChoiceDAO().deleteChoice(id);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "deleteChoice");
      throw new ApsSystemException("Error while deleting the choice", t);
    }
  }
 
  @Override
  public List<Choice> getQuestionChoices(int id) throws ApsSystemException {
    List<Choice> choices = null;
    try {
      choices = this.getQuestionDAO().getQuestionChoices(id);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "getQuestionChoices");
      throw new ApsSystemException("Error while getting the choices of a question", t);
    }
    return choices;
  }
 
  @Override
  public List<Question> getSurveyQuestions(int id) throws ApsSystemException {
    List<Question> questions = null;
    try {
      questions = this.getSurveyDAO().getSurveyQuestions(id);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "getSurveyQuestions");
      throw new ApsSystemException("Error while getting the questions of a survey", t);
    }
    return questions;
  }
 
  @Override
  public void saveQuestion(Question question) throws ApsSystemException {
    try {
      this.getQuestionDAO().saveQuestion(question);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "saveQuestion");
      throw new ApsSystemException("Error while saving a question", t);
    }
  }
 
  @Override
  public void deleteQuestion(int id) throws ApsSystemException{
    try {
      this.getQuestionDAO().deleteQuestion(id);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "deleteQuestion");
      throw new ApsSystemException("Error while deleting a question", t);
    }
  }
 
  @Override
  public void deleteChoiceByQuestionId(int id) throws ApsSystemException{
    try {
      this.getChoiceDAO().deleteChoiceByQuestionId(id);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "deleteChoiceByQuestionId");
      throw new ApsSystemException("Error while deleting choices by their question ID ", t);
    }
  }
 
  @Override
  public void updateChoice(Choice choice) throws ApsSystemException {
    try {
      this.getChoiceDAO().updateChoice(choice);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "updateChoice");
      throw new ApsSystemException("Error while updating a choice", t);
    }
  }
 
  @Override
  public void updateQuestion(Question question) throws ApsSystemException {
    try {
      this.getQuestionDAO().updateQuestion(question);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "updateQuestion");
      throw new ApsSystemException("Error while updating a question", t);
    }
  }
 
  @Override
  public void deleteQuestionBySurveyId(int id) throws ApsSystemException {
    try {
      this.getQuestionDAO().deleteQuestionBySurveyId(id);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "deleteQuestionBySurveyId");
      throw new ApsSystemException("Error while deleting the questions of a survey", t);
    }
  }
 
  @Override
  public void updateSurvey(Survey survey) throws ApsSystemException {
    try {
      this.getSurveyDAO().updateSurvey(survey);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "updateSurvey");
      throw new ApsSystemException("Error while deleting the questions of a survey", t);
    }
  }
 
  @Override
  public void swapQuestionPosition(int id, boolean isUp) throws ApsSystemException {
    try {
      Question targetQuestion = this.getQuestionDAO().loadQuestion(id);
      if (null == targetQuestion) {
        return;
      }
      Survey survey = this.getSurveyDAO().loadSurvey(targetQuestion.getSurveyId());
      if (null == survey) {
        return;
      }
      List<Question> questions = survey.getQuestions();
      this.getQuestionDAO().swapQuestionPosition(targetQuestion, questions, isUp);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "swapChoicePosition");
      throw new ApsSystemException("Error while swapping two choices in a question", t);
    }
  }
 
  @Override
  public void swapChoicePosition(int id, boolean isUp) throws ApsSystemException {
    try {
      Choice choice = this.getChoiceDAO().loadChoice(id);
      if (null == choice) {
        return;
      }
      List<Choice> choices = this.getQuestionDAO().getQuestionChoices(choice.getQuestionId());
      //this.getChoiceDAO().swapChoicePosition(id, isUp);
      this.getChoiceDAO().swapChoicePosition(choice, choices, isUp);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "swapChoicePosition");
      throw new ApsSystemException("Error while swapping two choices in a question", t);
    }
  }
 
  @Override
  public void saveQuestionInSortedPosition(Question question) throws ApsSystemException {
    try {
      this.getQuestionDAO().saveQuestionInSortedPosition(question);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "saveQuestionInSortedPosition");
      throw new ApsSystemException("Error while saving a question in a sorted position", t);
    }
  }
 
  @Override
  public List<Integer> searchSurvey(Integer id, String description,
      Collection<String> groups, Boolean isActive,
      Boolean isQuestionnaire, String title, Boolean isPublic)
      throws ApsSystemException {
    List<Integer> result = new ArrayList<Integer>();
    try {
      result = this.getSurveyDAO().searchSurvey(id, description, groups, isActive,
          isQuestionnaire, title, isPublic);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "searchSurvey");
      throw new ApsSystemException("Error while serching surveys", t);
    }
    return result;
  }
 
  @Override
  public List<Integer> getActiveSurveyByUser(UserDetails userdetails, Boolean isQuestionnaire, Boolean archive) throws ApsSystemException {
    if (null == userdetails) {
      return null;
    }
    Set<String> groups = new HashSet<String>();
    groups.add(Group.FREE_GROUP_NAME);
    List<Group> userGroups = this.getAuthorizationManager().getGroupsOfUser(userdetails);
    for (int i = 0; i < userGroups.size(); i++) {
      groups.add(userGroups.get(i).getName());
    }
    if (groups.contains(Group.ADMINS_GROUP_NAME)) {
      groups = null;
    }
    List<Integer> result = new ArrayList<Integer>();
    try {
      List<Integer> list = this.getSurveyDAO().searchSurvey(null, null, groups, true, isQuestionnaire, null, null);
      if (null != list) {
        Iterator<Integer> itr = list.iterator();
        while (itr.hasNext()) {
          Integer currentId = itr.next();
          SurveyRecord survey = this.getSurveyDAO().loadSurvey(currentId);
          if ((survey.isArchive() && archive) || (survey.isOpen() && !archive)) {
            result.add(currentId);
          }
        }
      }
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "getSurveysByUser");
      throw new ApsSystemException("Errore loading the survey list available for user " + userdetails.getUsername(), t);
    }
    return result;
  }
 
  @Override
  public List<Integer> getActiveSurveyList() throws ApsSystemException {
    List<Integer> list = null;
    try {
      list = this.getSurveyDAO().searchSurvey(null, null, null, true, null, null, null);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "getActiveSurveyIds");
      throw new ApsSystemException("Error loading the active surveys list", t);
    }
    return list;
  }
 
  @Override
  public List<Integer> getSurveyList() throws ApsSystemException {
    List<Integer> list = null;
    try {
      list = this.getSurveyDAO().searchSurvey(null, null, null, null, null, null, null);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "getActiveSurveyIds");
      throw new ApsSystemException("Error loading the active surveys list", t);
    }
    return list;
  }
 
  @Override
  public List getGroupUtilizers(String groupName) throws ApsSystemException {
    List<Survey> surveys = null;
    try {
      Collection<String> groups = new ArrayList<String>();
      groups.add(groupName);
      List<Integer> surveyIds = this.getSurveyDAO().searchSurvey(null, null, groups, null, null, null, null);
      if (null == surveyIds || surveyIds.isEmpty()) {
        return null;
      }
      surveys = new ArrayList<Survey>(surveyIds.size());
      for (int i = 0; i < surveyIds.size(); i++) {
        Integer id = surveyIds.get(i);
        surveys.add(this.loadSurvey(id));
      }
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "getGroupUtilizers");
      throw new ApsSystemException("Error loading surveys by group " + groupName, t);
    }
    return surveys;
  }
 
  @Override
  public List getResourceUtilizers(String resourceId) throws ApsSystemException {
    List<Survey> surveys = null;
    try {
      List<Integer> surveyIds = this.getSurveyDAO().loadResourceUtilizers(resourceId);
      if (null == surveyIds || surveyIds.isEmpty()) {
        return null;
      }
      surveys = new ArrayList<Survey>(surveyIds.size());
      for (int i = 0; i < surveyIds.size(); i++) {
        Integer id = surveyIds.get(i);
        surveys.add(this.loadSurvey(id));
      }
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "getGroupUtilizers");
      throw new ApsSystemException("Error loading surveys by resource " + resourceId, t);
    }
    return surveys;
  }
 
  public void setSurveyDAO(ISurveyDAO surveyDAO) {
    this._surveyDAO = surveyDAO;
  }
  protected ISurveyDAO getSurveyDAO() {
    return _surveyDAO;
  }
 
  public void setQuestionDAO(IQuestionDAO questionDAO) {
    this._questionDAO = questionDAO;
  }
  protected IQuestionDAO getQuestionDAO() {
    return _questionDAO;
  }
 
  public void setChoiceDAO(IChoiceDAO choiceDAO) {
    this._choiceDAO = choiceDAO;
  }
  protected IChoiceDAO getChoiceDAO() {
    return _choiceDAO;
  }
 
  public void setResponseDAO(IResponseDAO responseDAO) {
    this._responseDAO = responseDAO;
  }
  protected IResponseDAO getResponseDAO() {
    return _responseDAO;
  }
 
  public void setVoterDAO(IVoterDAO voterDAO) {
    this._voterDAO = voterDAO;
  }
  protected IVoterDAO getVoterDAO() {
    return _voterDAO;
  }
 
  public void setAuthorizationManager(IAuthorizationManager authorizationManager) {
    this._authorizationManager = authorizationManager;
  }
  protected IAuthorizationManager getAuthorizationManager() {
    return _authorizationManager;
  }
 
  private ISurveyDAO _surveyDAO;
  private IQuestionDAO _questionDAO;
  private IChoiceDAO _choiceDAO;
  private IResponseDAO _responseDAO;
  private IVoterDAO _voterDAO;
 
  private IAuthorizationManager _authorizationManager;
 
}
TOP

Related Classes of com.agiletec.plugins.jpsurvey.aps.system.services.survey.SurveyManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.