Subversion Repositories bacoAlunos

Rev

Rev 684 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.services.surveys;

import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.views.*;
import pt.utl.ist.berserk.logic.serviceManager.IService;

import java.util.Date;
import java.util.List;

/**
 * @author: Duarte Santos
 * @date: 05-08-2011
 * @time: 17:06
 * @email: a12564 [at] estgp [dot] pt
 */


public class InsertSurveyAnswersService implements IService
{
    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(InsertSurveyAnswersService.class);

    private LoadSurveyService loadSurveyService = new LoadSurveyService();

    public SurveyView run(long responseId, SurveyView surveyView, UserSession userSession)
    {
        SurveyResponse response = DaoFactory.getSurveyResponseDaoImpl().load(responseId);

        if(response.isAnswered()) return null;

        for(SurveyQuestionView qView : surveyView.getQuestions())
        {
            for(SurveyQuestionItemView iView : qView.getItems())
            {
                for(SurveyQuestionCandidateAnswerView cView : iView.getCandidates())
                {
                    for(SurveyQuestionAnswerView aView : cView.getAnswers())
                    {
                        if(aView.getId() <= 0)
                        {
                            SurveyQuestionAnswerImpl a = DomainObjectFactory.createSurveyQuestionAnswerImpl();
                            aView.persistViewInObject(a);

                            SurveyQuestionCandidateAnswerImpl c = (SurveyQuestionCandidateAnswerImpl) DaoFactory.getSurveyQuestionCandidateAnswerDaoImpl().load(cView.getId());

                            a.setCandidateAnswer(c);
                            a.setResponse(response);

                            DaoFactory.getSurveyQuestionAnswerDaoImpl().save(a);
                        }
                    }
                }
            }
        }

        response.setDate(new 5+0%2Fdocs%2Fapi+Date">Date());
        response.setAnswered(true);

        logger.info("Answer inserted to survey with id: "+surveyView.getId());

        return loadSurveyService.run(surveyView.getId(), userSession);
    }
}