Subversion Repositories bacoAlunos

Rev

Rev 1387 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1380 jmachado 1
package pt.estgp.estgweb.services.questionarios.pedagogico;
2
 
3
import org.apache.log4j.Logger;
4
import pt.estgp.estgweb.domain.CourseUnitImpl;
5
import pt.estgp.estgweb.domain.QuestionarioImpl;
6
import pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto;
7
import pt.estgp.estgweb.domain.QuestionarioPedagogicoUnidadeCurricularAfeta;
8
import pt.estgp.estgweb.domain.dao.DaoFactory;
9
import pt.estgp.estgweb.services.jobs.ServiceJob;
10
import pt.estgp.estgweb.services.logresults.ILogMessages;
11
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum;
12
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage;
13
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages;
14
 
15
import java.util.List;
16
 
17
 
18
/**
19
 * Created by jorgemachado on 28/05/16.
20
 */
21
public class AnswersAlunosProcessor extends ServiceJob {
22
 
23
    int unidadesNaoUtilizadas = 0;
24
    int unidadesUtilizadas = 0;
25
    int unidadesMarcadas = 0;
26
    int unidadesNaoVistasProf = 0;
27
    int unidadesNaoVistasAlunos = 0;
28
    int cursosUtilizados = 0;
29
 
30
    private static 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(AnswersAlunosProcessor.class);
31
    /**
32
     *
33
     * @return
34
     * @throws Throwable
35
     */
36
    @1.5.0/docs/api/java/lang/Override.html">Override
37
    protected ILogMessages runJobServiceTask() throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
38
    {
39
 
40
        DefaultLogMessages logMessages = new DefaultLogMessages();
41
        long questionarioId = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(getParametersMap().get(ServiceJob.JOB_questionario_id_KEY).getObject());
42
        QuestionarioImpl q = (QuestionarioImpl) DaoFactory.getQuestionarioDaoImpl().load(questionarioId);
43
 
44
 
45
        //Colocamos já aqui o estado para nao se poder mudar o Ano e o Semestre
46
 
47
        /**logging**/
48
        1.5.0/docs/api/java/lang/String.html">String msg = "Starting running service answers generation for questionario: " + q.getId() + " - " + q.getiAnswersProcessorClass().getTitle();
49
        serviceLogInfo(msg);
50
        logger.info(msg);
51
 
52
        List<Long> cursosAfetosIds = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().findCursosAfetosIds(questionarioId);
53
        int count = 0;
54
        for(1.5.0/docs/api/java/lang/Long.html">Long cursoAfetoId : cursosAfetosIds)
55
        {
56
            /** COMMIT OPERATION **/
57
            count++;
58
            cursosUtilizados++;
59
            setProgress((int)((((float)count)/((float)cursosAfetosIds.size()))*100.0f));
60
            commitPartially();
61
            /** COMMIT OPERATION **/
62
 
63
 
64
            QuestionarioPedagogicoCursoAfeto cu = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().get(cursoAfetoId);
65
            msg = "(+) Iniciando atribuição de respostas de alunos para o curso " + cu.getNome() + " (" + cu.getCodigoCurso() + ") escola " + cu.getNomeInstituicao() + "(" + cu.getCodigoInstituicao() + ")";
66
            logger.info(msg);
67
            serviceLogInfo(msg);
68
            int unidades;
69
            if(cu.getUnidadesAfetas() != null)
70
            {
71
                unidades = cu.getUnidadesAfetas().size();
72
                int countUnidadades = 0;
73
                for(QuestionarioPedagogicoUnidadeCurricularAfeta unidadeCurricularAfeta: cu.getUnidadesAfetas())
74
                {
75
                    countUnidadades++;
76
                    msg = unidadeCurricularAfeta.isUsar() ? "(+)" : "(----IGNORADA-----)";
77
                    msg += "(" + countUnidadades + "/" + unidades + ") Iniciando atribuição de Unidade Curricular Afeta " + unidadeCurricularAfeta.getCodigoUnidade() + " - " + unidadeCurricularAfeta.getNome();
78
                    logger.info(msg);
79
                    serviceLogInfo(msg);
80
 
81
                    VerificarAssgnementsParaRemover(logMessages, unidadeCurricularAfeta);
82
 
83
                    if(!unidadeCurricularAfeta.isUsar())
84
                    {
85
                        unidadesNaoUtilizadas++;
86
                        msg = "!!! A unidade está marcada para NÃO SER UTILIZADA, passando à próxima";
87
                        serviceLogWarn(msg);
88
                        logger.warn(msg);
89
                        logMessages.addMessage(new DefaultLogMessage("questionario.courses.selection", LogMessageTypeEnum.WARNING,msg));
90
                    }
91
                    else
92
                    {
93
                        unidadesUtilizadas++;
94
                        verificaAlertasUnidade(logMessages, unidadeCurricularAfeta);
95
                        List<CourseUnitImpl.Tipologia> tipologias;
96
                        if(unidadeCurricularAfeta.getCursoAfeto().isUsarTipologias())
97
                        {
98
                            tipologias = ((CourseUnitImpl)unidadeCurricularAfeta.getCourseUnit()).getTipologiasClass().obtainMergeTipologias();
99
                        }
100
                        else
101
                        {
102
                            tipologias = ((CourseUnitImpl)unidadeCurricularAfeta.getCourseUnit()).getTipologiasClass().obtainTipologiasSimples(unidadeCurricularAfeta.getCourseUnit());
103
                        }
104
                        if(tipologias.get(0).isUse())
105
                        {
106
                            //todo Criar Tipologia Requisitada
107
                            1.5.0/docs/api/java/lang/String.html">String cdDocente = tipologias.get(0).getCdDocente();
108
                            1.5.0/docs/api/java/lang/String.html">String cdTipologia = tipologias.get(0).getCdTipologia();
109
                            1.5.0/docs/api/java/lang/String.html">String dsTipologia = tipologias.get(0).getDsTipologia();
110
                            1.5.0/docs/api/java/lang/String.html">String cdTurma = tipologias.get(0).getCdTurma();
111
                            //todo percorrer as turmas da unidade à procura desta
112
                            //todo quando a encontrar criar um AlunoRequisitado para essa tipologia Requisitada
113
                            //todo Criar uma resposta requisitada para esse aluno Requisitado nessa tipologia
114
 
115
                            //Depois o home tem de procurar respostas requisitadas sem resposta
116
                            //para cada uma vai pelo aluno requisitado buscar a turma o docente e pela
117
                            //unidade afeta a unidade e o curso
118
                            //apresenta o questionario com o id da resposta requisitada
119
 
120
                        }
121
                    }
122
                }
123
            }
124
        }
125
 
126
        /** COMMIT OPERATION **/
127
        setProgress(100);
128
        commitPartially();
129
        DaoFactory.getQuestionarioDaoImpl().update(q);
130
        /** COMMIT OPERATION **/
131
 
132
        msg = "Set courses state as " + QuestionarioImpl.SubStatePedagogico.ANSWERS_ASSIGNED.name();
133
        serviceLogInfo(msg);
134
        logger.info(msg);
135
        q.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.ANSWERS_ASSIGNED);
136
        commitPartially();
137
 
138
        return logMessages;
139
    }
140
 
141
    private void VerificarAssgnementsParaRemover(DefaultLogMessages logMessages, QuestionarioPedagogicoUnidadeCurricularAfeta unidadeCurricularAfeta) {
142
        1.5.0/docs/api/java/lang/String.html">String msg;
143
        if(unidadeCurricularAfeta.getTipologiasRequisitadas() != null && unidadeCurricularAfeta.getTipologiasRequisitadas().size() > 0)
144
        {
145
            msg = "A unidade tem tipologias requisitadas afetas que tem de ser removidas primeiro, iremos remover todas as tipologias e respostas associadas";
146
            logger.warn(msg);
147
            serviceLogWarn(msg);
148
            logMessages.addMessage(new DefaultLogMessage("questionario.courses.selection", LogMessageTypeEnum.WARNING,msg));
149
            new UpdateCoursesAndUnitsJobService().removeTipologiasERespostasCascade(unidadeCurricularAfeta);
150
        }
151
    }
152
 
153
    private void verificaAlertasUnidade(DefaultLogMessages logMessages, QuestionarioPedagogicoUnidadeCurricularAfeta unidadeCurricularAfeta) {
154
        1.5.0/docs/api/java/lang/String.html">String msg;
155
        if(unidadeCurricularAfeta.isMarked() || !unidadeCurricularAfeta.isVista() || !unidadeCurricularAfeta.isVistaProfs())
156
        {
157
            msg = " !!!! ALERTA :--> ";
158
            if(unidadeCurricularAfeta.isMarked())
159
            {
160
                unidadesMarcadas++;
161
                msg+= " MARCADA ; ";
162
            }
163
            if(!unidadeCurricularAfeta.isVista())
164
            {
165
                unidadesNaoVistasAlunos++;
166
                msg+= " NÃO VISTA ALUNOS ; ";
167
            }
168
            if(!unidadeCurricularAfeta.isVistaProfs())
169
            {
170
                unidadesNaoVistasProf++;
171
                msg+= " NÃO VISTA PROFS ; ";
172
            }
173
            serviceLogWarn(msg);
174
            logger.warn(msg);
175
            logMessages.addMessage(new DefaultLogMessage("questionario.courses.selection", LogMessageTypeEnum.WARNING,msg));
176
        }
177
    }
178
}