package pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.queries;
import jomm.dao.impl.AbstractDao;
import org.hibernate.Query;
import pt.estgp.estgweb.domain.OlapStarFactQuestionarioAnswer;
import pt.estgp.estgweb.services.questionarios.PedagogicoAlunosProcessor;
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.reportsdomain.DocenteReport;
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.reportsdomain.EntityEvaluated;
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.reportsdomain.QuestionariosAlunosReport;
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.utils.ChartBuilderUtil;
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.utils.DataTable;
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.utils.MediasGrupo;
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.utils.ReportUtils;
import java.text.DecimalFormat;
import java.util.List;
/**
* Created by jorgemachado on 07/12/16.
*/
public class PerguntasGrupoQueryDao
{
public static final 1.5.0/docs/api/java/lang/String.html">String GRUPO_DOCENTE_CODE_PERGUNTAS =
"Docente";
public static final 1.5.0/docs/api/java/lang/String.html">String GRUPO_UNIDADE_CODE_PERGUNTAS =
"Unidade";
public static final 1.5.0/docs/api/java/lang/String.html">String GRUPO_DOCENTE_REL_ALUNO_CODE_PERGUNTAS =
"D_RelAluno";
public static final 1.5.0/docs/api/java/lang/String.html">String GRUPO_DOCENTE_PROFISSIONALISMO_DOCENTE_CODE_PERGUNTAS =
"D_ProfissRigorDocente";
public static final 1.5.0/docs/api/java/lang/String.html">String GRUPO_SALAS_CODE_PERGUNTAS =
"Salas";
public static final 1.5.0/docs/api/java/lang/String.html">String GRUPO_ESTAGIO_CODE_PERGUNTAS =
"EstagioProj";
public static final 1.5.0/docs/api/java/lang/String.html">String GRUPO_ENSINO_CLINICO_CODE_PERGUNTAS =
"PraEnsinoCliPraEnsinoSupervisionado";
public static void getMediasGrupo
(1.5.0/docs/api/java/lang/String.html">String[] codes,
EntityEvaluated entityEvaluated,
1.5.0/docs/api/java/lang/String.html">String anoLectivo,
QuestionariosAlunosReport report,
List
<String
> codigosCurso,
List
<String
> codigosEscola,
1.5.0/docs/api/java/lang/String.html">String grupo,
1.5.0/docs/api/java/lang/String.html">String subGrupo,
MediasGrupo medias,
1.5.0/docs/api/java/lang/String.html">String[] periodos,
1.5.0/docs/api/java/lang/String.html">String[] degrees
)
{
1.5.0/docs/api/javax/management/Query.html">Query query
;
1.5.0/docs/api/java/lang/String.html">String periodosQuery = QueryDaoUtils.
createPeriodosQuery(periodos,
"quest",
true);
1.5.0/docs/api/java/lang/String.html">String degreesQuery = QueryDaoUtils.
createDegreesQuery(degrees,
"curso",
true);
1.5.0/docs/api/java/lang/String.html">String whereFragmentEntity = QuestionariosQueryDao.
getWhereEntityCodesFragment(codes,entityEvaluated
);
query = AbstractDao.
getCurrentSession().
createQuery("" +
"SELECT " +
"avg(fc.intResposta) as media," +
"std(fc.intResposta) as desvio," +
"count(fc.id) as total " +
"FROM " + OlapStarFactQuestionarioAnswer.
class.
getName() +
" fc " +
"JOIN fc.olapTipologia tipo " +
"JOIN fc.olapQuestionario quest " +
"JOIN fc.olapPergunta prgp " +
"JOIN fc.olapCurso curso " +
"JOIN fc.olapTimeLine timeLine " +
"where " +
" quest.ano = :ano " +
whereFragmentEntity +
"and timeLine.nome = '" + PedagogicoAlunosProcessor.
getHistoryDriveConstraintStatic() +
"' " +
periodosQuery +
degreesQuery +
(grupo ==
null ? "" :
" and prgp.grupoCode = :grupoCode ") +
(subGrupo ==
null ? "" :
" and prgp.subGrupoCode = :subGrupoCode ")
);
if(grupo
!=
null)
query.
setString("grupoCode",grupo
);
if(subGrupo
!=
null)
query.
setString("subGrupoCode",subGrupo
);
//query.setString("codigoSiges",teacherCode);
query.
setString("ano",anoLectivo
);
DataTable mediasGlobaisTable =
new DataTable
();
DataTable.
Row header = mediasGlobaisTable.
addRowHeader();
header.
addColTextCenter("Resps.");
header.
addColTextCenter("Média");
header.
addColTextCenter("Desvio Padrão");
header.
addColTextCenter("95% Resps no intervalo");
if(entityEvaluated == EntityEvaluated.
DOCENTE)
{
header.
addColTextCenter("Média dos Cursos em que Lecciona");
header.
addColTextCenter("Média das Escolas em que Lecciona");
}
else if(entityEvaluated == EntityEvaluated.
CURSO)
{
header.
addColTextCenter("Média da Escola");
}
else
{
throw new 1.5.0/docs/api/java/lang/RuntimeException.html">RuntimeException("Não implementado");
}
5+0%2Fdocs%2Fapi+Object">Object[] result =
(5+0%2Fdocs%2Fapi+Object">Object[]) query.
uniqueResult();
1.5.0/docs/api/java/lang/Double.html">Double mediaGrupo =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[0
];
1.5.0/docs/api/java/lang/Double.html">Double desvio =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[1
];
long total = report.
getInquiridosComResposta();
double min = mediaGrupo -
(desvio
*2
);
double max = mediaGrupo +
(desvio
*2
);
if(max
> 5
) max =
5;
1.5.0/docs/api/java/text/DecimalFormat.html">DecimalFormat df =
new 1.5.0/docs/api/java/text/DecimalFormat.html">DecimalFormat("#.##");
1.5.0/docs/api/java/text/DecimalFormat.html">DecimalFormat df2 =
new 1.5.0/docs/api/java/text/DecimalFormat.html">DecimalFormat("#.#");
DataTable.
Row row = mediasGlobaisTable.
addRowNormal();
row.
addColTextCenter(""+total
);
row.
addColPercentageDefinedCenter(df.
format(mediaGrupo
),
"" +
((int)((mediaGrupo/5.0
)*100.0
)),
true);
row.
addColTextCenter(df.
format(desvio
));
row.
addColTextCenter("[" + df2.
format(min
) +
"<->" + df2.
format(max
) +
"]");
double mediaCursos = QueryDaoUtils.
getMediaCursos(codigosCurso, anoLectivo, grupo, subGrupo, periodos, degrees
);
double mediaEscolas = QueryDaoUtils.
getMediaEscolas(codigosEscola, anoLectivo, grupo,subGrupo, periodos, degrees
);
if(entityEvaluated == EntityEvaluated.
DOCENTE)
{
row.
addColPercentageDefinedCenter(df.
format(mediaCursos
),
"" +
((int) ((mediaCursos / 5.0
) * 100.0
)),
true);
}
else if(entityEvaluated == EntityEvaluated.
CURSO)
{
}
else
{
throw new 1.5.0/docs/api/java/lang/RuntimeException.html">RuntimeException("Não implementado");
}
row.
addColPercentageDefinedCenter(df.
format(mediaEscolas
),
"" +
((int)((mediaEscolas/5.0
)*100.0
)),
true);
medias.
setAvaliacaoMediaArredondada((int) ReportUtils.
round(mediaGrupo, 0
));
medias.
setAvaliacaoMedia(mediaGrupo
);
medias.
setDesvioPadrao(desvio
);
medias.
setMediaGlobalNasEscolas(mediaEscolas
);
medias.
setMediaGlobalNosCursos(mediaCursos
);
medias.
setTotal((int) total
);
medias.
setMediasGlobaisTable(mediasGlobaisTable
);
if(medias.
getAvaliacaoMediaArredondada() == 1
)
medias.
setColorMedia(ChartBuilderUtil.
COLOR_1_HEX);
else if(medias.
getAvaliacaoMediaArredondada() == 2
)
medias.
setColorMedia(ChartBuilderUtil.
COLOR_2_HEX);
else if(medias.
getAvaliacaoMediaArredondada() == 3
)
medias.
setColorMedia(ChartBuilderUtil.
COLOR_3_HEX);
else if(medias.
getAvaliacaoMediaArredondada() == 4
)
medias.
setColorMedia(ChartBuilderUtil.
COLOR_4_HEX);
else if(medias.
getAvaliacaoMediaArredondada() == 5
)
medias.
setColorMedia(ChartBuilderUtil.
COLOR_5_HEX);
}
public static void getMediasGrupo
(1.5.0/docs/api/java/lang/String.html">String teacherCode,
1.5.0/docs/api/java/lang/String.html">String anoLectivo,
DocenteReport docenteReport,
List
<String
> codigosCurso,
List
<String
> codigosEscola,
1.5.0/docs/api/java/lang/String.html">String grupo,
1.5.0/docs/api/java/lang/String.html">String subGrupo,
MediasGrupo medias
,
1.5.0/docs/api/java/lang/String.html">String[] periodos
,
1.5.0/docs/api/java/lang/String.html">String[] degrees
)
{
1.5.0/docs/api/javax/management/Query.html">Query query
;
1.5.0/docs/api/java/lang/String.html">String periodosQuery = QueryDaoUtils.
createPeriodosQuery(periodos,
"quest",
true);
1.5.0/docs/api/java/lang/String.html">String degreesQuery = QueryDaoUtils.
createDegreesQuery(degrees,
"curso",
true);
query = AbstractDao.
getCurrentSession().
createQuery("" +
"SELECT " +
"avg(fc.intResposta) as media," +
"std(fc.intResposta) as desvio," +
"count(fc.id) as total " +
"FROM " + OlapStarFactQuestionarioAnswer.
class.
getName() +
" fc " +
"JOIN fc.olapTipologia tipo " +
"JOIN fc.olapQuestionario quest " +
"JOIN fc.olapPergunta prgp " +
"JOIN fc.olapCurso curso " +
"JOIN fc.olapTimeLine timeLine " +
"where " +
" quest.ano = :ano " +
"and tipo.codigoSiges = :codigoSiges " +
"and timeLine.nome = '" + PedagogicoAlunosProcessor.
getHistoryDriveConstraintStatic() +
"' " +
periodosQuery +
degreesQuery +
(grupo ==
null ? "" :
" and prgp.grupoCode = :grupoCode ") +
(subGrupo ==
null ? "" :
" and prgp.subGrupoCode = :subGrupoCode ")
);
if(grupo
!=
null)
query.
setString("grupoCode",grupo
);
if(subGrupo
!=
null)
query.
setString("subGrupoCode",subGrupo
);
query.
setString("codigoSiges",teacherCode
);
query.
setString("ano",anoLectivo
);
DataTable mediasGlobaisTable =
new DataTable
();
DataTable.
Row header = mediasGlobaisTable.
addRowHeader();
header.
addColTextCenter("Resps.");
header.
addColTextCenter("Média");
header.
addColTextCenter("Desvio Padrão");
header.
addColTextCenter("95% Resps no intervalo");
header.
addColTextCenter("Média dos Cursos em que Lecciona");
header.
addColTextCenter("Média das Escolas em que Lecciona");
5+0%2Fdocs%2Fapi+Object">Object[] result =
(5+0%2Fdocs%2Fapi+Object">Object[]) query.
uniqueResult();
1.5.0/docs/api/java/lang/Double.html">Double mediaGrupo =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[0
];
1.5.0/docs/api/java/lang/Double.html">Double desvio =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[1
];
long total = docenteReport.
getInquiridosComResposta();
double min = mediaGrupo -
(desvio
*2
);
double max = mediaGrupo +
(desvio
*2
);
if(max
> 5
) max =
5;
1.5.0/docs/api/java/text/DecimalFormat.html">DecimalFormat df =
new 1.5.0/docs/api/java/text/DecimalFormat.html">DecimalFormat("#.##");
1.5.0/docs/api/java/text/DecimalFormat.html">DecimalFormat df2 =
new 1.5.0/docs/api/java/text/DecimalFormat.html">DecimalFormat("#.#");
DataTable.
Row row = mediasGlobaisTable.
addRowNormal();
row.
addColTextCenter(""+total
);
row.
addColPercentageDefinedCenter(df.
format(mediaGrupo
),
"" +
((int)((mediaGrupo/5.0
)*100.0
)),
true);
row.
addColTextCenter(df.
format(desvio
));
row.
addColTextCenter("[" + df2.
format(min
) +
"<->" + df2.
format(max
) +
"]");
double mediaCursos = QueryDaoUtils.
getMediaCursos(codigosCurso, anoLectivo, grupo, subGrupo, periodos, degrees
);
double mediaEscolas = QueryDaoUtils.
getMediaEscolas(codigosEscola, anoLectivo, grupo,subGrupo, periodos, degrees
);
row.
addColPercentageDefinedCenter(df.
format(mediaCursos
),
"" +
((int)((mediaCursos/5.0
)*100.0
)),
true);
row.
addColPercentageDefinedCenter(df.
format(mediaEscolas
),
"" +
((int)((mediaEscolas/5.0
)*100.0
)),
true);
medias.
setAvaliacaoMediaArredondada((int) ReportUtils.
round(mediaGrupo, 0
));
medias.
setAvaliacaoMedia(mediaGrupo
);
medias.
setDesvioPadrao(desvio
);
medias.
setMediaGlobalNasEscolas(mediaEscolas
);
medias.
setMediaGlobalNosCursos(mediaCursos
);
medias.
setTotal((int) total
);
medias.
setMediasGlobaisTable(mediasGlobaisTable
);
if(medias.
getAvaliacaoMediaArredondada() == 1
)
medias.
setColorMedia(ChartBuilderUtil.
COLOR_1_HEX);
else if(medias.
getAvaliacaoMediaArredondada() == 2
)
medias.
setColorMedia(ChartBuilderUtil.
COLOR_2_HEX);
else if(medias.
getAvaliacaoMediaArredondada() == 3
)
medias.
setColorMedia(ChartBuilderUtil.
COLOR_3_HEX);
else if(medias.
getAvaliacaoMediaArredondada() == 4
)
medias.
setColorMedia(ChartBuilderUtil.
COLOR_4_HEX);
else if(medias.
getAvaliacaoMediaArredondada() == 5
)
medias.
setColorMedia(ChartBuilderUtil.
COLOR_5_HEX);
}
public static MediaGlobalCursoPergunta getMediaCursoPergunta
(QuestionariosAlunosReport report,
1.5.0/docs/api/java/lang/String.html">String codigoCurso,
1.5.0/docs/api/java/lang/String.html">String anoLectivo,
1.5.0/docs/api/java/lang/String.html">String numeroPergunta,
1.5.0/docs/api/java/lang/String.html">String[] periodos
)
{
1.5.0/docs/api/java/lang/String.html">String key = codigoCurso +
"-" + anoLectivo +
"-" + numeroPergunta
;
if(report.
getMediasPerguntaNoCurso().
get(key
) !=
null)
return report.
getMediasPerguntaNoCurso().
get(key
);
//String degreesQuery = QueryDaoUtils.createDegreesQuery(degrees,"curso",true);
1.5.0/docs/api/java/lang/String.html">String periodosQuery = QueryDaoUtils.
createPeriodosQuery(periodos,
"quest",
true);
MediaGlobalCursoPergunta mediaGlobalCursoPergunta =
new MediaGlobalCursoPergunta
();
report.
getMediasPerguntaNoCurso().
put(key,mediaGlobalCursoPergunta
);
1.5.0/docs/api/javax/management/Query.html">Query query
;//*****CRIAR REPOSTAS DO GRUPO DOCENTE*****///
query = AbstractDao.
getCurrentSession().
createQuery("" +
"SELECT " +
"avg(fc.intResposta) as media," +
"std(fc.intResposta) as desvio," +
"count(fc.id) as total, " +
"avg(fc.tempoLevado) as tempoMedioLevado," +
"prgp.pergunta, " +
"curso.nomeCurso, " +
"count(distinct unit.codigo) " +
"FROM " + OlapStarFactQuestionarioAnswer.
class.
getName() +
" fc " +
"JOIN fc.olapPergunta prgp " +
"JOIN fc.olapTipologia tipo " +
"JOIN fc.olapQuestionario quest " +
"JOIN fc.olapCurso curso " +
"JOIN fc.olapUnidade unit " +
"JOIN fc.olapTimeLine timeLine " +
"where " +
" curso.codigoCurso = :codigoCurso " +
//"and quest.semestre = :semestre " +
"and quest.ano = :ano " +
"and prgp.numero = :numero " +
"and timeLine.nome = '" + PedagogicoAlunosProcessor.
getHistoryDriveConstraintStatic() +
"' " +
//degreesQuery +
periodosQuery
);
query.
setString("codigoCurso",codigoCurso
);
//query.setString("semestre",semestre);
query.
setString("ano",anoLectivo
);
query.
setString("numero",numeroPergunta
);
5+0%2Fdocs%2Fapi+Object">Object[] result =
(5+0%2Fdocs%2Fapi+Object">Object[]) query.
uniqueResult();
mediaGlobalCursoPergunta.
numeroPergunta = numeroPergunta
;
mediaGlobalCursoPergunta.
pergunta =
(1.5.0/docs/api/java/lang/String.html">String) result
[4
];
mediaGlobalCursoPergunta.
codigoCurso = codigoCurso
;
mediaGlobalCursoPergunta.
nomeCurso =
(1.5.0/docs/api/java/lang/String.html">String) result
[5
];
mediaGlobalCursoPergunta.
media =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[0
];
mediaGlobalCursoPergunta.
desvio =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[1
];
mediaGlobalCursoPergunta.
total =
((1.5.0/docs/api/java/lang/Long.html">Long) result
[2
]).
intValue();
mediaGlobalCursoPergunta.
tempoLevadoMedia =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[3
];
mediaGlobalCursoPergunta.
numeroUnidades =
((1.5.0/docs/api/java/lang/Long.html">Long) result
[6
]).
intValue();
return mediaGlobalCursoPergunta
;
}
public static MediaGlobalCursoGrupo getMediaCursoGrupo
(QuestionariosAlunosReport report,
1.5.0/docs/api/java/lang/String.html">String codigoCurso,
1.5.0/docs/api/java/lang/String.html">String anoLectivo,
1.5.0/docs/api/java/lang/String.html">String grupo,
1.5.0/docs/api/java/lang/String.html">String subGrupo,
1.5.0/docs/api/java/lang/String.html">String[] periodos
)
{
1.5.0/docs/api/java/lang/String.html">String key = codigoCurso +
"-" + anoLectivo +
"-" +
(grupo ==
null ? "_" : grupo
) +
"-" +
(subGrupo ==
null ? "_" : subGrupo
);
if(report.
getMediasGrupoNoCurso().
get(key
) !=
null)
return report.
getMediasGrupoNoCurso().
get(key
);
//String degreesQuery = QueryDaoUtils.createDegreesQuery(degrees,"curso",true);
1.5.0/docs/api/java/lang/String.html">String periodosQuery = QueryDaoUtils.
createPeriodosQuery(periodos,
"quest",
true);
MediaGlobalCursoGrupo mediaGlobalCursoGrupo =
new MediaGlobalCursoGrupo
();
report.
getMediasGrupoNoCurso().
put(key,mediaGlobalCursoGrupo
);
1.5.0/docs/api/javax/management/Query.html">Query query
;//*****CRIAR REPOSTAS DO GRUPO DOCENTE*****///
query = AbstractDao.
getCurrentSession().
createQuery("" +
"SELECT " +
"avg(fc.intResposta) as media," +
"std(fc.intResposta) as desvio," +
"count(fc.id) as total, " +
"avg(fc.tempoLevado) as tempoMedioLevado," +
"curso.nomeCurso, " +
"count(distinct unit.codigo) " +
"FROM " + OlapStarFactQuestionarioAnswer.
class.
getName() +
" fc " +
"JOIN fc.olapPergunta prgp " +
"JOIN fc.olapTipologia tipo " +
"JOIN fc.olapQuestionario quest " +
"JOIN fc.olapCurso curso " +
"JOIN fc.olapUnidade unit " +
"JOIN fc.olapTimeLine timeLine " +
"where " +
" curso.codigoCurso = :codigoCurso " +
//"and quest.semestre = :semestre " +
"and quest.ano = :ano " +
"and timeLine.nome = '" + PedagogicoAlunosProcessor.
getHistoryDriveConstraintStatic() +
"' " +
(grupo ==
null ? "" :
" and prgp.grupoCode = :grupoCode ") +
(subGrupo ==
null ? "" :
" and prgp.subGrupoCode = :subGrupoCode ") +
//degreesQuery +
periodosQuery
);
query.
setString("codigoCurso",codigoCurso
);
//query.setString("semestre",semestre);
query.
setString("ano",anoLectivo
);
if(grupo
!=
null)
query.
setString("grupoCode",grupo
);
if(subGrupo
!=
null)
query.
setString("subGrupoCode",subGrupo
);
5+0%2Fdocs%2Fapi+Object">Object[] result =
(5+0%2Fdocs%2Fapi+Object">Object[]) query.
uniqueResult();
mediaGlobalCursoGrupo.
grupo = grupo
;
mediaGlobalCursoGrupo.
codigoCurso = codigoCurso
;
mediaGlobalCursoGrupo.
nomeCurso =
(1.5.0/docs/api/java/lang/String.html">String) result
[4
];
mediaGlobalCursoGrupo.
media =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[0
];
mediaGlobalCursoGrupo.
desvio =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[1
];
mediaGlobalCursoGrupo.
total =
((1.5.0/docs/api/java/lang/Long.html">Long) result
[2
]).
intValue();
mediaGlobalCursoGrupo.
tempoLevadoMedia =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[3
];
mediaGlobalCursoGrupo.
numeroUnidades =
((1.5.0/docs/api/java/lang/Long.html">Long) result
[5
]).
intValue();
return mediaGlobalCursoGrupo
;
}
public static MediaGlobalEscolaPergunta getMediaEscolaPergunta
(QuestionariosAlunosReport report,
1.5.0/docs/api/java/lang/String.html">String codigoEscola,
1.5.0/docs/api/java/lang/String.html">String anoLectivo,
1.5.0/docs/api/java/lang/String.html">String numeroPergunta,
1.5.0/docs/api/java/lang/String.html">String[] periodos ,
1.5.0/docs/api/java/lang/String.html">String[] degrees
)
{
1.5.0/docs/api/java/lang/String.html">String key = codigoEscola +
"-" + anoLectivo +
"-" + numeroPergunta
;
if(report.
getMediasGrupoNaEscola().
get(key
) !=
null)
return report.
getMediasPerguntaNaEscola().
get(key
);
1.5.0/docs/api/java/lang/String.html">String degreesQuery = QueryDaoUtils.
createDegreesQuery(degrees,
"curso",
true);
1.5.0/docs/api/java/lang/String.html">String periodosQuery = QueryDaoUtils.
createPeriodosQuery(periodos,
"quest",
true);
MediaGlobalEscolaPergunta mediaGlobalEscolaPergunta =
new MediaGlobalEscolaPergunta
();
report.
getMediasPerguntaNaEscola().
put(key,mediaGlobalEscolaPergunta
);
1.5.0/docs/api/javax/management/Query.html">Query query
;//*****CRIAR REPOSTAS DO GRUPO DOCENTE*****///
query = AbstractDao.
getCurrentSession().
createQuery("" +
"SELECT " +
"avg(fc.intResposta) as media," +
"std(fc.intResposta) as desvio," +
"count(fc.id) as total, " +
"avg(fc.tempoLevado) as tempoMedioLevado," +
"curso.nomeInstituicao, " +
"prgp.pergunta," +
"count(distinct unit.codigo) " +
"FROM " + OlapStarFactQuestionarioAnswer.
class.
getName() +
" fc " +
"JOIN fc.olapPergunta prgp " +
"JOIN fc.olapTipologia tipo " +
"JOIN fc.olapQuestionario quest " +
"JOIN fc.olapCurso curso " +
"JOIN fc.olapUnidade unit " +
"JOIN fc.olapTimeLine timeLine " +
"where " +
" curso.codigoInstituicao = :codigoInstituicao " +
//"and quest.semestre = :semestre " +
"and quest.ano = :ano " +
"and prgp.numero = :numero " +
"and timeLine.nome = '" + PedagogicoAlunosProcessor.
getHistoryDriveConstraintStatic() +
"' " +
degreesQuery +
periodosQuery
);
query.
setString("codigoInstituicao",codigoEscola
);
//query.setString("semestre",semestre);
query.
setString("ano",anoLectivo
);
query.
setString("numero",numeroPergunta
);
5+0%2Fdocs%2Fapi+Object">Object[] result =
(5+0%2Fdocs%2Fapi+Object">Object[]) query.
uniqueResult();
mediaGlobalEscolaPergunta.
numeroPergunta = numeroPergunta
;
mediaGlobalEscolaPergunta.
pergunta =
(1.5.0/docs/api/java/lang/String.html">String) result
[5
];
mediaGlobalEscolaPergunta.
codigoEscola = codigoEscola
;
mediaGlobalEscolaPergunta.
nomeDaEscola =
(1.5.0/docs/api/java/lang/String.html">String) result
[4
];
mediaGlobalEscolaPergunta.
media =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[0
];
mediaGlobalEscolaPergunta.
desvio =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[1
];
mediaGlobalEscolaPergunta.
total =
((1.5.0/docs/api/java/lang/Long.html">Long) result
[2
]).
intValue();
mediaGlobalEscolaPergunta.
tempoLevadoMedia =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[3
];
mediaGlobalEscolaPergunta.
numeroUnidades =
((1.5.0/docs/api/java/lang/Long.html">Long) result
[6
]).
intValue();
return mediaGlobalEscolaPergunta
;
}
public static MediaGlobalEscolaGrupo getMediaEscolaGrupo
(QuestionariosAlunosReport report,
1.5.0/docs/api/java/lang/String.html">String codigoEscola,
1.5.0/docs/api/java/lang/String.html">String anoLectivo,
1.5.0/docs/api/java/lang/String.html">String grupo,
1.5.0/docs/api/java/lang/String.html">String subGrupo,
1.5.0/docs/api/java/lang/String.html">String[] periodos ,
1.5.0/docs/api/java/lang/String.html">String[] degrees
)
{
1.5.0/docs/api/java/lang/String.html">String key = codigoEscola +
"-" + anoLectivo +
"-" +
(grupo ==
null ? "_" : grupo
) +
"-" +
(subGrupo ==
null ? "_" : subGrupo
);
if(report.
getMediasGrupoNaEscola().
get(key
) !=
null)
return report.
getMediasGrupoNaEscola().
get(key
);
1.5.0/docs/api/java/lang/String.html">String degreesQuery = QueryDaoUtils.
createDegreesQuery(degrees,
"curso",
true);
1.5.0/docs/api/java/lang/String.html">String periodosQuery = QueryDaoUtils.
createPeriodosQuery(periodos,
"quest",
true);
MediaGlobalEscolaGrupo mediaGlobalEscolaGrupo =
new MediaGlobalEscolaGrupo
();
report.
getMediasGrupoNaEscola().
put(key,mediaGlobalEscolaGrupo
);
1.5.0/docs/api/javax/management/Query.html">Query query
;//*****CRIAR REPOSTAS DO GRUPO DOCENTE*****///
query = AbstractDao.
getCurrentSession().
createQuery("" +
"SELECT " +
"avg(fc.intResposta) as media," +
"std(fc.intResposta) as desvio," +
"count(fc.id) as total, " +
"avg(fc.tempoLevado) as tempoMedioLevado," +
"curso.nomeInstituicao, " +
"count(distinct unit.codigo) " +
"FROM " + OlapStarFactQuestionarioAnswer.
class.
getName() +
" fc " +
"JOIN fc.olapPergunta prgp " +
"JOIN fc.olapTipologia tipo " +
"JOIN fc.olapQuestionario quest " +
"JOIN fc.olapCurso curso " +
"JOIN fc.olapUnidade unit " +
"JOIN fc.olapTimeLine timeLine " +
"where " +
"curso.codigoInstituicao = :codigoInstituicao " +
//"and quest.semestre = :semestre " +
"and quest.ano = :ano " +
"and timeLine.nome = '" + PedagogicoAlunosProcessor.
getHistoryDriveConstraintStatic() +
"' " +
(grupo ==
null ? "" :
" and prgp.grupoCode = :grupoCode ") +
(subGrupo ==
null ? "" :
" and prgp.subGrupoCode = :subGrupoCode ") +
degreesQuery +
periodosQuery
);
query.
setString("codigoInstituicao",codigoEscola
);
//query.setString("semestre",semestre);
query.
setString("ano",anoLectivo
);
if(grupo
!=
null)
query.
setString("grupoCode",grupo
);
if(subGrupo
!=
null)
query.
setString("subGrupoCode",subGrupo
);
5+0%2Fdocs%2Fapi+Object">Object[] result =
(5+0%2Fdocs%2Fapi+Object">Object[]) query.
uniqueResult();
mediaGlobalEscolaGrupo.
grupo = grupo
;
mediaGlobalEscolaGrupo.
codigoEscola = codigoEscola
;
mediaGlobalEscolaGrupo.
nomeDaEscola =
(1.5.0/docs/api/java/lang/String.html">String) result
[4
];
mediaGlobalEscolaGrupo.
media =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[0
];
mediaGlobalEscolaGrupo.
desvio =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[1
];
mediaGlobalEscolaGrupo.
total =
((1.5.0/docs/api/java/lang/Long.html">Long) result
[2
]).
intValue();
mediaGlobalEscolaGrupo.
tempoLevadoMedia =
(1.5.0/docs/api/java/lang/Double.html">Double) result
[3
];
mediaGlobalEscolaGrupo.
numeroUnidades =
((1.5.0/docs/api/java/lang/Long.html">Long) result
[5
]).
intValue();
return mediaGlobalEscolaGrupo
;
}
public static class MediaGlobalCurso
extends MediaGlobalResult
{
public 1.5.0/docs/api/java/lang/String.html">String nomeCurso
;
public 1.5.0/docs/api/java/lang/String.html">String codigoCurso
;
public int numeroUnidades
;
}
public static class MediaGlobalEscola
extends MediaGlobalResult
{
public 1.5.0/docs/api/java/lang/String.html">String nomeDaEscola
;
public 1.5.0/docs/api/java/lang/String.html">String codigoEscola
;
public int numeroUnidades
;
}
public static class MediaGlobalEscolaPergunta
extends MediaGlobalEscola
{
public 1.5.0/docs/api/java/lang/String.html">String numeroPergunta
;
public 1.5.0/docs/api/java/lang/String.html">String pergunta
;
}
public static class MediaGlobalEscolaGrupo
extends MediaGlobalEscola
{
public 1.5.0/docs/api/java/lang/String.html">String grupo
;
}
public static class MediaGlobalCursoPergunta
extends MediaGlobalCurso
{
public 1.5.0/docs/api/java/lang/String.html">String numeroPergunta
;
public 1.5.0/docs/api/java/lang/String.html">String pergunta
;
}
public static class MediaGlobalCursoGrupo
extends MediaGlobalCurso
{
public 1.5.0/docs/api/java/lang/String.html">String grupo
;
}
public static class MediaGlobalResult
{
public double media
;
public double desvio
;
public int total
;
public double tempoLevadoMedia
;
}
}