PollBean.java 2.3 KB
package fi.insomnia.bortal.beans;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import fi.insomnia.bortal.facade.PollAnswerFacade;
import fi.insomnia.bortal.facade.PollFacade;
import fi.insomnia.bortal.facade.PossibleAnswerFacade;
import fi.insomnia.bortal.model.Poll;
import fi.insomnia.bortal.model.PollAnswer;
import fi.insomnia.bortal.model.PollQuestion;
import fi.insomnia.bortal.model.PossibleAnswer;

/**
 * Session Bean implementation class PollBean
 */

@Stateless
public class PollBean implements PollBeanLocal {

    @EJB
    private PollFacade pollFacade;

    @EJB
    private PollAnswerFacade pollAnswerFacade;

    @EJB
    private EventBean eventBean;

    @EJB
    private UserBean userBean;

    @EJB
    private PossibleAnswerFacade possibleAnswerFacade;

    /**
     * Default constructor.
     */
    public PollBean() {
        // TODO Auto-generated constructor stub
    }

    @Override
    public List<Poll> findPolls() {
        List<Poll> list = new ArrayList<Poll>();

        userBean.fatalNotLoggedIn();

        for (Poll p : pollFacade.findAll(eventBean.getCurrentEvent()))
            if (pollIsUsable(p))
                list.add(p);

        return list;
    }

    private boolean pollIsUsable(Poll poll) {
        Calendar now = Calendar.getInstance();

        // Already valid
        if (poll.getBegin().before(now))
            return false;

        // Still valid
        if (poll.getEnd().after(now))
            return false;

        // At least one question that is on a page
        for (PollQuestion q : poll.getQuestions()) {
            if (q.getPage() > 0)
                return true;
        }

        // No usable questions
        return false;
    }

    @Override
    public boolean createAnswers(List<PollAnswer> answers) {
        userBean.fatalNotLoggedIn();

        for (PollAnswer answer : answers) {
            answer.setUser(userBean.getCurrentUser());
            if (answer.getId().getId() != null)
                pollAnswerFacade.create(answer);
        }

        return false;
    }

    @Override
    public PossibleAnswer findPossibleAnwerById(int id) {
        PossibleAnswer ans = possibleAnswerFacade.find(eventBean.getCurrentEvent().getId(), new Integer(id));
        return ans;
    }
}