package pt.estgp.estgweb.services.questionarios.pedagogico;
import jomm.dao.impl.AbstractDao;
import jomm.utils.MyCalendar;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.jobs.ServiceJob;
import pt.estgp.estgweb.services.logresults.ILogMessages;
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum;
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage;
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.utils.DistritosUtils;
import java.util.*;
/**
* Created by jorgemachado on 22/03/16.
*/
public class OlapGenerationProcessor
extends ServiceJob
{
//int unidadesNaoUtilizadas = 0;
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(OlapGenerationProcessor.
class);
int unidadesNaoUtilizadas =
0;
int unidadesUtilizadas =
0;
//int unidadesMarcadas = 0;
//int unidadesNaoVistasProf = 0;
//int unidadesNaoVistasAlunos = 0;
int cursosUtilizados =
0;
//int respostasRequisitadas = 0;
int cursosSemDepartamento =
0;
int unidadesSemPeriodoNoPlano =
0;
/**
* ############# JOB TASK ############
* ############# JOB TASK ############
* @return
* @throws Throwable
*/
@
1.5.0/docs/api/java/lang/Override.html">Override
protected ILogMessages runJobServiceTask
() throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
{
long questionarioId =
1.5.0/docs/api/java/lang/Long.html">Long.
parseLong(getParametersMap
().
get(ServiceJob.
JOB_questionario_id_KEY).
getObject());
DefaultLogMessages logMessages =
new DefaultLogMessages
();
//unidadesNaoUtilizadas = 0;
unidadesNaoUtilizadas =
0;
unidadesUtilizadas =
0;
//unidadesMarcadas = 0;
//unidadesNaoVistasProf = 0;
//unidadesNaoVistasAlunos = 0;
cursosUtilizados =
0;
//respostasRequisitadas = 0;
cursosSemDepartamento =
0;
unidadesSemPeriodoNoPlano =
0;
QuestionarioImpl q =
(QuestionarioImpl
) DaoFactory.
getQuestionarioDaoImpl().
load(questionarioId
);
try{
AbstractDao.
getCurrentSession().
createQuery("delete from " + OlapStarFactQuestionarioCurso.
class.
getName() +
" x where x.questionario.id = " + questionarioId
).
executeUpdate();
AbstractDao.
getCurrentSession().
createQuery("delete from " + OlapStarFactQuestionarioUnidade.
class.
getName() +
" x where x.questionario.id = " + questionarioId
).
executeUpdate();
AbstractDao.
getCurrentSession().
createQuery("delete from " + OlapStarFactQuestionarioTipologia.
class.
getName() +
" x where x.questionario.id = " + questionarioId
).
executeUpdate();
AbstractDao.
getCurrentSession().
createQuery("delete from " + OlapStarFactQuestionario.
class.
getName() +
" x where x.questionario.id = " + questionarioId
).
executeUpdate();
AbstractDao.
getCurrentSession().
createQuery("delete from " + OlapStarFactQuestionarioAnswer.
class.
getName() +
" x where x.questionario.id = " + questionarioId
).
executeUpdate();
AbstractDao.
getCurrentSession().
createQuery("delete from " + OlapStarFactQuestionarioAnswerEsforco.
class.
getName() +
" x where x.questionario.id = " + questionarioId
).
executeUpdate();
AbstractDao.
getCurrentSession().
getTransaction().
commit();
AbstractDao.
getCurrentSession().
beginTransaction();
AbstractDao.
getCurrentSession().
createQuery("delete from " + OlapEntityQuestionarioUser.
class.
getName() +
" x where x.questionario.id = " + questionarioId
).
executeUpdate();
AbstractDao.
getCurrentSession().
createQuery("delete from " + OlapEntityQuestionarioCurso.
class.
getName() +
" x where x.questionario.id = " + questionarioId
).
executeUpdate();
AbstractDao.
getCurrentSession().
createQuery("delete from " + OlapEntityQuestionarioUnidade.
class.
getName() +
" x where x.questionario.id = " + questionarioId
).
executeUpdate();
AbstractDao.
getCurrentSession().
createQuery("delete from " + OlapEntityQuestionarioPergunta.
class.
getName() +
" x where x.questionario.id = " + questionarioId
).
executeUpdate();
AbstractDao.
getCurrentSession().
createQuery("delete from " + OlapEntityQuestionarioPerguntaEsforco.
class.
getName() +
" x where x.questionario.id = " + questionarioId
).
executeUpdate();
AbstractDao.
getCurrentSession().
createQuery("delete from " + OlapEntityQuestionarioTipologia.
class.
getName() +
" x where x.questionario.id = " + questionarioId
).
executeUpdate();
AbstractDao.
getCurrentSession().
getTransaction().
commit();
AbstractDao.
getCurrentSession().
beginTransaction();
q =
(QuestionarioImpl
) DaoFactory.
getQuestionarioDaoImpl().
load(questionarioId
);
List
<OlapEntityQuestionario
> questionarios = AbstractDao.
getCurrentSession().
createQuery("select x from x in class " + OlapEntityQuestionario.
class.
getName() +
" where x.questionario.id = " + questionarioId
).
list();
OlapEntityQuestionario olapQuestionario
;
OlapHistoryDimension olapHistoryDimension
;
if(questionarios.
size() > 0
)
{
olapQuestionario = questionarios.
get(0
);
updateOlapQuestionario
(olapQuestionario, q
);
List
<OlapHistoryDimension
> histories = AbstractDao.
getCurrentSession().
createQuery("select x from x in class " + OlapHistoryDimension.
class.
getName() +
" where x.questionario.id = " + questionarioId
).
list();
olapHistoryDimension = histories.
get(0
);
}
else
{
//+++++++ todo CRIANDO OLAP Questionario
olapQuestionario = createQuestionarioOlap
(q
);
olapHistoryDimension =
new OlapHistoryDimension
();
olapHistoryDimension.
setQuestionario(q
);
//+++++++ todo CRIANDO OLAP History
DaoFactory.
getOlapHistoryDimensionDaoImpl().
save(olapHistoryDimension
);
}
olapHistoryDimension.
setNome(q.
getQuestionarioHistoryDrive().
getCodeName());
olapHistoryDimension.
setDescricao(q.
getQuestionarioHistoryDrive().
getDescription());
//Colocamos já aqui o estado para nao se poder mudar o Ano e o Semestre
/**logging**/
1.5.0/docs/api/java/lang/String.html">String msg =
"Starting running service OLAP GENERATION generation for questionario: " + q.
getId() +
" - " + q.
getiAnswersProcessorClass().
getTitle();
serviceLogInfo
(msg
);
logger.
info(msg
);
List
<Long
> cursosAfetosIds = DaoFactory.
getQuestionarioPedagogicoCursoAfetoDaoImpl().
findCursosAfetosIds(questionarioId
);
int count =
0;
int size=cursosAfetosIds.
size();
//+++++++ todo CRIANDO OLAP Perguntas
HashMap
<Integer,Long
> mapaIdsPerguntasPersistentes = createOlapQuestionarioPergunta
(q
);
HashMap
<Integer,Long
> mapaIdsPerguntasEsforcoPersistentes = createOlapQuestionarioPerguntaEsforco
(q
);
for(1.5.0/docs/api/java/lang/Long.html">Long cursoAfetoId : cursosAfetosIds
)
{
count++
;
/** COMMIT OPERATION **/
setProgress
((int)((((float)count
)/
((float)size
))*100.0f
));
commitPartially
();
q =
(QuestionarioImpl
) DaoFactory.
getQuestionarioDaoImpl().
load(questionarioId
);
/** COMMIT OPERATION **/
QuestionarioPedagogicoCursoAfeto cu = DaoFactory.
getQuestionarioPedagogicoCursoAfetoDaoImpl().
get(cursoAfetoId
);
msg =
"(+) Iniciando geração OLAP para o curso " + cu.
getNome() +
" (" + cu.
getCodigoCurso() +
") escola " + cu.
getNomeInstituicao() +
"(" + cu.
getCodigoInstituicao() +
")";
logger.
info(msg
);
serviceLogInfo
(msg
);
//+++++++ todo CRIANDO OLAP Curso
int unidadesCurso =
0;
int tipologiasCurso =
0;
int respostasCandidatasCurso =
0;
int respostasObtidasCurso =
0;
OlapEntityQuestionarioCurso olapQuestionarioCurso = createQuestionarioCursoOlap
(logMessages, q, cu
);
int unidades
;
if(cu.
getUnidadesAfetas() !=
null)
{
unidades = cu.
getUnidadesAfetas().
size();
unidadesCurso = unidades
;
int countUnidades =
0;
for(QuestionarioPedagogicoUnidadeCurricularAfeta unidadeCurricularAfeta: cu.
getUnidadesAfetas())
{
countUnidades++
;
msg = unidadeCurricularAfeta.
isUsar() ? "(+)" :
"(----IGNORADA-----)";
msg +=
"(" + countUnidades +
"/" + unidades +
") Iniciando OLAP de Unidade Curricular Afeta " + unidadeCurricularAfeta.
getCodigoUnidade() +
" - " + unidadeCurricularAfeta.
getNome();
logger.
info(msg
);
serviceLogInfo
(msg
);
if(!unidadeCurricularAfeta.
isUsar() ||
!unidadeCurricularAfeta.
isUsarOlap())
{
unidadesNaoUtilizadas++
;
msg =
"!!! A unidade está marcada para NÃO SER UTILIZADA, passando à próxima";
serviceLogWarn
(msg
);
logger.
warn(msg
);
logMessages.
addMessage(new DefaultLogMessage
("questionario.olap", LogMessageTypeEnum.
WARNING,msg
));
}
else
{
CourseUnitImpl cuImpl =
(CourseUnitImpl
) DaoFactory.
getCourseUnitDaoImpl().
narrow(unidadeCurricularAfeta.
getCourseUnit());
CourseImpl courseImpl =
(CourseImpl
) DaoFactory.
getCourseDaoImpl().
narrow(unidadeCurricularAfeta.
getCourseUnit().
getCourse());
//TODO CRIANDO ENTIDADE OLAP UNIDADE
int tipologiasUnidade = unidadeCurricularAfeta.
getTipologiasRequisitadas().
size();
int respostasCandidatasUnidade =
0;
int respostasObtidasUnidade =
0;
tipologiasCurso += tipologiasUnidade
;
OlapEntityQuestionarioUnidade olapQuestionarioUnidade = createOlapQuestionarioUnidade
(logMessages, q, unidadeCurricularAfeta, cuImpl
);
unidadesUtilizadas++
;
for(QuestionarioPedagogicoTipologiaRequisitada tipologiaRequisitada: unidadeCurricularAfeta.
getTipologiasRequisitadas())
{
msg =
"Iniciando OLAP de Tipologia Requisitada " + tipologiaRequisitada.
getDsTipologia() +
" " + tipologiaRequisitada.
getCdTipologia()
+
" docente: " + tipologiaRequisitada.
getCdDocente() +
"(" + tipologiaRequisitada.
getNomeDocente() +
")"
+
" turma: " + tipologiaRequisitada.
getCdTurma();
serviceLogInfo
(msg
);
logger.
info(msg
);
//TODO CRIANDO ENTIDADE OLAP TIPOLOGIA
int respostasCandidatasTipologia = tipologiaRequisitada.
getAlunosRequisitados().
size();
int respostasObtidasTipologia =
0;
respostasCandidatasCurso += respostasCandidatasTipologia
;
respostasCandidatasUnidade += respostasCandidatasTipologia
;
OlapEntityQuestionarioTipologia olapQuestionarioTipologia = createOlapQuestionarioTipologia
(q, tipologiaRequisitada
);
for(QuestionarioPedagogicoAlunoRequisitado alunoRequisitado: tipologiaRequisitada.
getAlunosRequisitados())
{
QuestionarioRespostaRequisitada respostaRequisitada = alunoRequisitado.
getRespostaRequisitada();
//TODO CRIANDO NESTE QUESTIONARIO ENTIDADE PERFIL UTILIZADOR
OlapEntityQuestionarioUser olapQuestionarioUser = createOlapQuestionarioUser
(q, alunoRequisitado
);
//TODO CRIANDO ENTIDADE FACTO RESPOSTA RESPONDIDA/NAO RESPONDIDA
createOlapStarFactQuestionario
(q, olapQuestionario, olapHistoryDimension, olapQuestionarioCurso, olapQuestionarioUnidade, olapQuestionarioTipologia, respostaRequisitada, olapQuestionarioUser
);
//TODO USAR ENTIDADES RESPOSTAPERGUNTA COM BASE NO QUESTIONARIO EM QUESTAO
if(respostaRequisitada.
getResposta() !=
null)
{
QuestionarioResposta resposta = respostaRequisitada.
getResposta();
respostasObtidasCurso++
;
respostasObtidasUnidade++
;
respostasObtidasTipologia++
;
//TODO CRIAR FACTOS RESPOSTA COM BASE NA RESPOSTA
List
<OlapStarFactQuestionarioAnswer
> factRespostas =
new ArrayList
<OlapStarFactQuestionarioAnswer
>();
for(1.5.0/docs/api/java/util/Map.html">Map.
Entry<Integer,Long
> entryPergunta : mapaIdsPerguntasPersistentes.
entrySet())
{
int numeroPergunta = entryPergunta.
getKey();
1.5.0/docs/api/java/lang/Long.html">Long idPerguntaBd = entryPergunta.
getValue();
OlapEntityQuestionarioPergunta olapPergunta = DaoFactory.
getOlapEntityQuestionarioPerguntaDaoImpl().
load(idPerguntaBd
);
1.5.0/docs/api/java/lang/Long.html">Long timeTakenRN =
(1.5.0/docs/api/java/lang/Long.html">Long) QuestionarioResposta.
class.
getMethod("getTimeTakenR" + numeroPergunta
).
invoke(resposta
);
1.5.0/docs/api/java/lang/Long.html">Long timeEventRN =
(1.5.0/docs/api/java/lang/Long.html">Long) QuestionarioResposta.
class.
getMethod("getTimeEventR" + numeroPergunta
).
invoke(resposta
);
1.5.0/docs/api/java/lang/String.html">String respostaN =
(1.5.0/docs/api/java/lang/String.html">String) QuestionarioResposta.
class.
getMethod("getR" + numeroPergunta
).
invoke(resposta
);
if(respostaN
!=
null)
{
createOlapQuestionarioAnswer
(q, olapQuestionario, olapHistoryDimension, olapQuestionarioCurso, olapQuestionarioUnidade, olapQuestionarioTipologia, olapQuestionarioUser, factRespostas, olapPergunta, timeTakenRN, timeEventRN, respostaN
);
}
}
1.5.0/docs/api/java/util/Collections.html">Collections.
sort(factRespostas,
new Comparator
<OlapStarFactQuestionarioAnswer
>() {
@
1.5.0/docs/api/java/lang/Override.html">Override
public int compare
(OlapStarFactQuestionarioAnswer o1, OlapStarFactQuestionarioAnswer o2
) {
return (int) (o1.
getDataEvento().
getTime() - o2.
getDataEvento().
getTime());
}
});
int i =
1;
for(OlapStarFactQuestionarioAnswer fact: factRespostas
)
{
fact.
setOrdemResposta(i
);
i++
;
}
//PERGUNTAS DE ESFORCO Tudo Igual mas para Esforco-------------------------------------------
List
<OlapStarFactQuestionarioAnswerEsforco
> factRespostasEsforco =
new ArrayList
<OlapStarFactQuestionarioAnswerEsforco
>();
for(1.5.0/docs/api/java/util/Map.html">Map.
Entry<Integer,Long
> entryPerguntaEsforco : mapaIdsPerguntasEsforcoPersistentes.
entrySet())
{
int numeroPergunta = entryPerguntaEsforco.
getKey();
1.5.0/docs/api/java/lang/Long.html">Long idPerguntaBd = entryPerguntaEsforco.
getValue();
OlapEntityQuestionarioPerguntaEsforco olapPerguntaEsforco = DaoFactory.
getOlapEntityQuestionarioPerguntaEsforcoDaoImpl().
load(idPerguntaBd
);
1.5.0/docs/api/java/lang/Long.html">Long timeTakenRN =
(1.5.0/docs/api/java/lang/Long.html">Long) QuestionarioResposta.
class.
getMethod("getTimeTakenRe" + numeroPergunta
).
invoke(resposta
);
1.5.0/docs/api/java/lang/Long.html">Long timeEventRN =
(1.5.0/docs/api/java/lang/Long.html">Long) QuestionarioResposta.
class.
getMethod("getTimeEventRe" + numeroPergunta
).
invoke(resposta
);
1.5.0/docs/api/java/lang/String.html">String respostaN =
(1.5.0/docs/api/java/lang/String.html">String) QuestionarioResposta.
class.
getMethod("getRe" + numeroPergunta
).
invoke(resposta
);
if(respostaN
!=
null)
{
createOlapQuestionarioAnswerEsforco
(q, olapQuestionario, olapHistoryDimension, olapQuestionarioCurso, olapQuestionarioUnidade, olapQuestionarioTipologia, olapQuestionarioUser, factRespostasEsforco, olapPerguntaEsforco, timeTakenRN, timeEventRN, respostaN
);
}
}
1.5.0/docs/api/java/util/Collections.html">Collections.
sort(factRespostasEsforco,
new Comparator
<OlapStarFactQuestionarioAnswerEsforco
>() {
@
1.5.0/docs/api/java/lang/Override.html">Override
public int compare
(OlapStarFactQuestionarioAnswerEsforco o1, OlapStarFactQuestionarioAnswerEsforco o2
) {
return (int) (o1.
getDataEvento().
getTime() - o2.
getDataEvento().
getTime());
}
});
i =
1;
for(OlapStarFactQuestionarioAnswerEsforco fact: factRespostasEsforco
)
{
fact.
setOrdemResposta(i
);
i++
;
}
}
}
//TODO CRIANDO FACTO TIPOLOGIA
createOlapStarFactTipologia
(q, olapQuestionario, olapHistoryDimension, olapQuestionarioCurso, olapQuestionarioUnidade, respostasCandidatasTipologia, respostasObtidasTipologia, olapQuestionarioTipologia
);
}
//TODO CRIANDO FACTO UNIDADE
createOlapStarFactUnidade
(q, olapQuestionario, olapHistoryDimension, olapQuestionarioCurso, olapQuestionarioUnidade, tipologiasUnidade, respostasCandidatasUnidade, respostasObtidasUnidade
);
}
}
}
//TODO CRIANDO FACTO CURSO
createOlapStarFactCurso
(q, olapQuestionario, olapHistoryDimension, olapQuestionarioCurso, tipologiasCurso, unidadesCurso, respostasCandidatasCurso, respostasObtidasCurso
);
}
/** COMMIT OPERATION **/
setProgress
(100
);
commitPartially
();
DaoFactory.
getQuestionarioDaoImpl().
update(q
);
/** COMMIT OPERATION **/
msg =
"Set courses state as " + QuestionarioImpl.
1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.
OLAP.
name();
serviceLogInfo
(msg
);
logger.
info(msg
);
q.
setStateClass(QuestionarioImpl.
1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.
OLAP);
commitPartially
();
serviceLogInfo
("######################################");
serviceLogInfo
("######################################");
logger.
info("######################################");
logger.
info("######################################");
}
catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e,e
);
q.
setStateClass(QuestionarioImpl.
1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.
CLOSED);
throw e
;
}
return logMessages
;
}
private void createOlapStarFactCurso
(QuestionarioImpl q, OlapEntityQuestionario olapQuestionario, OlapHistoryDimension olapHistoryDimension, OlapEntityQuestionarioCurso olapQuestionarioCurso,
int unidadesCurso,
int tipologiasCurso,
int respostasCandidatasCurso,
int respostasObtidasCurso
)
{
OlapStarFactQuestionarioCurso factQuestionarioCurso =
new OlapStarFactQuestionarioCurso
();
factQuestionarioCurso.
setUnidades(unidadesCurso
);
factQuestionarioCurso.
setTipologias(tipologiasCurso
);
factQuestionarioCurso.
setRespostasCandidatas(respostasCandidatasCurso
);
factQuestionarioCurso.
setRespostasObtidas(respostasObtidasCurso
);
factQuestionarioCurso.
setQuestionario(q
);
factQuestionarioCurso.
setOlapTimeLine(olapHistoryDimension
);
factQuestionarioCurso.
setOlapQuestionario(olapQuestionario
);
factQuestionarioCurso.
setOlapCurso(olapQuestionarioCurso
);
DaoFactory.
getOlapStarFactQuestionarioCursoDaoImpl().
save(factQuestionarioCurso
);
}
private void createOlapStarFactUnidade
(QuestionarioImpl q, OlapEntityQuestionario olapQuestionario, OlapHistoryDimension olapHistoryDimension, OlapEntityQuestionarioCurso olapQuestionarioCurso, OlapEntityQuestionarioUnidade olapQuestionarioUnidade,
int tipologiasUnidade,
int respostasCandidatasUnidade,
int respostasObtidasUnidade
)
{
OlapStarFactQuestionarioUnidade factQuestionarioUnidade =
new OlapStarFactQuestionarioUnidade
();
factQuestionarioUnidade.
setTipologias(tipologiasUnidade
);
factQuestionarioUnidade.
setRespostasCandidatas(respostasCandidatasUnidade
);
factQuestionarioUnidade.
setRespostasObtidas(respostasObtidasUnidade
);
factQuestionarioUnidade.
setQuestionario(q
);
factQuestionarioUnidade.
setOlapTimeLine(olapHistoryDimension
);
factQuestionarioUnidade.
setOlapQuestionario(olapQuestionario
);
factQuestionarioUnidade.
setOlapCurso(olapQuestionarioCurso
);
factQuestionarioUnidade.
setOlapUnidade(olapQuestionarioUnidade
);
DaoFactory.
getOlapStarFactQuestionarioUnidadeDaoImpl().
save(factQuestionarioUnidade
);
}
private void createOlapStarFactTipologia
(QuestionarioImpl q, OlapEntityQuestionario olapQuestionario, OlapHistoryDimension olapHistoryDimension, OlapEntityQuestionarioCurso olapQuestionarioCurso, OlapEntityQuestionarioUnidade olapQuestionarioUnidade,
int respostasCandidatasTipologia,
int respostasObtidasTipologia, OlapEntityQuestionarioTipologia olapQuestionarioTipologia
) {
OlapStarFactQuestionarioTipologia factQuestionarioTipologia =
new OlapStarFactQuestionarioTipologia
();
factQuestionarioTipologia.
setRespostasCandidatas(respostasCandidatasTipologia
);
factQuestionarioTipologia.
setRespostasObtidas(respostasObtidasTipologia
);
factQuestionarioTipologia.
setQuestionario(q
);
factQuestionarioTipologia.
setOlapTimeLine(olapHistoryDimension
);
factQuestionarioTipologia.
setOlapQuestionario(olapQuestionario
);
factQuestionarioTipologia.
setOlapCurso(olapQuestionarioCurso
);
factQuestionarioTipologia.
setOlapUnidade(olapQuestionarioUnidade
);
factQuestionarioTipologia.
setOlapTipologia(olapQuestionarioTipologia
);
DaoFactory.
getOlapStarFactQuestionarioTipologiaDaoImpl().
save(factQuestionarioTipologia
);
}
private void createOlapQuestionarioAnswer
(QuestionarioImpl q, OlapEntityQuestionario olapQuestionario, OlapHistoryDimension olapHistoryDimension, OlapEntityQuestionarioCurso olapQuestionarioCurso, OlapEntityQuestionarioUnidade olapQuestionarioUnidade, OlapEntityQuestionarioTipologia olapQuestionarioTipologia, OlapEntityQuestionarioUser olapQuestionarioUser, List
<OlapStarFactQuestionarioAnswer
> factRespostas, OlapEntityQuestionarioPergunta olapPergunta,
1.5.0/docs/api/java/lang/Long.html">Long timeTakenRN,
1.5.0/docs/api/java/lang/Long.html">Long timeEventRN,
1.5.0/docs/api/java/lang/String.html">String respostaN
) {
OlapStarFactQuestionarioAnswer factQuestionarioAnswer =
new OlapStarFactQuestionarioAnswer
();
factQuestionarioAnswer.
setQuestionario(q
);
factQuestionarioAnswer.
setOlapTimeLine(olapHistoryDimension
);
factQuestionarioAnswer.
setOlapQuestionario(olapQuestionario
);
factQuestionarioAnswer.
setOlapUnidade(olapQuestionarioUnidade
);
factQuestionarioAnswer.
setOlapPerfilUser(olapQuestionarioUser
);
factQuestionarioAnswer.
setOlapTipologia(olapQuestionarioTipologia
);
factQuestionarioAnswer.
setOlapCurso(olapQuestionarioCurso
);
factQuestionarioAnswer.
setOlapPergunta(olapPergunta
);
factQuestionarioAnswer.
setDataEvento(new 5+0%2Fdocs%2Fapi+Date">Date(timeEventRN
));
factQuestionarioAnswer.
setTempoLevado(timeTakenRN
);
factQuestionarioAnswer.
setIntResposta(1.5.0/docs/api/java/lang/Integer.html">Integer.
parseInt(respostaN
));
factRespostas.
add(factQuestionarioAnswer
);
DaoFactory.
getOlapStarFactQuestionarioAnswerDaoImpl().
save(factQuestionarioAnswer
);
}
private void createOlapQuestionarioAnswerEsforco
(QuestionarioImpl q, OlapEntityQuestionario olapQuestionario, OlapHistoryDimension olapHistoryDimension, OlapEntityQuestionarioCurso olapQuestionarioCurso, OlapEntityQuestionarioUnidade olapQuestionarioUnidade, OlapEntityQuestionarioTipologia olapQuestionarioTipologia, OlapEntityQuestionarioUser olapQuestionarioUser, List
<OlapStarFactQuestionarioAnswerEsforco
> factRespostasEsforco, OlapEntityQuestionarioPerguntaEsforco olapPergunta,
1.5.0/docs/api/java/lang/Long.html">Long timeTakenRN,
1.5.0/docs/api/java/lang/Long.html">Long timeEventRN,
1.5.0/docs/api/java/lang/String.html">String respostaN
) {
OlapStarFactQuestionarioAnswerEsforco factQuestionarioAnswerEsforco =
new OlapStarFactQuestionarioAnswerEsforco
();
factQuestionarioAnswerEsforco.
setQuestionario(q
);
factQuestionarioAnswerEsforco.
setOlapTimeLine(olapHistoryDimension
);
factQuestionarioAnswerEsforco.
setOlapQuestionario(olapQuestionario
);
factQuestionarioAnswerEsforco.
setOlapUnidade(olapQuestionarioUnidade
);
factQuestionarioAnswerEsforco.
setOlapPerfilUser(olapQuestionarioUser
);
factQuestionarioAnswerEsforco.
setOlapTipologia(olapQuestionarioTipologia
);
factQuestionarioAnswerEsforco.
setOlapCurso(olapQuestionarioCurso
);
factQuestionarioAnswerEsforco.
setOlapPerguntaEsforco(olapPergunta
);
factQuestionarioAnswerEsforco.
setDataEvento(new 5+0%2Fdocs%2Fapi+Date">Date(timeEventRN
));
factQuestionarioAnswerEsforco.
setTempoLevado(timeTakenRN
);
factQuestionarioAnswerEsforco.
setIntResposta(1.5.0/docs/api/java/lang/Integer.html">Integer.
parseInt(respostaN
));
factRespostasEsforco.
add(factQuestionarioAnswerEsforco
);
DaoFactory.
getOlapStarFactQuestionarioAnswerEsforcoDaoImpl().
save(factQuestionarioAnswerEsforco
);
}
private OlapStarFactQuestionario createOlapStarFactQuestionario
(QuestionarioImpl q, OlapEntityQuestionario olapQuestionario, OlapHistoryDimension olapHistoryDimension, OlapEntityQuestionarioCurso olapQuestionarioCurso, OlapEntityQuestionarioUnidade olapQuestionarioUnidade, OlapEntityQuestionarioTipologia olapQuestionarioTipologia, QuestionarioRespostaRequisitada respostaRequisitada, OlapEntityQuestionarioUser olapQuestionarioUser
) {
QuestionarioResposta resposta = respostaRequisitada.
getResposta();
OlapStarFactQuestionario factQuestionario =
new OlapStarFactQuestionario
();
factQuestionario.
setQuestionario(q
);
factQuestionario.
setOlapTimeLine(olapHistoryDimension
);
factQuestionario.
setOlapQuestionario(olapQuestionario
);
factQuestionario.
setOlapUnidade(olapQuestionarioUnidade
);
factQuestionario.
setOlapPerfilUser(olapQuestionarioUser
);
factQuestionario.
setOlapTipologia(olapQuestionarioTipologia
);
factQuestionario.
setOlapCurso(olapQuestionarioCurso
);
factQuestionario.
setRespondido(resposta
!=
null);
if(resposta
!=
null)
{
factQuestionario.
setDataInicio(new 5+0%2Fdocs%2Fapi+Date">Date(resposta.
getTimeStart()));
factQuestionario.
setDataFim(new 5+0%2Fdocs%2Fapi+Date">Date(resposta.
getTimeEnd()));
factQuestionario.
setTempoTotal(resposta.
getTotalTime());
}
DaoFactory.
getOlapStarFactQuestionarioDaoImpl().
save(factQuestionario
);
return factQuestionario
;
}
private OlapEntityQuestionarioUser createOlapQuestionarioUser
(QuestionarioImpl q, QuestionarioPedagogicoAlunoRequisitado alunoRequisitado
) {
OlapEntityQuestionarioUser questionarioUser =
new OlapEntityQuestionarioUser
();
questionarioUser.
setQuestionario(q
);
questionarioUser.
setSigesCode("" + alunoRequisitado.
getAluno().
getSigesCode());
questionarioUser.
setBirthDate(alunoRequisitado.
getAluno().
getBirthDate());
questionarioUser.
setCountry(alunoRequisitado.
getAluno().
getCountry());
questionarioUser.
setNacionalidade(alunoRequisitado.
getAluno().
getNacionalidade());
questionarioUser.
setScholarDegree(alunoRequisitado.
getAluno().
getScholarDegree());
questionarioUser.
setSex(alunoRequisitado.
getAluno().
getSex());
if(!alunoRequisitado.
isTipoAlunoFoiExtraido())
{
//este procedimento aplica-se a casos de importacao anteriores a criacao
//dos campos tipo de aluno no aluno requisitado
alunoRequisitado.
setPropinasEmDia(alunoRequisitado.
getAluno().
isPropinasEmDia());
alunoRequisitado.
setTipoAlunoBolseiro(alunoRequisitado.
getAluno().
isTipoAlunoBolseiro());
alunoRequisitado.
setTipoAlunoNormal(alunoRequisitado.
getAluno().
isTipoAlunoNormal());
alunoRequisitado.
setTipoAlunoVascodagama(alunoRequisitado.
getAluno().
isTipoAlunoVascodagama());
alunoRequisitado.
setTipoAlunoMilitar(alunoRequisitado.
getAluno().
isTipoAlunoMilitar());
alunoRequisitado.
setTipoAlunoDirigenteAssociativo(alunoRequisitado.
getAluno().
isTipoAlunoDirigenteAssociativo());
alunoRequisitado.
setTipoAlunoBombeiro(alunoRequisitado.
getAluno().
isTipoAlunoBombeiro());
alunoRequisitado.
setTipoAlunoDeficiente(alunoRequisitado.
getAluno().
isTipoAlunoDeficiente());
alunoRequisitado.
setTipoAlunoErasmus(alunoRequisitado.
getAluno().
isTipoAlunoErasmus());
alunoRequisitado.
setTipoAlunoTrabalhadorEstudante(alunoRequisitado.
getAluno().
isTipoAlunoTrabalhadorEstudante());
alunoRequisitado.
setTipoAlunoFoiExtraido(true);
}
questionarioUser.
setPropinasEmDia(alunoRequisitado.
isPropinasEmDia());
questionarioUser.
setTipoAlunoBolseiro(alunoRequisitado.
isTipoAlunoBolseiro());
questionarioUser.
setTipoAlunoNormal(alunoRequisitado.
isTipoAlunoNormal());
questionarioUser.
setTipoAlunoVascodagama(alunoRequisitado.
isTipoAlunoVascodagama());
questionarioUser.
setTipoAlunoMilitar(alunoRequisitado.
isTipoAlunoMilitar());
questionarioUser.
setTipoAlunoDirigenteAssociativo(alunoRequisitado.
isTipoAlunoDirigenteAssociativo());
questionarioUser.
setTipoAlunoBombeiro(alunoRequisitado.
isTipoAlunoBombeiro());
questionarioUser.
setTipoAlunoDeficiente(alunoRequisitado.
isTipoAlunoDeficiente());
questionarioUser.
setTipoAlunoErasmus(alunoRequisitado.
isTipoAlunoErasmus());
questionarioUser.
setTipoAlunoTrabalhadorEstudante(alunoRequisitado.
isTipoAlunoTrabalhadorEstudante());
questionarioUser.
setZip(alunoRequisitado.
getAluno().
getZip());
1.5.0/docs/api/java/lang/String.html">String zipCandidate = alunoRequisitado.
getAluno().
getZip();
if(alunoRequisitado.
getAluno().
getZip()!=
null && alunoRequisitado.
getAluno().
getZip().
indexOf("-")>=
0)
{
zipCandidate = alunoRequisitado.
getAluno().
getZip().
substring(0, alunoRequisitado.
getAluno().
getZip().
indexOf("-"));
}
if(zipCandidate
!=
null)
{
try
{
questionarioUser.
setZipInt(1.5.0/docs/api/java/lang/Integer.html">Integer.
parseInt(zipCandidate
));
questionarioUser.
setDistrito(DistritosUtils.
getDistrito(alunoRequisitado.
getAluno().
getZip()));
questionarioUser.
setConcelho(DistritosUtils.
getConselho(alunoRequisitado.
getAluno().
getZip()));
}
catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
questionarioUser.
setZipInt(0
);
questionarioUser.
setDistrito("DESCONHECIDO");
questionarioUser.
setConcelho("DESCONHECIDO");
logger.
info("Zip code error in student (siges code): " + alunoRequisitado.
getAluno().
getSigesCode());
}
}
DaoFactory.
getOlapEntityQuestionarioUserDaoImpl().
save(questionarioUser
);
return questionarioUser
;
}
private OlapEntityQuestionarioTipologia createOlapQuestionarioTipologia
(QuestionarioImpl q, QuestionarioPedagogicoTipologiaRequisitada tipologiaRequisitada
) {
OlapEntityQuestionarioTipologia questionarioTipologia =
new OlapEntityQuestionarioTipologia
();
questionarioTipologia.
setQuestionario(q
);
questionarioTipologia.
setCodigoTipologia(tipologiaRequisitada.
getCdTipologia());
questionarioTipologia.
setCodigoTurma(tipologiaRequisitada.
getCdTurma());
questionarioTipologia.
setDescricao(tipologiaRequisitada.
getDsTipologia());
//DOCENTE
questionarioTipologia.
setNome(tipologiaRequisitada.
getNomeDocente());
questionarioTipologia.
setCodigoSiges(tipologiaRequisitada.
getCdDocente());
questionarioTipologia.
setBi(tipologiaRequisitada.
getDocenteAfeto().
getBi());
questionarioTipologia.
setEmail(tipologiaRequisitada.
getDocenteAfeto().
getEmail());
questionarioTipologia.
setUsername(tipologiaRequisitada.
getDocenteAfeto().
getUsername());
DaoFactory.
getOlapEntityQuestionarioTipologiaDaoImpl().
save(questionarioTipologia
);
return questionarioTipologia
;
}
private OlapEntityQuestionarioUnidade createOlapQuestionarioUnidade
(DefaultLogMessages logMessages, QuestionarioImpl q, QuestionarioPedagogicoUnidadeCurricularAfeta unidadeCurricularAfeta, CourseUnitImpl cuImpl
) {
1.5.0/docs/api/java/lang/String.html">String msg
;
OlapEntityQuestionarioUnidade olapEntityQuestionarioUnidade =
new OlapEntityQuestionarioUnidade
();
olapEntityQuestionarioUnidade.
setQuestionario(q
);
olapEntityQuestionarioUnidade.
setNome(unidadeCurricularAfeta.
getNome());
olapEntityQuestionarioUnidade.
setCodigo(unidadeCurricularAfeta.
getCodigoUnidade());
olapEntityQuestionarioUnidade.
setPeriodoPlanoS1T8(cuImpl.
getPeriodoPlanoFromStudiesPlan());
olapEntityQuestionarioUnidade.
setSemestrePlanoAbsoluto1ou2(cuImpl.
getSemestrePlanoAbsoluto());
olapEntityQuestionarioUnidade.
setPeriodoSigesS1ouS2ouAouT1aT4(cuImpl.
getSemestre());
//Semestre S1 a T8 ainda nao sao usados em lado nenhum neste sistema, era pensado para se usar nas estatisticas
//de forma a juntar unidades nos mesmos semestres mas ainda nao esta em uso
if(olapEntityQuestionarioUnidade.
getPeriodoPlanoS1T8() ==
null)
{
unidadesSemPeriodoNoPlano++
;
msg =
"!!! A unidade " + cuImpl.
getCode() +
" não tem periodo atribuido no Plano";
serviceLogWarn
(msg
);
logger.
warn(msg
);
logMessages.
addMessage(new DefaultLogMessage
("questionario.olap", LogMessageTypeEnum.
WARNING,msg
));
}
else
{
olapEntityQuestionarioUnidade.
setAnoPlano1a4(cuImpl.
getAnoPlanoFromStudiesPlan());
if(olapEntityQuestionarioUnidade.
getAnoPlano1a4() <=
0)
{
msg =
"!!! A unidade " + cuImpl.
getCode() +
" tem periodo atribuido no Plano MAS O ANO ESTA MAL";
serviceLogWarn
(msg
);
logger.
warn(msg
);
}
//tem de ser igual ao semestre.getId() rever situação com um if e warn se falhar
olapEntityQuestionarioUnidade.
setSemestrePlanoConvertido1a6(cuImpl.
getSemestrePlanoConvertido());
if(olapEntityQuestionarioUnidade.
getSemestrePlanoConvertido1a6() <=
0)
{
msg =
"!!! A unidade " + cuImpl.
getCode() +
" tem getPeriodoPlanoS1T8 atribuido no Plano MAS ESTA MAL";
serviceLogWarn
(msg
);
logger.
warn(msg
);
}
}
DaoFactory.
getOlapEntityQuestionarioUnidadeDaoImpl().
save(olapEntityQuestionarioUnidade
);
return olapEntityQuestionarioUnidade
;
}
private OlapEntityQuestionarioCurso createQuestionarioCursoOlap
(DefaultLogMessages logMessages, QuestionarioImpl q, QuestionarioPedagogicoCursoAfeto cu
) {
OlapEntityQuestionarioCurso questionarioCurso
;
1.5.0/docs/api/java/lang/String.html">String msg
;
questionarioCurso =
new OlapEntityQuestionarioCurso
();
questionarioCurso.
setQuestionario(q
);
questionarioCurso.
setCodigoCurso(cu.
getCodigoCurso());
questionarioCurso.
setDegree(cu.
getCourse().
getDegree());
if(cu.
getCourse().
getDepartment() ==
null)
{
msg =
"Curso sem departamento corrigir situação: " + cu.
getNome();
logger.
warn(msg
);
serviceLogWarn
(msg
);
logMessages.
addMessage(new DefaultLogMessage
("questionario.olap", LogMessageTypeEnum.
WARNING,msg
));
}
else
{
cursosSemDepartamento++
;
questionarioCurso.
setDepartament(cu.
getCourse().
getDepartment().
getSigla());
}
questionarioCurso.
setNomeCurso(cu.
getNome());
questionarioCurso.
setNomeInstituicao(cu.
getNomeInstituicao());
questionarioCurso.
setCodigoInstituicao(cu.
getCodigoInstituicao());
questionarioCurso.
setCodigoNacionalInstituicao(ConfigProperties.
getProperty("institution.national.code."+cu.
getCodigoInstituicao()));
DaoFactory.
getOlapEntityQuestionarioCursoDaoImpl().
save(questionarioCurso
);
return questionarioCurso
;
}
private OlapEntityQuestionario createQuestionarioUnidadeOlap
(QuestionarioImpl q
)
{
return null;
}
private OlapEntityQuestionario createQuestionarioOlap
(QuestionarioImpl q
)
{
OlapEntityQuestionario olapEntityQuestionario =
new OlapEntityQuestionario
();
DaoFactory.
getOlapEntityQuestionarioDaoImpl().
save(olapEntityQuestionario
);
return updateOlapQuestionario
(olapEntityQuestionario, q
);
}
private OlapEntityQuestionario updateOlapQuestionario
(OlapEntityQuestionario olapEntityQuestionario, QuestionarioImpl q
)
{
olapEntityQuestionario.
setQuestionario(q
);
olapEntityQuestionario.
setAno(q.
getYear());
olapEntityQuestionario.
setSemestre(q.
getSemestre());
int firstYear = DatesUtils.
getFirstFromImportYear(q.
getYear());
int secondYear = DatesUtils.
getSecondFromImportYear(q.
getYear());
if(q.
getSemestre().
equals("T1"))
{
olapEntityQuestionario.
setGeneratedTime(new MyCalendar
(firstYear,11,1
).
getTime());
}
else if(q.
getSemestre().
equals("S1") || q.
getSemestre().
equals("T2"))
{
olapEntityQuestionario.
setGeneratedTime(new MyCalendar
(secondYear,2,1
).
getTime());
}
else if(q.
getSemestre().
equals("T3"))
{
olapEntityQuestionario.
setGeneratedTime(new MyCalendar
(secondYear,5,1
).
getTime());
}
else if(q.
getSemestre().
equals("S2") || q.
getSemestre().
equals("T4") || q.
getSemestre().
equals("A"))
{
olapEntityQuestionario.
setGeneratedTime(new MyCalendar
(secondYear,8,1
).
getTime());
}
else
{
logger.
error("AVISO, DATA Não tem semestre correcto");
}
return olapEntityQuestionario
;
}
/**
* Return a map of ID's given the question number
* @param q
* @return
*/
private HashMap
<Integer,Long
> createOlapQuestionarioPergunta
(QuestionarioImpl q
)
{
/**
* Numero da Pergunta VS Id na base de dados da dimensão
*/
HashMap
<Integer,Long
> mapaIdsPerguntasPersistentes =
new HashMap
<Integer, Long
>();
for(int i =
1; i
<=
40;i++
)
{
OlapEntityQuestionarioPergunta pergunta =
new OlapEntityQuestionarioPergunta
();
pergunta.
setNumero("" + i
);
pergunta.
setPergunta(q.
getPergunta("" + i
));
if(pergunta.
getPergunta() ==
null || pergunta.
getPergunta().
trim().
length() == 0
)
continue;
pergunta.
setGrupoCode(q.
getGrupoCode("" + i
));
if(pergunta.
getGrupoCode() ==
null || pergunta.
getGrupoCode().
trim().
length() == 0
)
continue;
pergunta.
setGrupoTitle(q.
getGrupoTitle("" + i
));
1.5.0/docs/api/java/lang/String.html">String subGroupCode = q.
getSubGrupoCode("" + i
);
if(subGroupCode
!=
null)
{
pergunta.
setSubGrupoCode(subGroupCode
);
pergunta.
setSubGrupoTitle(q.
getSubGrupoTitle("" + i
));
}
pergunta.
setQuestionario(q
);
DaoFactory.
getOlapEntityQuestionarioPerguntaDaoImpl().
save(pergunta
);
mapaIdsPerguntasPersistentes.
put(i,pergunta.
getId());
1.5.0/docs/api/java/lang/System.html">System.
out.
println("Pergunta OLAP Entity " + i +
" ID: " + pergunta.
getId());
1.5.0/docs/api/java/lang/System.html">System.
out.
println(pergunta.
getNumero());
1.5.0/docs/api/java/lang/System.html">System.
out.
println(pergunta.
getPergunta());
1.5.0/docs/api/java/lang/System.html">System.
out.
println(pergunta.
getGrupoCode());
1.5.0/docs/api/java/lang/System.html">System.
out.
println(pergunta.
getGrupoTitle());
}
return mapaIdsPerguntasPersistentes
;
}
private HashMap
<Integer,Long
> createOlapQuestionarioPerguntaEsforco
(QuestionarioImpl q
)
{
/**
* Numero da Pergunta VS Id na base de dados da dimensão
*/
HashMap
<Integer,Long
> mapaIdsPerguntasEsforcoPersistentes =
new HashMap
<Integer, Long
>();
for(int i =
1; i
<=
10;i++
)
{
OlapEntityQuestionarioPerguntaEsforco perguntaEsforco =
new OlapEntityQuestionarioPerguntaEsforco
();
perguntaEsforco.
setNumero("" + i
);
perguntaEsforco.
setPergunta(q.
getPerguntaE("" + i
));
if(perguntaEsforco.
getPergunta() ==
null || perguntaEsforco.
getPergunta().
trim().
length() == 0
)
continue;
perguntaEsforco.
setGrupoCode(q.
getGrupoCodeE("" + i
));
if(perguntaEsforco.
getGrupoCode() ==
null || perguntaEsforco.
getGrupoCode().
trim().
length() == 0
)
continue;
perguntaEsforco.
setGrupoTitle(q.
getGrupoTitleE("" + i
));
1.5.0/docs/api/java/lang/String.html">String subGroupCode = q.
getSubGrupoCodeE("" + i
);
if(subGroupCode
!=
null)
{
perguntaEsforco.
setSubGrupoCode(subGroupCode
);
perguntaEsforco.
setSubGrupoTitle(q.
getSubGrupoTitleE("" + i
));
}
perguntaEsforco.
setQuestionario(q
);
DaoFactory.
getOlapEntityQuestionarioPerguntaEsforcoDaoImpl().
save(perguntaEsforco
);
mapaIdsPerguntasEsforcoPersistentes.
put(i,perguntaEsforco.
getId());
1.5.0/docs/api/java/lang/System.html">System.
out.
println("Pergunta Esforco OLAP Entity " + i +
" ID: " + perguntaEsforco.
getId());
1.5.0/docs/api/java/lang/System.html">System.
out.
println(perguntaEsforco.
getNumero());
1.5.0/docs/api/java/lang/System.html">System.
out.
println(perguntaEsforco.
getPergunta());
1.5.0/docs/api/java/lang/System.html">System.
out.
println(perguntaEsforco.
getGrupoCode());
1.5.0/docs/api/java/lang/System.html">System.
out.
println(perguntaEsforco.
getGrupoTitle());
}
return mapaIdsPerguntasEsforcoPersistentes
;
}
}