Subversion Repositories bacoAlunos

Rev

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

Rev Author Line No. Line
1326 jmachado 1
package pt.estgp.estgweb.services.questionarios;
2
 
1404 jmachado 3
import org.apache.log4j.Logger;
1326 jmachado 4
import pt.estgp.estgweb.domain.*;
5
import pt.estgp.estgweb.domain.dao.DaoFactory;
6
import pt.estgp.estgweb.domain.views.QuestionarioView;
7
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
8
import pt.utl.ist.berserk.logic.serviceManager.IService;
9
 
10
import java.util.List;
11
 
12
/**
13
 * Created by jorgemachado on 21/03/16.
14
 */
15
public class QuestionariosService implements IService
16
{
17
 
1404 jmachado 18
    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);
19
 
1326 jmachado 20
    //NEW QUESTIONARIOS COME BY THIS SERVICE
21
    public QuestionarioImpl newQuestionarioForm(QuestionarioImpl qform, UserSession userSession) throws NotAuthorizedException
22
    {
23
        if(qform.getQuestionarioHistoryDrive().getId() > 0)
24
        {
25
            QuestionarioHistoryDrive hist = DaoFactory.getQuestionarioHistoryDriveDaoImpl().load(qform.getQuestionarioHistoryDrive().getId());
26
            qform.setQuestionarioHistoryDrive(hist);
27
        }
28
        else
29
        {
30
            qform.setQuestionarioHistoryDrive(null);
31
        }
32
        DaoFactory.getQuestionarioDaoImpl().save(qform);
33
        return qform;
34
    }
35
    public QuestionarioImpl saveQuestionarioForm(QuestionarioImpl qform, UserSession userSession, QuestionarioImpl questionarioCleared) throws NotAuthorizedException {
36
        if(qform.getQuestionarioHistoryDrive().getId() > 0)
37
        {
38
            QuestionarioHistoryDrive hist = DaoFactory.getQuestionarioHistoryDriveDaoImpl().load(qform.getQuestionarioHistoryDrive().getId());
39
            qform.setQuestionarioHistoryDrive(hist);
40
        }
41
        else
42
        {
43
            qform.setQuestionarioHistoryDrive(null);
44
        }
45
        Questionario qPersistent = questionarioCleared;
46
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_FORM.name()))
47
        {
48
            QuestionarioView qv = new QuestionarioView(qform);
49
            if(questionarioCleared.isClear((UserSessionImpl) userSession, QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_ANSWER_PROCESSOR.name()))
50
            {
51
                qv.persistAnswersProcessor(qPersistent);
52
            }
53
            qv.persistViewInObjectForm(qPersistent);
54
            qPersistent.setQuestionarioHistoryDrive(qform.getQuestionarioHistoryDrive());
55
        }
56
        else
57
            throw new NotAuthorizedException("Não pode alterar o formulário porque o questionário está num estado avançado");
58
 
59
        return loadInit(questionarioCleared);
60
    }
61
 
62
    public QuestionarioImpl setAssignDetailsState(long id, UserSession userSession, QuestionarioImpl questionarioCleared) throws NotAuthorizedException {
63
 
64
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SET_STATE_ASSIGNATION_DETAILS.name()))
65
        {
66
            questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNATION_DETAILS);
1329 jmachado 67
            questionarioCleared.getiAnswersProcessorClass().startAfetacoes(questionarioCleared);
1326 jmachado 68
        }
69
        else
70
            throw new NotAuthorizedException("Não alterar o questionário para este estado neste momento");
71
 
72
        return loadInit(questionarioCleared);
73
    }
74
    /**
75
     * Questionario comes already cleared from Filter
76
     * @param questionarioId
77
     * @param questionarioCleared
78
     * @param userSession
79
     * @return
80
     */
81
    public QuestionarioImpl loadQuestionario(long questionarioId,UserSession userSession,QuestionarioImpl questionarioCleared)
82
    {
83
        return loadInit(questionarioCleared);
84
    }
85
 
86
    /**
87
     * just to load proxys
88
     * @param questionarioCleared
89
     * @return
90
     */
91
    private QuestionarioImpl loadInit(QuestionarioImpl questionarioCleared)
92
    {
93
        questionarioCleared.getDescription();//to load proxy just in case
94
        if(questionarioCleared.getQuestionarioHistoryDrive() != null)
95
            questionarioCleared.getQuestionarioHistoryDrive().getCodeName();
1328 jmachado 96
        IAnswersProcessor processor = questionarioCleared.getiAnswersProcessorClass();
97
        processor.initQuestionarioAfetacoesVariables(questionarioCleared);
1326 jmachado 98
        return questionarioCleared;
99
    }
