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 | } |