Subversion Repositories bacoAlunos

Rev

Rev 1403 | Rev 1412 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.services.questionarios;

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

import java.util.List;

/**
 * Created by jorgemachado on 21/03/16.
 */

public class QuestionariosService 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(QuestionariosService.class);

    //NEW QUESTIONARIOS COME BY THIS SERVICE
    public QuestionarioImpl newQuestionarioForm(QuestionarioImpl qform, UserSession userSession) throws NotAuthorizedException
    {
        if(qform.getQuestionarioHistoryDrive().getId() > 0)
        {
            QuestionarioHistoryDrive hist = DaoFactory.getQuestionarioHistoryDriveDaoImpl().load(qform.getQuestionarioHistoryDrive().getId());
            qform.setQuestionarioHistoryDrive(hist);
        }
        else
        {
            qform.setQuestionarioHistoryDrive(null);
        }
        DaoFactory.getQuestionarioDaoImpl().save(qform);
        return qform;
    }
    public QuestionarioImpl saveQuestionarioForm(QuestionarioImpl qform, UserSession userSession, QuestionarioImpl questionarioCleared) throws NotAuthorizedException {
        if(qform.getQuestionarioHistoryDrive().getId() > 0)
        {
            QuestionarioHistoryDrive hist = DaoFactory.getQuestionarioHistoryDriveDaoImpl().load(qform.getQuestionarioHistoryDrive().getId());
            qform.setQuestionarioHistoryDrive(hist);
        }
        else
        {
            qform.setQuestionarioHistoryDrive(null);
        }
        Questionario qPersistent = questionarioCleared;
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_FORM.name()))
        {
            QuestionarioView qv = new QuestionarioView(qform);
            if(questionarioCleared.isClear((UserSessionImpl) userSession, QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_ANSWER_PROCESSOR.name()))
            {
                qv.persistAnswersProcessor(qPersistent);
            }
            qv.persistViewInObjectForm(qPersistent);
            qPersistent.setQuestionarioHistoryDrive(qform.getQuestionarioHistoryDrive());
        }
        else
            throw new NotAuthorizedException("Não pode alterar o formulário porque o questionário está num estado avançado");

        return loadInit(questionarioCleared);
    }

    public QuestionarioImpl setAssignDetailsState(long id, UserSession userSession, QuestionarioImpl questionarioCleared) throws NotAuthorizedException {

        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SET_STATE_ASSIGNATION_DETAILS.name()))
        {
            questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNATION_DETAILS);
            questionarioCleared.getiAnswersProcessorClass().startAfetacoes(questionarioCleared);
        }
        else
            throw new NotAuthorizedException("Não alterar o questionário para este estado neste momento");

        return loadInit(questionarioCleared);
    }
    /**
     * Questionario comes already cleared from Filter
     * @param questionarioId
     * @param questionarioCleared
     * @param userSession
     * @return
     */

    public QuestionarioImpl loadQuestionario(long questionarioId,UserSession userSession,QuestionarioImpl questionarioCleared)
    {
        return loadInit(questionarioCleared);
    }

    /**
     * just to load proxys
     * @param questionarioCleared
     * @return
     */

    private QuestionarioImpl loadInit(QuestionarioImpl questionarioCleared)
    {
        questionarioCleared.getDescription();//to load proxy just in case
        if(questionarioCleared.getQuestionarioHistoryDrive() != null)
            questionarioCleared.getQuestionarioHistoryDrive().getCodeName();
        IAnswersProcessor processor = questionarioCleared.getiAnswersProcessorClass();
        processor.initQuestionarioAfetacoesVariables(questionarioCleared);
        return questionarioCleared;
    }

    public void loadInit(List<QuestionarioImpl> questionarioCleared)
    {
        for(QuestionarioImpl q: questionarioCleared)
        {
            loadInit(q);
        }
    }



    public void deleteQuestionario(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
    {
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_DELETE.name()))
        {
            DaoFactory.getQuestionarioDaoImpl().delete(questionarioCleared);
        }
    }

    /**
     * Passa para o estado ASSIGNED_ANSWERS
     * @param questionarioId
     * @param userSession
     * @param questionarioCleared
     * @return
     */

    public QuestionarioImpl putAssignedAnswers(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
    {
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_PUT_ANSWERS_ASSIGNED.toString()))
        {
            questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNED_ANSWERS);
        }
        return questionarioCleared;
    }

    public QuestionarioImpl revertAssignationDetails(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
    {
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_REVERT_TO_ASSIGNATION_DETAILS.toString()))
        {
            questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNATION_DETAILS);
        }
        return questionarioCleared;
    }

    public QuestionarioImpl startProcessement(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
    {

        if(questionarioCleared.isClear((UserSessionImpl) userSession, QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_PROCESSEMENT.toString()))
        {
            questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING);
        }
        return questionarioCleared;
    }

    public QuestionarioImpl stopProcessement(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
    {

        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_STOP_PROCESSEMENT.toString()))
        {
            questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNED_ANSWERS);
        }
        return questionarioCleared;
    }



}