1328 jmachado 100
 
1329 jmachado 101
    public void loadInit(List<QuestionarioImpl> questionarioCleared)
1326 jmachado 102
    {
103
        for(QuestionarioImpl q: questionarioCleared)
104
        {
1328 jmachado 105
            loadInit(q);
1326 jmachado 106
        }
107
    }
108
 
109
 
1329 jmachado 110
 
1326 jmachado 111
    public void deleteQuestionario(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
112
    {
113
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_DELETE.name()))
114
        {
115
            DaoFactory.getQuestionarioDaoImpl().delete(questionarioCleared);
116
        }
117
    }
118
 
1403 jmachado 119
    /**
120
     * Passa para o estado ASSIGNED_ANSWERS
121
     * @param questionarioId
122
     * @param userSession
123
     * @param questionarioCleared
124
     * @return
125
     */
126
    public QuestionarioImpl putAssignedAnswers(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
127
    {
1404 jmachado 128
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_PUT_ANSWERS_ASSIGNED.toString()))
129
        {
130
            questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNED_ANSWERS);
131
        }
132
        return questionarioCleared;
133
    }
1403 jmachado 134
 
1404 jmachado 135
    public QuestionarioImpl revertAssignationDetails(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
136
    {
137
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_REVERT_TO_ASSIGNATION_DETAILS.toString()))
138
        {
139
            questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNATION_DETAILS);
140
        }
1403 jmachado 141
        return questionarioCleared;
142
    }
143
 
144
    public QuestionarioImpl startProcessement(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
145
    {
146
 
1404 jmachado 147
        if(questionarioCleared.isClear((UserSessionImpl) userSession, QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_PROCESSEMENT.toString()))
148
        {
1413 jmachado 149
            if(questionarioCleared.getStateEnum() == QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNED_ANSWERS)
150
                questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING);
151
            else if(questionarioCleared.getStateEnum() == QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.STOPED_WITH_ANSWERS)
152
                questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING_WITH_ANSWERS);
1404 jmachado 153
        }
1403 jmachado 154
        return questionarioCleared;
155
    }
156
 
1404 jmachado 157
    public QuestionarioImpl stopProcessement(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
158
    {
159
 
160
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_STOP_PROCESSEMENT.toString()))
161
        {
1413 jmachado 162
            if(questionarioCleared.getStateEnum() == QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING)
163
                questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNED_ANSWERS);
164
            else if(questionarioCleared.getStateEnum() == QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING_WITH_ANSWERS)
165
                questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.STOPED_WITH_ANSWERS);
1404 jmachado 166
        }
167
        return questionarioCleared;
168
    }
169
 
1412 jmachado 170
    public void salvarResposta(QuestionarioResposta resposta,1.5.0/docs/api/java/lang/Long.html">Long alunoRequisitadoId,UserSession userSession) throws NotAuthorizedException {
171
        Questionario q = DaoFactory.getQuestionarioDaoImpl().load(resposta.getQuestionario().getId());
172
        QuestionarioImpl questionario = (QuestionarioImpl) DaoFactory.getQuestionarioDaoImpl().narrow(q);
173
        QuestionarioPedagogicoAlunoRequisitado alunoRequisitado = DaoFactory.getQuestionarioPedagogicoAlunoRequisitadoDaoImpl().load(alunoRequisitadoId);
174
        if(questionario.getStateEnum() != QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING && questionario.getStateEnum() != QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING_WITH_ANSWERS )
175
        {
176
            throw new NotAuthorizedException("O questionário interrompido por razões administrativas, por favor tente mais tarde");
177
        }
178
        if(!((alunoRequisitado.getRespostaRequisitada().getQuestionario().getId() == questionario.getId())
179
                &&
180
                alunoRequisitado.getRespostaRequisitada().getResposta() == null
181
                &&
182
                alunoRequisitado.getAluno().getId() == userSession.getUser().getId()))
183
        {
184
            throw new NotAuthorizedException("Não está autorizado a submeter esta resposta.");
185
        }
1404 jmachado 186
 
1412 jmachado 187
        resposta.setId(0);
188
        resposta.setQuestionario(questionario);
189
        resposta.setUser(alunoRequisitado.getAluno());
190
        alunoRequisitado.getRespostaRequisitada().setResposta(resposta);
191
        DaoFactory.getQuestionarioRespostaDaoImpl().save(resposta);
192
        questionario.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING_WITH_ANSWERS);
193
    }
1404 jmachado 194
 
1412 jmachado 195
 
196
 
1326 jmachado 197
}