package pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors;
import jomm.dao.impl.AbstractDao;
import jomm.utils.PdfUtils;
import org.apache.fop.apps.FOPException;
import org.apache.log4j.Logger;
import org.dom4j.DocumentException;
import org.hibernate.Query;
import pt.estgp.estgweb.utils.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
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.services.questionarios.PedagogicoAlunosProcessor;
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.queries.*;
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.reportdomains.DocenteReport;
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.reportdomains.EntityEvaluated;
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.reportdomains.QuestionariosAlunosReport;
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.utils.*;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.utils.Dom4jUtil;
import pt.estgp.estgweb.utils.DatesWebUtils;
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMSource;
import java.awt.*;
import java.io.*;
import java.text.DecimalFormat;
import java.util.*;
import java.util.List;
/**
* Created by jorgemachado on 05/11/16.
*/
public class DocenteReportGenerator
extends ReportAlunosGenerator
{
int provavelAvaliadaDuasVezes =
0;
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(DocenteReportGenerator.
class);
public DocenteReportGenerator
(1.5.0/docs/api/java/lang/String.html">String anoLectivo,
1.5.0/docs/api/java/lang/String.html">String[] periodos,
1.5.0/docs/api/java/lang/String.html">String[] degrees
) {
super(anoLectivo, periodos, degrees
);
}
public DocenteReportGenerator
()
{
super(null,
null,
null);
}
public static void main
(1.5.0/docs/api/java/lang/String.html">String[] args
) throws 1.5.0/docs/api/java/io/IOException.html">IOException, DocumentException,
1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException, FOPException
{
AbstractDao.
getCurrentSession().
beginTransaction();
//String teacherCode = "44451";
//String teacherCode = "20122";
//String teacherCode = "22169";
1.5.0/docs/api/java/lang/String.html">String teacherCode =
"20128";
1.5.0/docs/api/java/lang/String.html">String anoLectivo =
"201516";
1.5.0/docs/api/java/lang/String.html">String[] periodos =
new 1.5.0/docs/api/java/lang/String.html">String[]{"S2",
"T3",
"T4",
"A"};
//String[] periodos = new String[]{"S2,A,T3,T4"};
1.5.0/docs/api/java/lang/String.html">String[] degrees =
new 1.5.0/docs/api/java/lang/String.html">String[]{"L",
"M",
"T",
"E"};
new DocenteReportGenerator
(anoLectivo,periodos,degrees
).
processTeacher(teacherCode,
new 1.5.0/docs/api/java/io/File.html">File(Globals.
TMP_DIR),
true);
/*
teacherCode = "66587";
new DocenteReportGenerator(anoLectivo,periodos,degrees).processTeacher(teacherCode,new File(Globals.TMP_DIR));
teacherCode = "44451";
new DocenteReportGenerator(anoLectivo,periodos,degrees).processTeacher(teacherCode,new File(Globals.TMP_DIR));
teacherCode = "20115";
new DocenteReportGenerator(anoLectivo,periodos,degrees).processTeacher(teacherCode,new File(Globals.TMP_DIR));
teacherCode = "66623";
new DocenteReportGenerator(anoLectivo,periodos,degrees).processTeacher(teacherCode,new File(Globals.TMP_DIR));
teacherCode = "22179";
new DocenteReportGenerator(anoLectivo,periodos,degrees).processTeacher(teacherCode,new File(Globals.TMP_DIR));
*/
//teacherCode = "20122";
//processTeacher(teacherCode,anoLectivo,periodos,degrees);
//teacherCode = "20051";
//processTeacher(teacherCode,anoLectivo,periodos,degrees);
//teacherCode = "66587";
//processTeacher(teacherCode,anoLectivo,periodos,degrees);
//teacherCode = "20114";
//processTeacher(teacherCode,anoLectivo,periodos,degrees);
AbstractDao.
getCurrentSession().
getTransaction().
commit();
}
public DocenteReport processTeacher
(1.5.0/docs/api/java/lang/String.html">String teacherCode,
1.5.0/docs/api/java/io/File.html">File reportDocenteFolder
) throws 1.5.0/docs/api/java/io/IOException.html">IOException, DocumentException,
1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException, FOPException
{
return processTeacher
(teacherCode, reportDocenteFolder,
false);
}
/**
* return tmpPath with report
* @param teacherCode
* @return
* @throws IOException
* @throws DocumentException
* @throws TransformerException
* @throws FOPException
*/
public DocenteReport processTeacher
(1.5.0/docs/api/java/lang/String.html">String teacherCode,
1.5.0/docs/api/java/io/File.html">File reportDocenteFolder,
boolean ommitName
) throws 1.5.0/docs/api/java/io/IOException.html">IOException, DocumentException,
1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException, FOPException
{
provavelAvaliadaDuasVezes =
0;
if(anoLectivo ==
null || periodos ==
null || degrees ==
null)
throw new 1.5.0/docs/api/java/lang/RuntimeException.html">RuntimeException("O ano letivo, os periodos e os graus não estão definidos");
//todo ver se ha ocorrencias de respostas do docente neste ano se não houver devolver questionario com info de nao haver resultados para este docente
DocenteReport docenteReport = getDocenteReport
(teacherCode,ommitName
);
if(docenteReport ==
null)
{
1.5.0/docs/api/java/lang/String.html">String msg =
" Docente " + teacherCode +
" nao tem respostas nestas condições ";
logger.
warn(msg
);
serviceLogWarn
(msg
);
return null;
}
ChartBuilderUtil.
createChartTiposAlunos(docenteReport,
"tiposAlunosTmp");
ChartBuilderUtil.
createChartTaxaRespostas(docenteReport,
"taxaRespostasTmp");
ChartBuilderUtil.
createChartTaxaParticipacao(docenteReport,
"taxaParticipacaoTmp");
ChartBuilderUtil.
createChartUnidadesContribuicao(docenteReport,
"unidadesContribuicao");
//DocenteReport.RespostasChart respostasChart = ChartBuilderUtil.createChartRespostasPergunta("A sua pontualidade", new int[]{2, 4, 5, 3, 1}, "pontualidadeTmp");
//docenteReport.getRespostasCharts().add(respostasChart);
1.5.0/docs/api/java/lang/String.html">String tmpPath = generatePdfReport
(docenteReport,reportDocenteFolder,ommitName
);
docenteReport.
setPathGeneratedPdfTemp(tmpPath
);
return docenteReport
;
}
private 1.5.0/docs/api/java/lang/String.html">String generatePdfReport
(DocenteReport docenteReport,
1.5.0/docs/api/java/io/File.html">File reportDocenteFolder,
boolean ommitName
) throws DocumentException,
1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException,
1.5.0/docs/api/java/io/IOException.html">IOException, FOPException
{
if(!reportDocenteFolder.
exists())
{
reportDocenteFolder.
mkdirs();
}
1.5.0/docs/api/java/lang/String.html">String startPath = reportDocenteFolder.
getAbsolutePath() +
1.5.0/docs/api/java/io/File.html">File.
separator +
"reportDocente" + docenteReport.
getNumeroDocente();
1.5.0/docs/api/java/lang/String.html">String path = startPath+
".pdf";
1.5.0/docs/api/java/io/FileOutputStream.html">FileOutputStream out =
new 1.5.0/docs/api/java/io/FileOutputStream.html">FileOutputStream(path
);
Map
<String,Object
> params =
new HashMap
<String,Object
>();
params.
put("site", Globals.
SERVICE_URL);
params.
put("updateDate", DatesWebUtils.
getStringFromDate(new 5+0%2Fdocs%2Fapi+Date">Date()));
org.
w3c.
dom.
5+0%2Fdocs%2Fapi+Document">Document dom2 = docenteReport.
serialize();
//Dom4jUtil.writeSout(dom2);
1.5.0/docs/api/java/io/File.html">File xmlFile =
new java.
io.
1.5.0/docs/api/java/io/File.html">File(startPath +
".xml");
Dom4jUtil.
write(dom2,xmlFile
);
if(ommitName
)
{
1.5.0/docs/api/java/io/File.html">File xmlFileOmmit =
new java.
io.
1.5.0/docs/api/java/io/File.html">File(startPath +
"-ommit.xml");
1.5.0/docs/api/java/io/FileReader.html">FileReader fr =
new 1.5.0/docs/api/java/io/FileReader.html">FileReader(xmlFile
);
1.5.0/docs/api/java/io/FileWriter.html">FileWriter frOut =
new 1.5.0/docs/api/java/io/FileWriter.html">FileWriter(xmlFileOmmit
);
1.5.0/docs/api/java/lang/String.html">String s
;
try {
1.5.0/docs/api/java/io/BufferedReader.html">BufferedReader br =
new 1.5.0/docs/api/java/io/BufferedReader.html">BufferedReader(fr
);
while ((s = br.
readLine()) !=
null)
{
s = s.
replaceAll(docenteReport.
getNomeDocente(),
"Docente Fictício");
s = s.
replaceAll(docenteReport.
getNumeroDocente(),
"0000");
int i =
1;
for(UnidadeStats stat : docenteReport.
getUnidadesStats())
{
s = s.
replaceAll(stat.
getNomeCurso(),
"Curso Fictício");
s = s.
replaceAll(stat.
getCodigoCurso(),
"0000");
s = s.
replaceAll(stat.
getNomeUnidade(),
"Unidade " + i
);
s = s.
replaceAll(stat.
getCodigoUnidade(),
"000" + i
);
i++
;
}
// do something with the resulting line
frOut.
write(s
);
}
frOut.
flush();
frOut.
close();
fr.
close();
dom2 = Dom4jUtil.
toW3c(Dom4jUtil.
parse(xmlFileOmmit
));
}catch(1.5.0/docs/api/java/lang/Exception.html">Exception e
)
{
}
}
PdfUtils.
setAuthority("Relatório de Avaliação Pedagógica - Relatório Docente - " +
docenteReport.
getNomeDocente() +
" (" + docenteReport.
getNumeroDocente() +
" ) " +
"- Ano letivo " + docenteReport.
getAnoLectivo() +
" - Periodos " + docenteReport.
getSemestres().
toString() +
"" +
" Tipos de Curso - " + docenteReport.
getDegrees().
toString(),
docenteReport.
getNomeDocente(),
"Avaliação Pedagógica Docentes, Inqueritos aos Alunos");
PdfUtils.
createPdfFromXml(new 1.5.0/docs/api/javax/xml/transform/dom/DOMSource.html">DOMSource(dom2
),
"pt/estgp/estgweb/services/questionarios/pedagogico/reportprocessors/xsl/docenteReport.fo.xsl", out, params
);
out.
flush();
out.
close();
return path
;
}
private DocenteReport getDocenteReport
(1.5.0/docs/api/java/lang/String.html">String teacherCode,
boolean ommitNames
)
{
//AbstractDao.getCurrentSession().beginTransaction();
User u = DaoFactory.
getUserDaoImpl().
loadBySigesCode(1.5.0/docs/api/java/lang/Integer.html">Integer.
parseInt(teacherCode
));
DocenteReport docenteReport =
new DocenteReport
();
docenteReport.
setNomeDocente(u.
getName());
docenteReport.
setNumeroDocente(teacherCode
);
docenteReport.
setAnoLectivo(DatesUtils.
getImportYearFormatted(anoLectivo
));
docenteReport.
setSemestres(ReportUtils.
getFormatedSemestres(periodos
));
docenteReport.
setDegrees(ReportUtils.
getFormatedDegrees(degrees
));
int responderam = AlunosQueryDao.
countAlunosQueResponderamAoDocente(teacherCode, anoLectivo, docenteReport, periodos, degrees
);
//if(responderam == 0)
// return null;
QuestionariosQueryDao.
countQuestionariosRespostasAoDocente(teacherCode, anoLectivo, docenteReport, periodos, degrees
);
if(responderam
> 0
)
{
AlunosQueryDao.
countTiposAlunosComRespostasAoDocente(teacherCode, anoLectivo, docenteReport, periodos, degrees
);
AlunosQueryDao.
countIdadesAlunosComRespostasAoDocente(teacherCode, anoLectivo, docenteReport, periodos, degrees
);
//TABELAS
QuestionariosQueryDao.
createDataTableIdades(docenteReport,
"Alunos");
QuestionariosQueryDao.
createDataTableLocalidadesAoDocente(docenteReport, teacherCode, anoLectivo, periodos, degrees,
"Alunos");
}
UnidadesQueryDao.
createTableTaxaRespostaUnidadeAoDocente(docenteReport, teacherCode, anoLectivo, periodos, degrees
);
if(responderam
> 0
)
{
List
<String
> codigosCurso = QueryDaoUtils.
getCodigosCursoDocente(teacherCode, anoLectivo, periodos, degrees
);
List
<String
> codigosEscola = QueryDaoUtils.
getCodigosEscolaDocente(teacherCode, anoLectivo, periodos, degrees
);
docenteReport.
setDocentesNosCursos((int) QueryDaoUtils.
countDocentesNosCursos(codigosCurso, anoLectivo, periodos, degrees
));
docenteReport.
setDocentesNasEscolas((int) QueryDaoUtils.
countDocentesNasEscolas(codigosEscola, anoLectivo, periodos, degrees
));
docenteReport.
setUnidadesNosCursos((int) QueryDaoUtils.
countUnidadesNosCursos(codigosCurso, anoLectivo, periodos, degrees
));
docenteReport.
setUnidadesNasEscolas((int) QueryDaoUtils.
countUnidadesNasEscolas(codigosEscola, anoLectivo, periodos, degrees
));
criarGraficosRespostasAgregadas
(
new 1.5.0/docs/api/java/lang/String.html">String[]{teacherCode
},
EntityEvaluated.
DOCENTE,
anoLectivo,
docenteReport,
codigosCurso,
codigosEscola,
0,
docenteReport.
getRespostasAgregadasGrupoDocente().
getRespostasAgregadasChartTable(),
docenteReport.
getRespostasAgregadasGrupoDocente(),
PerguntasGrupoQueryDao.
GRUPO_DOCENTE_CODE_PERGUNTAS,
null,
periodos, degrees,
true);
/*
criarGraficosRespostasAgregadas(
new String[]{teacherCode},
EntityEvaluated.DOCENTE,
anoLectivo,
docenteReport,
codigosCurso,
codigosEscola,
2000,
docenteReport.getRespostasAgregadasGrupoDocente().getRespostasAgregadasChartTable2Secs(),
docenteReport.getRespostasAgregadasGrupoDocente(),
PerguntasGrupoQueryDao.GRUPO_DOCENTE_CODE_PERGUNTAS,null,
periodos,degrees,false);
*/
criarGraficosRespostasAgregadas
(
new 1.5.0/docs/api/java/lang/String.html">String[]{teacherCode
},
EntityEvaluated.
DOCENTE,
anoLectivo,
docenteReport,
codigosCurso,
codigosEscola,
0,
docenteReport.
getRespostasAgregadasGrupoUnidade().
getRespostasAgregadasChartTable(),
docenteReport.
getRespostasAgregadasGrupoUnidade(),
PerguntasGrupoQueryDao.
GRUPO_UNIDADE_CODE_PERGUNTAS,
null,
periodos,degrees,
true);
/*NOVO**/
criarGraficosRespostasAgregadas
(
new 1.5.0/docs/api/java/lang/String.html">String[]{teacherCode
},
EntityEvaluated.
DOCENTE,
anoLectivo,
docenteReport,
codigosCurso,
codigosEscola,
0,
docenteReport.
getRespostasAgregadasGrupoSalas().
getRespostasAgregadasChartTable(),
docenteReport.
getRespostasAgregadasGrupoSalas(),
PerguntasGrupoQueryDao.
GRUPO_SALAS_CODE_PERGUNTAS,
null,
periodos,degrees,
true);
/*
criarGraficosRespostasAgregadas(
new String[]{teacherCode},
EntityEvaluated.DOCENTE,
anoLectivo,
docenteReport,
codigosCurso,
codigosEscola,
0,
docenteReport.getRespostasAgregadasGrupoProjetoEstagio().getRespostasAgregadasChartTable(),
docenteReport.getRespostasAgregadasGrupoProjetoEstagio(),
PerguntasGrupoQueryDao.GRUPO_ESTAGIO_CODE_PERGUNTAS,null,
periodos,degrees,true);
criarGraficosRespostasAgregadas(
new String[]{teacherCode},
EntityEvaluated.DOCENTE,
anoLectivo,
docenteReport,
codigosCurso,
codigosEscola,
0,
docenteReport.getRespostasAgregadasGrupoEnsinoClinico().getRespostasAgregadasChartTable(),
docenteReport.getRespostasAgregadasGrupoEnsinoClinico(),
PerguntasGrupoQueryDao.GRUPO_ENSINO_CLINICO_CODE_PERGUNTAS,null,
periodos,degrees,true);
*/
/*
criarGraficosRespostasAgregadas(
new String[]{teacherCode},
EntityEvaluated.DOCENTE,
anoLectivo,
docenteReport,
codigosCurso,
codigosEscola,
2000,
docenteReport.getRespostasAgregadasGrupoUnidade().getRespostasAgregadasChartTable2Secs(),
docenteReport.getRespostasAgregadasGrupoUnidade(),
PerguntasGrupoQueryDao.GRUPO_UNIDADE_CODE_PERGUNTAS,null,
periodos,degrees,false);
*/
/*
criarGraficosRespostasAgregadas(
new String[]{teacherCode},
EntityEvaluated.DOCENTE,
anoLectivo,
docenteReport,
codigosCurso,
codigosEscola,
0,
docenteReport.getRespostasAgregadasGrupoDrelDocenteAluno().getRespostasAgregadasChartTable(),
docenteReport.getRespostasAgregadasGrupoDrelDocenteAluno(),
PerguntasGrupoQueryDao.GRUPO_DOCENTE_CODE_PERGUNTAS,
PerguntasGrupoQueryDao.GRUPO_DOCENTE_REL_ALUNO_CODE_PERGUNTAS,periodos,degrees,true);
criarGraficosRespostasAgregadas(
new String[]{teacherCode},
EntityEvaluated.DOCENTE,
anoLectivo,
docenteReport,
codigosCurso,
codigosEscola,
0,
docenteReport.getRespostasAgregadasGrupoDdocenteProf().getRespostasAgregadasChartTable(),
docenteReport.getRespostasAgregadasGrupoDdocenteProf(),
PerguntasGrupoQueryDao.GRUPO_DOCENTE_CODE_PERGUNTAS,
PerguntasGrupoQueryDao.GRUPO_DOCENTE_PROFISSIONALISMO_DOCENTE_CODE_PERGUNTAS,periodos,degrees,true);
*/
UnidadesQueryDao.
criarTabelasCadeirasDocente(teacherCode,
anoLectivo,
docenteReport,
0, periodos, degrees, docenteReport.
getUnidadesStats());
criaExtremeCharts
(docenteReport
);
criarProgressoesCharts
(docenteReport,codigosCurso,codigosEscola,degrees,periodos
);
criarAnaliseConjuntaDeUnidades
(docenteReport,ommitNames
);
criarAnaliseDimensionalGeral
(docenteReport
);
criarAvaliacaoGuiaoDesempenho
(docenteReport
);
}
//AbstractDao.getCurrentSession().getTransaction().commit();
return docenteReport
;
}
private void criarAnaliseDimensionalGeral
(DocenteReport report
)
{
1.5.0/docs/api/java/lang/String.html">String grupoRelAlunopropertyIndex = ConfigProperties.
getProperty("questionario.group.inverse." + PerguntasGrupoQueryDao.
GRUPO_DOCENTE_REL_ALUNO_CODE_PERGUNTAS);
1.5.0/docs/api/java/lang/String.html">String grupoRelAlunoLabel = ConfigProperties.
getProperty("questionario.group" + grupoRelAlunopropertyIndex +
".title");
1.5.0/docs/api/java/lang/String.html">String grupoProfDocentepropertyIndex = ConfigProperties.
getProperty("questionario.group.inverse." + PerguntasGrupoQueryDao.
GRUPO_DOCENTE_PROFISSIONALISMO_DOCENTE_CODE_PERGUNTAS);
1.5.0/docs/api/java/lang/String.html">String grupoProfDocenteLabel = ConfigProperties.
getProperty("questionario.group" + grupoProfDocentepropertyIndex +
".title");
double valores
[][] =
new double[][]
{
new double[]{
report.
getRespostasAgregadasGrupoDrelDocenteAluno().
getMediasGrupo().
getAvaliacaoMedia(),
report.
getRespostasAgregadasGrupoDrelDocenteAluno().
getMediasGrupo().
getMediaGlobalNosCursos() },
new double[]{
report.
getRespostasAgregadasGrupoDrelDocenteAluno().
getMediasGrupo().
getAvaliacaoMedia(),
report.
getRespostasAgregadasGrupoDdocenteProf().
getMediasGrupo().
getMediaGlobalNosCursos() }
};
1.5.0/docs/api/java/text/DecimalFormat.html">DecimalFormat df =
new 1.5.0/docs/api/java/text/DecimalFormat.html">DecimalFormat("#,##0.00");
DataTable tabelaDimensoesGeral =
new DataTable
();
DataTable.
Row header = tabelaDimensoesGeral.
addRowHeader();
header.
addColTextCenter("Dimensão");
header.
addColTextCenter("Média");
header.
addColTextCenter("Desvio");
header.
addColTextCenter("Cursos");
header.
addColTextCenter("Escolas");
DataTable.
Row rowRelAluno = tabelaDimensoesGeral.
addRowNormal();
rowRelAluno.
addColTextCenter(grupoRelAlunoLabel
);
rowRelAluno.
addColPercentageDefinedCenter(
df.
format(report.
getRespostasAgregadasGrupoDrelDocenteAluno().
getMediasGrupo().
getAvaliacaoMedia()),
report.
getRespostasAgregadasGrupoDrelDocenteAluno().
getMediasGrupo().
getPercentAvaliacaoMediaForTables(),
true);
rowRelAluno.
addColTextCenter(df.
format(report.
getRespostasAgregadasGrupoDrelDocenteAluno().
getMediasGrupo().
getDesvioPadrao()));
rowRelAluno.
addColPercentageDefinedCenter(
df.
format(report.
getRespostasAgregadasGrupoDrelDocenteAluno().
getMediasGrupo().
getMediaGlobalNosCursos()),
report.
getRespostasAgregadasGrupoDrelDocenteAluno().
getMediasGrupo().
getPercentMediaGlobalNosCursosForTables(),
true);
rowRelAluno.
addColPercentageDefinedCenter(
df.
format(report.
getRespostasAgregadasGrupoDrelDocenteAluno().
getMediasGrupo().
getMediaGlobalNasEscolas()),
report.
getRespostasAgregadasGrupoDrelDocenteAluno().
getMediasGrupo().
getPercentMediaGlobalNasEscolasForTables(),
true);
DataTable.
Row rowProfissionalismo = tabelaDimensoesGeral.
addRowNormal();
rowProfissionalismo.
addColTextCenter(grupoProfDocenteLabel
);
rowProfissionalismo.
addColPercentageDefinedCenter(
df.
format(report.
getRespostasAgregadasGrupoDdocenteProf().
getMediasGrupo().
getAvaliacaoMedia()),
report.
getRespostasAgregadasGrupoDdocenteProf().
getMediasGrupo().
getPercentAvaliacaoMediaForTables(),
true);
rowProfissionalismo.
addColTextCenter(df.
format(report.
getRespostasAgregadasGrupoDdocenteProf().
getMediasGrupo().
getDesvioPadrao()));
rowProfissionalismo.
addColPercentageDefinedCenter(
df.
format(report.
getRespostasAgregadasGrupoDdocenteProf().
getMediasGrupo().
getMediaGlobalNosCursos()),
report.
getRespostasAgregadasGrupoDdocenteProf().
getMediasGrupo().
getPercentMediaGlobalNosCursosForTables(),
true);
rowProfissionalismo.
addColPercentageDefinedCenter(
df.
format(report.
getRespostasAgregadasGrupoDdocenteProf().
getMediasGrupo().
getMediaGlobalNasEscolas()),
report.
getRespostasAgregadasGrupoDdocenteProf().
getMediasGrupo().
getPercentMediaGlobalNasEscolasForTables(),
true);
try {
1.5.0/docs/api/java/lang/String.html">String path = ChartBuilderUtil.
createBarChartBarsCategories(
new 1.5.0/docs/api/java/lang/String.html">String[]{"Docente",
"Curso"},
new 1.5.0/docs/api/java/lang/String.html">String[]{grupoRelAlunoLabel,grupoProfDocenteLabel
},
new 1.5.0/docs/api/java/awt/Color.html">Color[]{ChartBuilderUtil.
COLOR_SECTION_DIM_DARK,ChartBuilderUtil.
COLOR_SECTION_DIM},
new 1.5.0/docs/api/java/awt/Color.html">Color[]{1.5.0/docs/api/java/awt/Color.html">Color.
black,
1.5.0/docs/api/java/awt/Color.html">Color.
black},
valores,
0,
5,
"dimensoesGeral",300,40
);
report.
setDimensoesGeralChartAndTable(new ChartWithDataTable
("Dimensões Geral",
"", path, tabelaDimensoesGeral
));
} catch (1.5.0/docs/api/java/io/IOException.html">IOException e
)
{
e.
printStackTrace();
}
}
private void criarAnaliseConjuntaDeUnidades
(DocenteReport report,
boolean ommitCourse
)
{
1.5.0/docs/api/java/lang/String.html">String grupoRelAlunopropertyIndex = ConfigProperties.
getProperty("questionario.group.inverse." + PerguntasGrupoQueryDao.
GRUPO_DOCENTE_REL_ALUNO_CODE_PERGUNTAS);
1.5.0/docs/api/java/lang/String.html">String grupoRelAlunoLabel = ConfigProperties.
getProperty("questionario.group" + grupoRelAlunopropertyIndex +
".title");
1.5.0/docs/api/java/lang/String.html">String grupoProfDocentepropertyIndex = ConfigProperties.
getProperty("questionario.group.inverse." + PerguntasGrupoQueryDao.
GRUPO_DOCENTE_PROFISSIONALISMO_DOCENTE_CODE_PERGUNTAS);
1.5.0/docs/api/java/lang/String.html">String grupoProfDocenteLabel = ConfigProperties.
getProperty("questionario.group" + grupoProfDocentepropertyIndex +
".title");
DataTable tabelaDocenteUnidade =
new DataTable
();
DataTable tabelaRelDocenteProfDocente =
new DataTable
();
try {
1.5.0/docs/api/java/lang/String.html">String docenteUnidadePath =
super.
criarChartETabelaMediaGruposPorUnidade(
400,
40,
report.
getUnidadesStats(),
PerguntasGrupoQueryDao.
GRUPO_DOCENTE_CODE_PERGUNTAS,
null,
PerguntasGrupoQueryDao.
GRUPO_UNIDADE_CODE_PERGUNTAS,
null,
tabelaDocenteUnidade,
"docenteUnidade",
new 1.5.0/docs/api/java/awt/Color.html">Color[]{ChartBuilderUtil.
COLOR_SECTION_BLUE_DARK, ChartBuilderUtil.
COLOR_SECTION_GREEN_DARK},
new 1.5.0/docs/api/java/awt/Color.html">Color[]{1.5.0/docs/api/java/awt/Color.html">Color.
black,
1.5.0/docs/api/java/awt/Color.html">Color.
black},
ommitCourse
);
/*
String relDocenteProfDocentePath = criarChartETabelaMediaGruposPorUnidade(
400,
40,
report.getUnidadesStats(),
PerguntasGrupoQueryDao.GRUPO_DOCENTE_CODE_PERGUNTAS,
PerguntasGrupoQueryDao.GRUPO_DOCENTE_REL_ALUNO_CODE_PERGUNTAS,
PerguntasGrupoQueryDao.GRUPO_DOCENTE_CODE_PERGUNTAS,
PerguntasGrupoQueryDao.GRUPO_DOCENTE_PROFISSIONALISMO_DOCENTE_CODE_PERGUNTAS,
tabelaRelDocenteProfDocente,
"relAlunoDocenteProfDocentePath",
new Color[]{ChartBuilderUtil.COLOR_SECTION_DIM_DARK, ChartBuilderUtil.COLOR_SECTION_DIM},
new Color[]{Color.black, Color.black}
);
*/
report.
setUnidadesAnalGrDocenteGrUnidadeChartAndTable(
new ChartWithDataTable
(
"Analise Conjunta de Unidades",
"Docente VS Unidade",
docenteUnidadePath,
tabelaDocenteUnidade
));
/*
report.setUnidadesAnalGrRelAlunoGrProfDoceChartAndTable(
new ChartWithDataTable("Analise Conjunta de Unidades",
grupoRelAlunoLabel + "VS" + grupoProfDocenteLabel,
relDocenteProfDocentePath,
tabelaRelDocenteProfDocente));
*/
} catch (1.5.0/docs/api/java/io/IOException.html">IOException e
) {
e.
printStackTrace();
}
}
private void criarAvaliacaoGuiaoDesempenho
(DocenteReport docenteReport
)
{
List
<UnidadeStats
> unidadeStatses = docenteReport.
getUnidadesStats();
DataTable dataTable =
new DataTable
();
DataTable.
Row rowHeader = dataTable.
addRowHeader();
rowHeader.
addColTextCenter("Cód. Unidade");
rowHeader.
addColTextCenter("Unidade Curricular").
setWidth("20%");
rowHeader.
addColTextCenter("Cód. Curso");
rowHeader.
addColTextCenter("Curso").
setWidth("20%");
rowHeader.
addColTextCenter("Ano");
rowHeader.
addColTextCenter("Periodo");
rowHeader.
addColTextCenter("resposta média (RM)");
rowHeader.
addColTextCenter("Número de inscritos");//aqui em vez de inscritos deveria ser respostas esperadas quando houver tipologias
rowHeader.
addColTextCenter("Número de respostas");
rowHeader.
addColTextCenter("Taxa de resposta (TR)");
rowHeader.
addColTextCenter("Taxa de resposta (RMxTR)");
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/util/Collections.html">Collections.
sort(unidadeStatses,
new Comparator
<UnidadeStats
>(){
@
1.5.0/docs/api/java/lang/Override.html">Override
public int compare
(UnidadeStats o1, UnidadeStats o2
)
{
int curso = o1.
getNomeCurso().
compareTo(o2.
getNomeCurso());
if(curso == 0
)
return o1.
getNomeUnidade().
compareTo(o2.
getNomeUnidade());
else return curso
;
}
});
double sumRMTR =
0;
double sumTR =
0;
for(UnidadeStats stats: unidadeStatses
)
{
//aqui é igual usar inscritos ou respostas esperadas porque como é apenas para um
//docente é esperado que os inscritos do docente sejam os mesmos que as respostas esperadas
//no curso é que pode ser diferente por causa de haver vários docentes
//caso se use tipologias temos de rever isto porque ai nesse caso o docente pode ter mais que
//uma resposta por aluno
if(stats.
getInscritos() != stats.
getRespostasEsperadas())
{
1.5.0/docs/api/java/lang/String.html">String msg =
"###UNIDADE: " + stats.
getCodigoUnidade() +
" " + stats.
getNomeUnidade() +
" " + stats.
getNomeCurso();
logger.
info(msg
);
serviceLogWarn
(msg
);
msg =
"PROVISORIO #################Docente$$$$$$$$$$$$$$$$$ repostas Esperadas != Inscritos";
logger.
warn(msg
);
serviceLogWarn
(msg
);
msg =
"#################Docente$$$$$$$$$$$$$$$$$ repostas " + stats.
getRespostasEsperadas() +
" != " + stats.
getInscritos();
logger.
warn(msg
);
serviceLogWarn
(msg
);
msg =
"#################provavelAvaliadaDuasVezes" + stats.
getCodigoUnidade() +
" " + stats.
getNomeUnidade() +
" " + stats.
getNomeCurso();
logger.
warn(msg
);
serviceLogWarn
(msg
);
provavelAvaliadaDuasVezes++
;
}
double TR =
(((double)stats.
getRespostas()/
(double)stats.
getInscritos()));
double RM = stats.
getUnidadeStatsGrupoDocente().
getMediasGrupo().
getAvaliacaoMedia();
double RMTR = RM
* TR
;
sumRMTR += RMTR
;
sumTR += TR
;
DataTable.
Row rowUnit = dataTable.
addRowNormal();
rowUnit.
addColTextCenter(stats.
getCodigoUnidade());
rowUnit.
addColTextCenter(stats.
getNomeUnidade());
rowUnit.
addColTextCenter(stats.
getCodigoCurso());
rowUnit.
addColTextCenter(stats.
getNomeCurso());
rowUnit.
addColTextCenter(docenteReport.
getAnoLectivo());
rowUnit.
addColTextCenter(stats.
getSemestre());
rowUnit.
addColNumberRight(df.
format(RM
));
rowUnit.
addColNumberRight("" + stats.
getRespostasEsperadas());//ou inscritos se nao houver tipologias
rowUnit.
addColNumberRight("" + stats.
getRespostas());
rowUnit.
addColNumberRight(df.
format(TR
));
rowUnit.
addColNumberRight(df.
format(RMTR
));
}
double media = sumRMTR/sumTR
;
DataTable.
Row rowFooter = dataTable.
addRowFooter();
DataTable.
Row.
Col soma = rowFooter.
addColTextRight("Somatório das Parcelas");
soma.
setColspan(9
);
soma.
setFontWeight("bold");
DataTable.
Row.
Col sumTRCol = rowFooter.
addColNumberRight(df.
format(sumTR
));
sumTRCol.
setFontWeight("bold");
DataTable.
Row.
Col sumRMTRCol = rowFooter.
addColNumberRight(df.
format(sumRMTR
));
sumRMTRCol.
setFontWeight("bold");
docenteReport.
setDocenteAvaliacaoDesempenhoTR(sumTR
);
docenteReport.
setDocenteAvaliacaoDesempenhoRMTR(sumRMTR
);
docenteReport.
setDocenteAvaliacaoDesempenhoMediaPeriodo(media
);
docenteReport.
setDocenteAvaliacaoDesempenhoTRPrint(df.
format(sumTR
));
docenteReport.
setDocenteAvaliacaoDesempenhoRMTRPrint(df.
format(sumRMTR
));
docenteReport.
setDocenteAvaliacaoDesempenhoMediaPeriodoPrint(df.
format(media
));
docenteReport.
setDocenteAvaliacaoDesempenhoTable(dataTable
);
}
private void criarProgressoesCharts
(DocenteReport docenteReport, List
<String
> codigosCursos, List
<String
> codigosEscolas,
1.5.0/docs/api/java/lang/String.html">String[] degrees,
1.5.0/docs/api/java/lang/String.html">String[] periodos
)
{
docenteReport.
progressaoAgregadasDocentesVsCurso = criarProgressoChartGrupo
(docenteReport, codigosCursos,PerguntasGrupoQueryDao.
GRUPO_DOCENTE_CODE_PERGUNTAS,
null,degrees,periodos
);
docenteReport.
progressaoAgregadasUnidadesVsCurso = criarProgressoChartGrupo
(docenteReport, codigosCursos,PerguntasGrupoQueryDao.
GRUPO_UNIDADE_CODE_PERGUNTAS,
null,degrees,periodos
);
docenteReport.
progressaoAgregadasDocentesDrelAlunoVsCurso = criarProgressoChartGrupo
(docenteReport, codigosCursos,PerguntasGrupoQueryDao.
GRUPO_DOCENTE_CODE_PERGUNTAS,PerguntasGrupoQueryDao.
GRUPO_DOCENTE_REL_ALUNO_CODE_PERGUNTAS,degrees,periodos
);
docenteReport.
progressaoAgregadasDocentesDprofDocenteVsCurso = criarProgressoChartGrupo
(docenteReport, codigosCursos,PerguntasGrupoQueryDao.
GRUPO_DOCENTE_CODE_PERGUNTAS,PerguntasGrupoQueryDao.
GRUPO_DOCENTE_PROFISSIONALISMO_DOCENTE_CODE_PERGUNTAS,degrees,periodos
);
}
private 1.5.0/docs/api/java/lang/String.html">String criarProgressoChartGrupo
(DocenteReport docenteReport, List
<String
> codigosCursos,
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[] degrees,
1.5.0/docs/api/java/lang/String.html">String[] periodos
) {
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);
//Media do Docente face ao curso Docente
1.5.0/docs/api/javax/management/Query.html">Query query = AbstractDao.
getCurrentSession().
createQuery("" +
"SELECT " +
"avg(fc.intResposta) as media, " +
"quest.generatedTime as date " +
"FROM " + OlapStarFactQuestionarioAnswer.
class.
getName() +
" fc " +
"JOIN fc.olapPergunta prgp " +
"JOIN fc.olapTipologia tipo " +
"JOIN fc.olapQuestionario quest " +
"JOIN fc.olapCurso curso " +
"JOIN fc.olapTimeLine timeLine " +
"where " +
"tipo.codigoSiges = :codigoSiges " +
"and timeLine.nome = '" + PedagogicoAlunosProcessor.
getHistoryDriveConstraintStatic() +
"' " +
(grupo
!=
null ? " and prgp.grupoCode = :grupoCode " :
"" ) +
(subGrupo
!=
null ? " and prgp.subGrupoCode = :subGrupoCode " :
"" ) +
degreesQuery +
periodosQuery +
" group by quest.generatedTime " +
"order by quest.generatedTime asc ");
if(grupo
!=
null)
query.
setString("grupoCode",grupo
);
if(subGrupo
!=
null)
query.
setString("subGrupoCode",subGrupo
);
query.
setString("codigoSiges",docenteReport.
getNumeroDocente());
List
<Object
[]> timeSeriesAvgDocente = query.
list();
if(timeSeriesAvgDocente.
size()>0
)
{
5+0%2Fdocs%2Fapi+Date">Date firstOcurrence =
(5+0%2Fdocs%2Fapi+Date">Date) timeSeriesAvgDocente.
get(0
)[1
];
5+0%2Fdocs%2Fapi+Date">Date lastOcurrence =
(5+0%2Fdocs%2Fapi+Date">Date) timeSeriesAvgDocente.
get(timeSeriesAvgDocente.
size()-1
)[1
];
1.5.0/docs/api/java/lang/String.html">String cursosQuery = QueryDaoUtils.
createCursosQuery(codigosCursos,
true);
1.5.0/docs/api/javax/management/Query.html">Query queryCursos = AbstractDao.
getCurrentSession().
createQuery("" +
"SELECT " +
"avg(fc.intResposta) as media, " +
"quest.generatedTime as date " +
"FROM " + OlapStarFactQuestionarioAnswer.
class.
getName() +
" fc " +
"JOIN fc.olapPergunta prgp " +
"JOIN fc.olapTipologia tipo " +
"JOIN fc.olapQuestionario quest " +
"JOIN fc.olapCurso curso " +
"JOIN fc.olapTimeLine timeLine " +
"where " +
"quest.generatedTime >= :minDate and quest.generatedTime <= :maxDate " +
"and timeLine.nome = '" + PedagogicoAlunosProcessor.
getHistoryDriveConstraintStatic() +
"' " +
cursosQuery +
degreesQuery +
periodosQuery +
(grupo
!=
null ? " and prgp.grupoCode = :grupoCode " :
"" ) +
(subGrupo
!=
null ? " and prgp.subGrupoCode = :subGrupoCode " :
"" ) +
" group by quest.generatedTime " +
"order by quest.generatedTime asc ");
if(grupo
!=
null)
queryCursos.
setString("grupoCode",grupo
);
if(subGrupo
!=
null)
queryCursos.
setString("subGrupoCode",subGrupo
);
queryCursos.
setTimestamp("minDate", firstOcurrence
);
queryCursos.
setTimestamp("maxDate",lastOcurrence
);
List
<Object
[]> timeSeriesAvgCursosDocente = queryCursos.
list();
try {
1.5.0/docs/api/java/lang/String.html">String chart = ChartBuilderUtil.
createTimeSeriesDiffArea((grupo
!=
null?grupo:
"") +
(subGrupo
!=
null?subGrupo:
""),
" Docente ",
" Curso ", timeSeriesAvgDocente, timeSeriesAvgCursosDocente
);
return chart
;
} catch (1.5.0/docs/api/java/io/IOException.html">IOException e
) {
e.
printStackTrace();
}
}
return null;
}
private void criaExtremeCharts
(DocenteReport docenteReport
)
{
{
DocenteReport.
PerguntaUnidadeStatAux perguntaMaxDocente = docenteReport.
extremePerguntaMaxDocente();
DocenteReport.
PerguntaUnidadeStatAux perguntaMinDocente = docenteReport.
extremePerguntaMinDocente();
DocenteReport.
PerguntaUnidadeStatAux perguntaMaxUnidade = docenteReport.
extremePerguntaMaxUnidade();
DocenteReport.
PerguntaUnidadeStatAux perguntaMinUnidade = docenteReport.
extremePerguntaMinUnidade();
try {
if(perguntaMaxDocente
!=
null)
{
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMaxDocente = ChartBuilderUtil.
createChartRingOneDimension(perguntaMaxDocente.
pergunta.
getMediaEntidadeEmAvaliacao(),5,
true,
true,
false,
"extremePerguntaMaxDocente");
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMinDocente = ChartBuilderUtil.
createChartRingOneDimension(perguntaMinDocente.
pergunta.
getMediaEntidadeEmAvaliacao(),5,
true,
true,
false,
"extremePerguntaMinDocente");
ChartWithTitleTemp chartPerguntaMaxDocenteChart =
new ChartWithTitleTemp
(perguntaMaxDocente.
pergunta.
getPergunta(),perguntaMaxDocente.
nomeUnidade,pathExtremePerguntaMaxDocente
);
ChartWithTitleTemp chartPerguntaMinDocenteChart =
new ChartWithTitleTemp
(perguntaMinDocente.
pergunta.
getPergunta(),perguntaMinDocente.
nomeUnidade,pathExtremePerguntaMinDocente
);
docenteReport.
extremePerguntaAbsolutaAvgMaxDocente = chartPerguntaMaxDocenteChart
;
docenteReport.
extremePerguntaAbsolutaAvgMinDocente = chartPerguntaMinDocenteChart
;
}
if(perguntaMaxUnidade
!=
null)
{
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMaxUnidade = ChartBuilderUtil.
createChartRingOneDimension(perguntaMaxUnidade.
pergunta.
getMediaEntidadeEmAvaliacao(),5,
true,
true,
false,
"extremePerguntaMaxUnidade");
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMinUnidade = ChartBuilderUtil.
createChartRingOneDimension(perguntaMinUnidade.
pergunta.
getMediaEntidadeEmAvaliacao(),5,
true,
true,
false,
"extremePerguntaMinUnidade");
ChartWithTitleTemp chartPerguntaMaxUnidade =
new ChartWithTitleTemp
(perguntaMaxUnidade.
pergunta.
getPergunta(),perguntaMaxUnidade.
nomeUnidade,pathExtremePerguntaMaxUnidade
);
ChartWithTitleTemp chartPerguntaMinUnidade =
new ChartWithTitleTemp
(perguntaMinUnidade.
pergunta.
getPergunta(),perguntaMinUnidade.
nomeUnidade,pathExtremePerguntaMinUnidade
);
docenteReport.
extremePerguntaAbsolutaAvgMaxUnidade = chartPerguntaMaxUnidade
;
docenteReport.
extremePerguntaAbsolutaAvgMinUnidade = chartPerguntaMinUnidade
;
}
}
catch (1.5.0/docs/api/java/io/IOException.html">IOException e
)
{
logger.
error(e,e
);
}
}
{
PerguntaStats perguntaAgregadaMaxDocente = docenteReport.
extremeDocentePerguntaAgregadasMax();
PerguntaStats perguntaAgregadaMinDocente = docenteReport.
extremeDocentePerguntaAgregadasMin();
PerguntaStats perguntaAgregadaMaxUnidade = docenteReport.
extremeUnidadePerguntaAgregadaMax();
PerguntaStats perguntaAgregadaMinUnidade = docenteReport.
extremeUnidadePerguntaAgregadaMin();
try {
if(perguntaAgregadaMaxDocente
!=
null)
{
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMaxDocente = ChartBuilderUtil.
createChartRingOneDimension(perguntaAgregadaMaxDocente.
getMediaEntidadeEmAvaliacao(),5,
true,
true,
false,
"extremePerguntaAgregadaMaxDocente");
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMinDocente = ChartBuilderUtil.
createChartRingOneDimension(perguntaAgregadaMinDocente.
getMediaEntidadeEmAvaliacao(),5,
true,
true,
false,
"extremePerguntaAgregadaMinDocente");
ChartWithTitleTemp chartPerguntaMaxDocente =
new ChartWithTitleTemp
(perguntaAgregadaMaxDocente.
getPergunta(),
"",pathExtremePerguntaMaxDocente
);
ChartWithTitleTemp chartPerguntaMinDocente =
new ChartWithTitleTemp
(perguntaAgregadaMinDocente.
getPergunta(),
"",pathExtremePerguntaMinDocente
);
docenteReport.
extremePerguntaAgregadaAvgMaxDocente = chartPerguntaMaxDocente
;
docenteReport.
extremePerguntaAgregadaAvgMinDocente = chartPerguntaMinDocente
;
}
if(perguntaAgregadaMaxUnidade
!=
null)
{
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMaxUnidade = ChartBuilderUtil.
createChartRingOneDimension(perguntaAgregadaMaxUnidade.
getMediaEntidadeEmAvaliacao(),5,
true,
true,
false,
"extremePerguntaAgregadaMaxUnidade");
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMinUnidade = ChartBuilderUtil.
createChartRingOneDimension(perguntaAgregadaMinUnidade.
getMediaEntidadeEmAvaliacao(),5,
true,
true,
false,
"extremePerguntaAgregadaMinUnidade");
ChartWithTitleTemp chartPerguntaMaxUnidade =
new ChartWithTitleTemp
(perguntaAgregadaMaxUnidade.
getPergunta(),
"",pathExtremePerguntaMaxUnidade
);
ChartWithTitleTemp chartPerguntaMinUnidade =
new ChartWithTitleTemp
(perguntaAgregadaMinUnidade.
getPergunta(),
"",pathExtremePerguntaMinUnidade
);
docenteReport.
extremePerguntaAgregadaAvgMaxUnidade = chartPerguntaMaxUnidade
;
docenteReport.
extremePerguntaAgregadaAvgMinUnidade = chartPerguntaMinUnidade
;
}
}
catch (1.5.0/docs/api/java/io/IOException.html">IOException e
)
{
logger.
error(e,e
);
}
}
{
UnidadeStats unidadeMaxDocente = docenteReport.
extremeDocenteUnidadeMax();
UnidadeStats unidadeMinDocente = docenteReport.
extremeDocenteUnidadeMin();
UnidadeStats unidadeMaxUnidade = docenteReport.
extremeUnidadeUnidadeMax();
UnidadeStats unidadeMinUnidade = docenteReport.
extremeUnidadeUnidadeMin();
try {
if(unidadeMaxDocente
!=
null)
{
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMaxDocente = ChartBuilderUtil.
createChartRingOneDimension(unidadeMaxDocente.
getUnidadeStatsGrupoDocente().
getMediasGrupo().
getAvaliacaoMedia(),5,
true,
true,
false,
"extremeUnidadeMaxDocente");
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMinDocente = ChartBuilderUtil.
createChartRingOneDimension(unidadeMinDocente.
getUnidadeStatsGrupoDocente().
getMediasGrupo().
getAvaliacaoMedia(),5,
true,
true,
false,
"extremeUnidadeMinDocente");
ChartWithTitleTemp chartPerguntaMaxDocente =
new ChartWithTitleTemp
(unidadeMaxDocente.
getNomeUnidade(),
"",pathExtremePerguntaMaxDocente
);
ChartWithTitleTemp chartPerguntaMinDocente =
new ChartWithTitleTemp
(unidadeMinDocente.
getNomeUnidade(),
"",pathExtremePerguntaMinDocente
);
docenteReport.
extremeUnitAvgMaxDocente = chartPerguntaMaxDocente
;
docenteReport.
extremeUnitAvgMinDocente = chartPerguntaMinDocente
;
}
if(unidadeMaxUnidade
!=
null)
{
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMaxUnidade = ChartBuilderUtil.
createChartRingOneDimension(unidadeMaxUnidade.
getUnidadeStatsGrupoUnidade().
getMediasGrupo().
getAvaliacaoMedia(),5,
true,
true,
false,
"extremeUnidadeMaxUnidade");
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMinUnidade = ChartBuilderUtil.
createChartRingOneDimension(unidadeMinUnidade.
getUnidadeStatsGrupoUnidade().
getMediasGrupo().
getAvaliacaoMedia(),5,
true,
true,
false,
"extremeUnidadeMinUnidade");
ChartWithTitleTemp chartPerguntaMaxUnidade =
new ChartWithTitleTemp
(unidadeMaxUnidade.
getNomeUnidade(),
"",pathExtremePerguntaMaxUnidade
);
ChartWithTitleTemp chartPerguntaMinUnidade =
new ChartWithTitleTemp
(unidadeMinUnidade.
getNomeUnidade(),
"",pathExtremePerguntaMinUnidade
);
docenteReport.
extremeUnitAvgMaxUnidade = chartPerguntaMaxUnidade
;
docenteReport.
extremeUnitAvgMinUnidade = chartPerguntaMinUnidade
;
}
}
catch (1.5.0/docs/api/java/io/IOException.html">IOException e
)
{
logger.
error(e,e
);
}
}
{
DocenteReport.
PerguntaUnidadeStatAux perguntaDiffMaxDocente = docenteReport.
extremeDiffMediaPerguntaMaxDocente();
DocenteReport.
PerguntaUnidadeStatAux perguntaDiffMinDocente = docenteReport.
extremeDiffMediaPerguntaMinDocente();
DocenteReport.
PerguntaUnidadeStatAux perguntaDiffMaxUnidade = docenteReport.
extremeDiffMediaPerguntaMaxUnidade();
DocenteReport.
PerguntaUnidadeStatAux perguntaDiffMinUnidade = docenteReport.
extremeDiffMediaPerguntaMinUnidade();
try {
if(perguntaDiffMaxDocente
!=
null)
{
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMaxDocente = ChartBuilderUtil.
createBarChartTwoBars("Docente",
"Curso",ChartBuilderUtil.
COLOR_SECTION_BLUE_DARK,ChartBuilderUtil.
COLOR_SECTION_GREEN, perguntaDiffMaxDocente.
pergunta.
getMediaEntidadeEmAvaliacao(),perguntaDiffMaxDocente.
pergunta.
getMediaCursos(),
5,
"extremeDiffMaxDocente");
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMinDocente = ChartBuilderUtil.
createBarChartTwoBars("Docente",
"Curso", ChartBuilderUtil.
COLOR_SECTION_BLUE_DARK, ChartBuilderUtil.
COLOR_SECTION_GREEN, perguntaDiffMinDocente.
pergunta.
getMediaEntidadeEmAvaliacao(), perguntaDiffMinDocente.
pergunta.
getMediaCursos(),
5,
"extremeDiffMinDocente");
ChartWithTitleTemp chartPerguntaMaxDocente =
new ChartWithTitleTemp
(perguntaDiffMaxDocente.
pergunta.
getPergunta() +
" ( " + perguntaDiffMaxDocente.
pergunta.
getDiffMediaCursoPrint() +
")",perguntaDiffMaxDocente.
nomeUnidade,pathExtremePerguntaMaxDocente
);
ChartWithTitleTemp chartPerguntaMinDocente =
new ChartWithTitleTemp
(perguntaDiffMinDocente.
pergunta.
getPergunta() +
" ( " + perguntaDiffMinDocente.
pergunta.
getDiffMediaCursoPrint() +
")",perguntaDiffMinDocente.
nomeUnidade,pathExtremePerguntaMinDocente
);
docenteReport.
extremePerguntaAbsolutaDiffAvgMaxDocente = chartPerguntaMaxDocente
;
docenteReport.
extremePerguntaAbsolutaDiffAvgMinDocente = chartPerguntaMinDocente
;
}
if(perguntaDiffMaxUnidade
!=
null)
{
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMaxUnidade = ChartBuilderUtil.
createBarChartTwoBars("Docente",
"Curso", ChartBuilderUtil.
COLOR_SECTION_BLUE_DARK, ChartBuilderUtil.
COLOR_SECTION_GREEN, perguntaDiffMaxUnidade.
pergunta.
getMediaEntidadeEmAvaliacao(), perguntaDiffMaxUnidade.
pergunta.
getMediaCursos(),
5,
"extremeDiffMaxUnidade");
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMinUnidade = ChartBuilderUtil.
createBarChartTwoBars("Docente",
"Curso", ChartBuilderUtil.
COLOR_SECTION_BLUE_DARK, ChartBuilderUtil.
COLOR_SECTION_GREEN, perguntaDiffMinUnidade.
pergunta.
getMediaEntidadeEmAvaliacao(), perguntaDiffMinUnidade.
pergunta.
getMediaCursos(),
5,
"extremeDiffMinUnidade");
ChartWithTitleTemp chartPerguntaMaxUnidade =
new ChartWithTitleTemp
(perguntaDiffMaxUnidade.
pergunta.
getPergunta() +
" ( " + perguntaDiffMaxUnidade.
pergunta.
getDiffMediaCursoPrint() +
")",perguntaDiffMaxUnidade.
nomeUnidade,pathExtremePerguntaMaxUnidade
);
ChartWithTitleTemp chartPerguntaMinUnidade =
new ChartWithTitleTemp
(perguntaDiffMinUnidade.
pergunta.
getPergunta() +
" ( " + perguntaDiffMinUnidade.
pergunta.
getDiffMediaCursoPrint() +
")",perguntaDiffMinUnidade.
nomeUnidade,pathExtremePerguntaMinUnidade
);
docenteReport.
extremePerguntaAbsolutaDiffAvgMaxUnidade = chartPerguntaMaxUnidade
;
docenteReport.
extremePerguntaAbsolutaDiffAvgMinUnidade = chartPerguntaMinUnidade
;
}
}
catch (1.5.0/docs/api/java/io/IOException.html">IOException e
)
{
logger.
error(e,e
);
}
}
{
QuestionariosAlunosReport.
ParticipacaoUnidade perguntaDiffMax = docenteReport.
extremeParticipacaoUnidadeMax();
QuestionariosAlunosReport.
ParticipacaoUnidade perguntaDiffMin = docenteReport.
extremeParticipacaoUnidadeMin();
try {
if(perguntaDiffMax
!=
null)
{
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMaxDocente = ChartBuilderUtil.
createChartRingOneDimension(perguntaDiffMax.
getRespostas(),perguntaDiffMax.
getInscritos(),
true,
true,
false,
"extremeParticipacaoMax");
1.5.0/docs/api/java/lang/String.html">String pathExtremePerguntaMinDocente = ChartBuilderUtil.
createChartRingOneDimension(perguntaDiffMin.
getRespostas(),perguntaDiffMin.
getInscritos(),
true,
true,
false,
"extremeParticipacaoMin");
ChartWithTitleTemp chartPerguntaMaxDocente =
new ChartWithTitleTemp
(perguntaDiffMax.
getNomeUnidade() +
" (inscritos: " + perguntaDiffMax.
getInscritos() +
")",
"",pathExtremePerguntaMaxDocente
);
ChartWithTitleTemp chartPerguntaMinDocente =
new ChartWithTitleTemp
(perguntaDiffMin.
getNomeUnidade() +
" (inscritos: " + perguntaDiffMin.
getInscritos() +
")",
"",pathExtremePerguntaMinDocente
);
docenteReport.
extremeParticipacaoMax = chartPerguntaMaxDocente
;
docenteReport.
extremeParticipacaoMin = chartPerguntaMinDocente
;
}
}
catch (1.5.0/docs/api/java/io/IOException.html">IOException e
)
{
logger.
error(e,e
);
}
}
}
/**
*
* GET PARAMETERS
* FILE_GROUP_ID
* LOAD FILE GROUP GET ANO, PERIODOS, DEGREES
* GET ALL DOCENTES
* GENERATE REPORT
* UPLOAD FILE REPOSITORY WITH PERMISSIONS
* QUESTIONARIOS_FILE_GROUP_DOCENTE_REPORT
* DELETE TMP
* GENERATE CSV FILE
* PUT STREAM IN FILE GROUP
* QUESTIONARIOS_FILE_GROUP_DOCENTE_ALL
* CREATE ZIP WITH ALL REPORTS PUT IN FILE GROUP
* DELETE TMP
* PUT STREAM IN FILE GROUP
* QUESTIONARIOS_FILE_GROUP_DOCENTE_ALL
* DELETE TMP
*
* @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 questionarioReportId =
1.5.0/docs/api/java/lang/Long.html">Long.
parseLong(getParametersMap
().
get(ServiceJob.
JOB_questionario_report_id_KEY).
getObject());
DefaultLogMessages logMessages =
new DefaultLogMessages
();
int docentesEncontrados =
0;
int docentesProcessados =
0;
int docentesFalhados =
0;
int docentesSemRespostas =
0;
int docentesSemUnidadesAfetas =
0;
int docentesComRespostas =
0;
QuestionarioReportFileGroupDocentesAnoImpl reportGroup =
(QuestionarioReportFileGroupDocentesAnoImpl
) DaoFactory.
getQuestionarioReportFileGroupDocentesAnoDaoImpl().
load(questionarioReportId
);
reportGroup.
setActive(false);
1.5.0/docs/api/java/io/File.html">File reportGroupFolder =
new 1.5.0/docs/api/java/io/File.html">File(Globals.
TMP_DIR +
1.5.0/docs/api/java/io/File.html">File.
separator +
"reportGroup" + reportGroup.
getId());
anoLectivo = reportGroup.
getImportYear();
periodos = reportGroup.
getPeriodosArray();
degrees = reportGroup.
getDegreesArray();
1.5.0/docs/api/java/lang/String.html">String msg =
"Starting process for Report Docentes (" + questionarioReportId +
"): " + reportGroup.
getTitle();
serviceLogInfo
(msg
);
logger.
info(msg
);
List
<String
> teacherCodes = QuestionariosQueryDao.
findTeachersSigesCodes(reportGroup.
getImportYear(),periodos,degrees
);
msg =
"Vai processar " + teacherCodes.
size() +
" Docentes ";
serviceLogInfo
(msg
);
logger.
info(msg
);
//todo tirar isto
teacherCodes.
add(0,
"20083");
for(1.5.0/docs/api/java/lang/String.html">String sigesCode: teacherCodes
)
{
if(sigesCode ==
null)
{
msg =
"Found Teacher with siges code null, not known but has units in " + reportGroup.
getImportYear();
serviceLogInfo
(msg
);
logger.
info(msg
);
continue;
}
docentesEncontrados++
;
/** COMMIT OPERATION **/ //Tem mais um para contemplar o zip folder operation
setProgress
((int)((((float)docentesEncontrados
)/
((float)teacherCodes.
size()+1
))*100.0f
));
commitPartially
();
reportGroup =
(QuestionarioReportFileGroupDocentesAnoImpl
) DaoFactory.
getQuestionarioReportFileGroupDocentesAnoDaoImpl().
load(questionarioReportId
);
/** COMMIT OPERATION **/
try{
Teacher t = DaoFactory.
getTeacherDaoImpl().
loadBySigesCode(1.5.0/docs/api/java/lang/Integer.html">Integer.
parseInt(sigesCode
));
msg =
"(" + docentesEncontrados +
"/" + teacherCodes.
size() +
") Found Teacher sigesCode: " + sigesCode +
" " + t.
getName() +
" will start process";
serviceLogInfo
(msg
);
logger.
info(msg
);
DocenteReport docenteReport = processTeacher
("" + sigesCode,reportGroupFolder
);
1.5.0/docs/api/java/lang/String.html">String tmpPath = docenteReport.
getPathGeneratedPdfTemp();
//todo criar o docente report File e colocar no repositorio digit
QuestionarioReportDocenteFile q = DaoFactory.
getQuestionarioReportDocenteFileDaoImpl().
findBySigesCode(sigesCode,reportGroup.
getId());
if(q ==
null)
{
q =
new QuestionarioReportDocenteFileImpl
();
q.
setReportGroup(reportGroup
);
q.
setEntityCode("" + sigesCode
);
q.
setEntityName(t.
getName());
//q.setTeacher(t);
DaoFactory.
getQuestionarioReportDocenteFileDaoImpl().
save(q
);
}
q.
setActive(true);
q.
setInquiridos(docenteReport.
getInquiridosTotal());
q.
setInquiridosComResposta(docenteReport.
getInquiridosComResposta());
q.
setRespostasRequisitadas(docenteReport.
getQuestionariosReqTotal());
q.
setRespostas(docenteReport.
getQuestionariosReqRespondidos());
q.
setUnidades(docenteReport.
getUnidadesRequisitadas());
q.
setPercentagemInquiridos(docenteReport.
getInquiridosComRespostaPercent());
q.
setPercentagemRespostas(docenteReport.
getQuestionariosReqRespondidosPercentagem());
//STATS
if(q.
getInquiridos() == 0
)
docentesSemUnidadesAfetas++
;
else if(q.
getRespostas() == 0
)
docentesSemRespostas++
;
else
docentesComRespostas++
;
1.5.0/docs/api/java/io/File.html">File tmpFile =
new 1.5.0/docs/api/java/io/File.html">File(tmpPath
);
sendPdfToRepository
( q,
tmpFile,
"Relatório dos Resultados do Inquérito Pedagógico aos Alunos - Relatório de Docente Privado " + t.
getName() +
" (" + sigesCode +
") " +
" periodos:" +
1.5.0/docs/api/java/util/Arrays.html">Arrays.
toString(periodos
) +
" degrees:" +
1.5.0/docs/api/java/util/Arrays.html">Arrays.
toString(degrees
),
ResourceAccessControlEnum.
questionariosReportDocente
);
//Final
docentesProcessados++
;
}catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
msg =
"FAIL - Teacher with siges: " + sigesCode
;
serviceLogError
(msg,e
);
logger.
error(msg,e
);
docentesFalhados++
;
}
}
/** COMMIT OPERATION **/ //Tem mais um para contemplar o zip folder operation
setProgress
((int)((((float)docentesEncontrados
)/
((float)teacherCodes.
size()+1
))*100.0f
));
commitPartially
();
reportGroup =
(QuestionarioReportFileGroupDocentesAnoImpl
) DaoFactory.
getQuestionarioReportFileGroupDocentesAnoDaoImpl().
load(questionarioReportId
);
/** COMMIT OPERATION **/
serviceLogInfo
("######################################");
serviceLogInfo
("######################################");
serviceLogInfo
("#Docentes Encontrados:" + docentesEncontrados
);
serviceLogInfo
("#Docentes Processados:" + docentesProcessados
);
serviceLogInfo
("#Docentes Com Resposta:" + docentesComRespostas
);
serviceLogInfo
("#Docentes Sem Respostas:" + docentesSemRespostas
);
serviceLogInfo
("#Docentes Sem Unidades Afetas:" + docentesSemUnidadesAfetas
);
serviceLogInfo
("#Docentes Falhados:" + docentesFalhados
);
serviceLogInfo
("#provavelAvaliadaDuasVezes:" + provavelAvaliadaDuasVezes
);
if(provavelAvaliadaDuasVezes
> 0)
serviceLogInfo
("#provavelAvaliadaDuasVezes (procurar por provavelAvaliadaDuasVezes no log):" + provavelAvaliadaDuasVezes
);
logger.
info("######################################");
logger.
info("######################################");
logger.
info("#Docentes Encontrados:" + docentesEncontrados
);
logger.
info("#Docentes Processados:" + docentesProcessados
);
logger.
info("#Docentes Falhados:" + docentesFalhados
);
logger.
info("#Docentes Com Resposta:" + docentesComRespostas
);
logger.
info("#Docentes Sem Respostas:" + docentesSemRespostas
);
logger.
info("#Docentes Sem Unidades Afetas:" + docentesSemUnidadesAfetas
);
logger.
info("#provavelAvaliadaDuasVezes:" + provavelAvaliadaDuasVezes
);
if(provavelAvaliadaDuasVezes
> 0)
logger.
info("#provavelAvaliadaDuasVezes (procurar por provavelAvaliadaDuasVezes no log):" + provavelAvaliadaDuasVezes
);
reportGroup.
setEntidadesEncontradas(docentesEncontrados
);
reportGroup.
setEntidadesProcessadas(docentesProcessados
);
reportGroup.
setEntidadesFalhadas(docentesFalhados
);
reportGroup.
setEntidadesComRespostas(docentesComRespostas
);
reportGroup.
setEntidadesSemRespostas(docentesSemRespostas
);
reportGroup.
setEntidadesSemUnidadesAfetas(docentesSemUnidadesAfetas
);
commitPartially
();
reportGroup =
(QuestionarioReportFileGroupDocentesAnoImpl
) DaoFactory.
getQuestionarioReportFileGroupDocentesAnoDaoImpl().
load(questionarioReportId
);
logger.
info("ziping files");
serviceLogInfo
("ziping files");
logMessages.
addMessage(new DefaultLogMessage
("ziping files", LogMessageTypeEnum.
INFO));
zipFolder
(
reportGroup,
reportGroupFolder,
"Relatórios de Docente ZIPADOS " +
" ano:" + anoLectivo +
" periodos:" +
1.5.0/docs/api/java/util/Arrays.html">Arrays.
toString(periodos
) +
" degrees:" +
1.5.0/docs/api/java/util/Arrays.html">Arrays.
toString(degrees
),
ResourceAccessControlEnum.
questionariosReportBoardAndPedagogico);
setProgress
(100
);
commitPartially
();
logger.
info("terminating docente reports generation");
serviceLogInfo
("terminating docente reports generation");
logMessages.
addMessage(new DefaultLogMessage
("report.docente.gen.terminating", LogMessageTypeEnum.
INFO));
return logMessages
;
}
}