/**
*
*/
package org.openuap.cms.survey.manager;
import java.util.List;
import org.openuap.base.util.QueryInfo;
import org.openuap.base.util.context.PageBuilder;
import org.openuap.cms.survey.model.Answer;
import org.openuap.cms.survey.model.AnswerItem;
import org.openuap.cms.survey.model.Question;
import org.openuap.cms.survey.model.QuestionGroup;
import org.openuap.cms.survey.model.QuestionItem;
import org.openuap.cms.survey.model.QuestionPage;
import org.openuap.cms.survey.model.SurveyAnswer;
import org.openuap.cms.survey.model.Voter;
/**
* <p>
* 调查问题管理器.
* </p>
*
* <p>
* $Id: QuestionManager.java 4017 2011-03-13 13:55:50Z orangeforjava $
* </p>
*
* @author Joseph
* @version 1.0
*/
public interface QuestionManager {
/**
* 获得调查问题
*
* @param qi
* @param pb
* @return
*/
public List getQuestions(QueryInfo qi, PageBuilder pb);
/**
* 根据Id获得问题
*
* @param id
* @return
*/
public Question getQuestionById(Long id);
/**
* 获得所有问题
*
* @return
*/
public List getAllQuestions();
/**
* 搜索问题
*
* @param key
* @param qi
* @param pb
* @return
*/
public List searchQuestions(String key, QueryInfo qi, PageBuilder pb);
/**
* 添加问题
*
* @param question
* @return
*/
public Long addQuestion(Question question);
/**
* 保存问题
*
* @param question
*/
public void saveQuestion(Question question);
/**
* 删除问题
*
* @param question
*/
public void deleteQuestion(Question question);
/**
* 获得问题数目
*
* @return
*/
public int getQuestionCount();
/**
* 获得指定类型的问题数目
*
* @param questionType
* @return
*/
public int getQuestionCount(Integer questionType);
/**
* 获得调查所包含的问题数目
*
* @param surveyId
* @return
*/
public int getQuestionCountBySurvey(Long surveyId);
/**
* 根据指定id字符串获得问题列表
*
* @param questionsId
* @return
*/
public List getQuestionList(String questionsId);
public List getQuestionList(Integer questionStatus, QueryInfo qi,
PageBuilder pb);
public List getQuestionList(Long surveyId, QueryInfo qi, PageBuilder pb);
public List getQuestionList(String hql, String hql_count, QueryInfo qi,
PageBuilder pb);
/**
* 获得问题选项列表
*
* @param questionId
* @return
*/
public List getQuestionItems(Long questionId);
/**
* 获得问题选项
*
* @param itemId
* @return
*/
public QuestionItem getQuestionItemById(Long itemId);
/**
* 添加问题选项
*
* @param questionItem
* @return
*/
public Long addQuestionItem(QuestionItem questionItem);
public void saveQuestionItem(QuestionItem questionItem);
public void deleteQuestionItem(QuestionItem questionItem);
public void deleteQuestionItems(Long questionId);
public void deleteQuestionItemById(Long itemId);
public int getQuestionItemsTotalCount(Long questionId);
public Long addVoter(Voter voter);
public Voter getVoterByName(String name);
public void saveVoter(Voter voter);
public void deleteVoter(Voter voter);
public Voter searchVoter(String ipAddress, Long groupId);
public void updateQuestionItems(String questionItemsId);
public void updateQuestionItems2(String questionItemsId);
public int getItemsCount(Long questionId);
public void executeHql(String hql, Object args[]);
public List getQuestionListByGroup(Long surveyId, Long groupId);
public List getQuestionListByPage(Long surveyId, Long pageId);
/**
* 获得问题页
*
* @param surveyId
* @param pageId
* @return
*/
public QuestionPage getQuestionPage(Long surveyId, Long pageId);
public QuestionGroup getQuestionGroup(Long surveyId, Long groupId);
public List getPages(Long id);
//
public Voter getVoterById(Long voterId);
public void addAnswer(Answer Answer);
public void saveAnswer(Answer Answer);
public void deleteAnswer(Answer Answer);
public void deleteAnswerByVoter(Long voterId);
public void deleteAnswerBySurvey(Long surveyId);
public List getAnswer(Long surveyId, QueryInfo qi, PageBuilder pb);
public List getAnswerByVoter(Long voterId, QueryInfo qi, PageBuilder pb);
public List getAnswerByQuestion(Long questionId, QueryInfo qi,
PageBuilder pb);
public Answer getAnswerById(Long surveyId, Long voterId, Long questionId);
public void addAnswerItem(AnswerItem AnswerItem);
public void saveAnswerItem(AnswerItem AnswerItem);
public void deleteAnswerItem(Answer AnswerItem);
public void deleteAnswerItemByVoter(Long voterId);
public void deleteAnswerItemBySurvey(Long surveyId);
public List getAnswerItemBySurvey(Long surveyId, QueryInfo qi,
PageBuilder pb);
public List getAnswerItemByVoter(Long voterId, QueryInfo qi, PageBuilder pb);
public List getAnswerItemByItem(Long itemId, QueryInfo qi, PageBuilder pb);
public AnswerItem getAnswerItemById(Long itemId, Long voterId, Long surveyId);
public List getVoters(Long surveyId, Long surveyRecordId, QueryInfo qi,
PageBuilder pb);
public SurveyAnswer getSurveyAnswer(Long voterId);
// /////////////////////////////////////////////////////////////
public List getAnswer(Long surveyId, Long surveyRecordId, QueryInfo qi,
PageBuilder pb);
public List getAnswerByQuestion(Long questionId, Long surveyRecordId,
QueryInfo qi, PageBuilder pb);
}