package pt.estgp.estgweb.services.questionarios.pedagogico;
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 pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.Course;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.questionarios.pedagogico.queries.*;
import pt.estgp.estgweb.services.questionarios.utils.*;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.utils.Dom4jUtil;
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMSource;
import java.awt.*;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.List;
/**
* Created by jorgemachado on 16/12/16.
*/
public class CursoPublicReportGenerator
extends ReportGenerator
{
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);
1.5.0/docs/api/java/lang/String.html">String courseCode
;
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
{
//String teacherCode = "44451";
//String teacherCode = "20122";
1.5.0/docs/api/java/lang/String.html">String courseCode =
"9119";
//String courseCode = "9104";
1.5.0/docs/api/java/lang/String.html">String anoLectivo =
"201516";
//String[] periodos = new String[]{"S2","T3","T4","A"};
1.5.0/docs/api/java/lang/String.html">String[] periodos =
new 1.5.0/docs/api/java/lang/String.html">String[]{"S1"};
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 CursoPublicReportGenerator
(anoLectivo,periodos,degrees,courseCode
).
processCourse();
}
public CursoPublicReportGenerator
(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,
1.5.0/docs/api/java/lang/String.html">String courseCode
) {
super(anoLectivo, periodos, degrees
);
this.
courseCode = courseCode
;
}
public void processCourse
() throws 1.5.0/docs/api/java/io/IOException.html">IOException, DocumentException,
1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException, FOPException
{
//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
CursoPublicReport cursoReport = getCoursePublicReport
();
if(cursoReport ==
null)
{
1.5.0/docs/api/java/lang/System.html">System.
out.
println(" Curso " + courseCode +
" nao tem respostas nestas condições ");
return;
}
ChartBuilderUtil.
createChartTiposAlunos(cursoReport,
"tiposAlunosTmp");
ChartBuilderUtil.
createChartTaxaRespostas(cursoReport,
"taxaRespostasTmp");
ChartBuilderUtil.
createChartTaxaParticipacao(cursoReport,
"taxaParticipacaoTmp");
ChartBuilderUtil.
createChartUnidadesContribuicao(cursoReport,
"unidadesContribuicao");
generatePdfReport
(cursoReport
);
}
private void generatePdfReport
(CursoPublicReport cursoReport
) throws DocumentException,
1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException,
1.5.0/docs/api/java/io/IOException.html">IOException, FOPException
{
1.5.0/docs/api/java/lang/String.html">String startPath =
"/Volumes/Home/jorgemachado/Desktop/reportCurso" + cursoReport.
getCursoStats().
getCodigoCurso();
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.
SITE_URL);
params.
put("updateDate", pt.
estgp.
estgweb.
web.
utils.
DatesUtils.
getStringFromDate(new 5+0%2Fdocs%2Fapi+Date">Date() ));
org.
w3c.
dom.
5+0%2Fdocs%2Fapi+Document">Document dom2 = cursoReport.
serialize();
Dom4jUtil.
writeSout(dom2
);
Dom4jUtil.
write(dom2,
new java.
io.
1.5.0/docs/api/java/io/File.html">File(startPath +
".xml"));
PdfUtils.
setAuthority("Relatório de Avaliação Pedagógica - Relatório Público de Curso - " +
cursoReport.
getCursoStats().
getNomeCurso() +
" (" + cursoReport.
getCursoStats().
getCodigoCurso() +
" ) " +
"- Ano letivo " + cursoReport.
getAnoLectivo() +
" - Periodos " + cursoReport.
getSemestres().
toString() +
"" +
" Tipos de Curso - " + cursoReport.
getDegrees().
toString(),
cursoReport.
getCursoStats().
getNomeCurso(),
"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/cursoPublicReport.fo.xsl", out, params
);
out.
flush();
out.
close();
}
private CursoPublicReport getCoursePublicReport
() throws 1.5.0/docs/api/java/io/IOException.html">IOException {
AbstractDao.
getCurrentSession().
beginTransaction();
Course c = DaoFactory.
getCourseDaoImpl().
findCourseByCode(courseCode
);
CursoPublicReport cursoReport =
new CursoPublicReport
();
//dados relativos ao questionario
cursoReport.
setAnoLectivo(DatesUtils.
getImportYearFormatted(anoLectivo
));
cursoReport.
setSemestres(ReportUtils.
getFormatedSemestres(periodos
));
cursoReport.
setDegrees(ReportUtils.
getFormatedDegrees(degrees
));
//dados relativos ao curso
cursoReport.
getCursoStats().
setCodigoCurso(courseCode
);
cursoReport.
getCursoStats().
setNomeCurso(c.
getName());
cursoReport.
getCursoStats().
setCodigoCurso(c.
getCode());
cursoReport.
getCursoStats().
setNomeInstituicao(ConfigProperties.
getProperty("institution.code." + c.
getInstitutionalCode()));
cursoReport.
getCursoStats().
setCodigoInstituicao(c.
getInstitutionalCode());
cursoReport.
getCursoStats().
setCodigoNacionalInstituicao(ConfigProperties.
getProperty("institution.national.code." + c.
getInstitutionalCode()));
cursoReport.
getCursoStats().
setAbreviaturaInstituicao(ConfigProperties.
getProperty("institution.code.prefix." + c.
getInstitutionalCode()));
cursoReport.
setAnoLectivo(anoLectivo
);
AlunosQueryDao.
countAlunosQueResponderamAoCurso(courseCode, anoLectivo, cursoReport, periodos, degrees
);
if(cursoReport.
getInquiridosTotal() == 0
)
{
return null;
}
QuestionariosQueryDao.
countQuestionariosRespostasAoCurso(courseCode, anoLectivo, cursoReport, periodos, degrees
);
AlunosQueryDao.
countTiposAlunosComRespostasAoCurso(courseCode, anoLectivo, cursoReport, periodos, degrees
);
AlunosQueryDao.
countIdadesAlunosComRespostasAoCurso(courseCode, anoLectivo, cursoReport, periodos, degrees
);
//TABELAS
QuestionariosQueryDao.
createDataTableIdades(cursoReport,
"Alunos");
QuestionariosQueryDao.
createDataTableLocalidadesAoCurso(cursoReport, courseCode, anoLectivo, periodos, degrees,
"Alunos");
UnidadesQueryDao.
createTableTaxaRespostaUnidadeAoCurso(cursoReport, courseCode, anoLectivo, periodos, degrees
);
//EVOLUCAO DAS RESPOSTAS
List
<Object
[]> semanaContagemCurso = QuestionariosQueryDao.
obtainEvolucaoRespostas(new 1.5.0/docs/api/java/lang/String.html">String[]{courseCode
},EntityEvaluated.
CURSO,anoLectivo,periodos,degrees
);
List
<Object
[]> semanaContagemEscola = QuestionariosQueryDao.
obtainEvolucaoRespostas(new 1.5.0/docs/api/java/lang/String.html">String[]{cursoReport.
getCursoStats().
getCodigoInstituicao()},EntityEvaluated.
ESCOLA,anoLectivo,periodos,degrees
);
1.5.0/docs/api/java/lang/String.html">String distRespostas = ChartBuilderUtil.
createTimeSeriesCursoRepostas("distribuicaoRespostasSemanal",cursoReport.
getCursoStats().
getNomeCurso(),cursoReport.
getCursoStats().
getAbreviaturaInstituicao(),semanaContagemCurso,semanaContagemEscola
);
cursoReport.
setPathDistribuicaoRespostasSemanalChart(distRespostas
);
DataTable tableEvolucaoRespostas = criarEvolucaoTaxasRespostas
(semanaContagemCurso,cursoReport.
getQuestionariosReqTotal());
cursoReport.
setTabelaEvolucaoRespostas(tableEvolucaoRespostas
);
//Os cursos na Escola são todos os cursos, na pratica nao serve para nada porque
//A media de todos os cursos na escola é a media da escola considerando a restricao de graus e periodos
//media nas Escolas por pergunta e media nos Cursos por pergunta é igual
//A media da entidade neste caso é a do curso
List
<String
> codigosTodosCursosDaEscola = QueryDaoUtils.
getCodigosCursosEscola(cursoReport.
getCursoStats().
getCodigoInstituicao(),anoLectivo, periodos, degrees
);
//List<String> codigosEscola = QueryDaoUtils.getCodigosEscolaDocente(teacherCode, anoLectivo, periodos, degrees);
List
<String
> codigosEscola =
new ArrayList
<String
>();
codigosEscola.
add(cursoReport.
getCursoStats().
getCodigoInstituicao());
cursoReport.
getCursoStats().
setDocentesDoCurso((int) QueryDaoUtils.
countDocentesNosCursos(courseCode, anoLectivo, periodos, degrees
));
cursoReport.
getCursoStats().
setDocentesDaEscola((int) QueryDaoUtils.
countDocentesNasEscolas(cursoReport.
getCursoStats().
getCodigoInstituicao(), anoLectivo, periodos, degrees
));
//todo vai buscar às cadeiras temos de fazer override do metodo e puxa-lo para o QuestionarioAlunos
//ou nao porque o UnidadesDaEscola foi introduzido dentro do Curso ão se puxou para o QuestionarioAlunos
//o xsl vai ter de usar este caso o use
cursoReport.
getCursoStats().
setUnidadesDoCurso((int) QueryDaoUtils.
countUnidadesNosCursos(courseCode, anoLectivo, periodos, degrees
));
cursoReport.
getCursoStats().
setUnidadesDaEscola((int) QueryDaoUtils.
countUnidadesNasEscolas(cursoReport.
getCursoStats().
getCodigoInstituicao(), anoLectivo, periodos, degrees
));
ReportGenerator.
criarGraficosRespostasAgregadas(new 1.5.0/docs/api/java/lang/String.html">String[]{courseCode
},
EntityEvaluated.
CURSO,
anoLectivo,
cursoReport,
codigosTodosCursosDaEscola,
codigosEscola,
0,
cursoReport.
getCursoStats().
getRespostasAgregadasGrupoUnidade().
getRespostasAgregadasChartTable(),
cursoReport.
getCursoStats().
getRespostasAgregadasGrupoUnidade(),
PerguntasGrupoQueryDao.
GRUPO_UNIDADE_CODE_PERGUNTAS,
null,
periodos, degrees,
true);
ReportGenerator.
criarGraficosRespostasAgregadas(new 1.5.0/docs/api/java/lang/String.html">String[]{courseCode
},
EntityEvaluated.
CURSO,
anoLectivo,
cursoReport,
codigosTodosCursosDaEscola,
codigosEscola,
4000,
cursoReport.
getCursoStats().
getRespostasAgregadasGrupoUnidade().
getRespostasAgregadasChartTable2Secs(),
cursoReport.
getCursoStats().
getRespostasAgregadasGrupoUnidade(),
PerguntasGrupoQueryDao.
GRUPO_UNIDADE_CODE_PERGUNTAS,
null,
periodos, degrees,
false);
ReportGenerator.
criarGraficosRespostasAgregadas(new 1.5.0/docs/api/java/lang/String.html">String[]{courseCode
},
EntityEvaluated.
CURSO,
anoLectivo,
cursoReport,
codigosTodosCursosDaEscola,
codigosEscola,
0,
cursoReport.
getCursoStats().
getRespostasAgregadasGrupoSalas().
getRespostasAgregadasChartTable(),
cursoReport.
getCursoStats().
getRespostasAgregadasGrupoSalas(),
PerguntasGrupoQueryDao.
GRUPO_SALAS_CODE_PERGUNTAS,
null,
periodos, degrees,
true);
ReportGenerator.
criarGraficosRespostasAgregadas(new 1.5.0/docs/api/java/lang/String.html">String[]{courseCode
},
EntityEvaluated.
CURSO,
anoLectivo,
cursoReport,
codigosTodosCursosDaEscola,
codigosEscola,
9000,
cursoReport.
getCursoStats().
getRespostasAgregadasGrupoSalas().
getRespostasAgregadasChartTable2Secs(),
cursoReport.
getCursoStats().
getRespostasAgregadasGrupoSalas(),
PerguntasGrupoQueryDao.
GRUPO_SALAS_CODE_PERGUNTAS,
null,
periodos, degrees,
false);
UnidadesQueryDao.
criarTabelasCadeirasCurso(courseCode,
anoLectivo,
cursoReport,
0, periodos, degrees,cursoReport.
getCursoStats().
getUnidadesStats());
ChartWithDataTable analiseConjuntaChartWithTable = criarAnaliseConjuntaDeUnidades
(cursoReport.
getCursoStats().
getUnidadesStats());
cursoReport.
setAnaliseConjuntaChartWithTable(analiseConjuntaChartWithTable
);
1.5.0/docs/api/java/lang/String.html">String pathOrdenadaMediaUnidades = criarAnaliseConjuntaDeUnidadesOrdenadaMediaUnidades
(cursoReport.
getCursoStats().
getUnidadesStats());
cursoReport.
setAnaliseConjuntaChartOrderMediaUnidades(pathOrdenadaMediaUnidades
);
1.5.0/docs/api/java/lang/String.html">String pathOrdenadaMediaSalas = criarAnaliseConjuntaDeUnidadesOrdenadaMediaSalas
(cursoReport.
getCursoStats().
getUnidadesStats());
cursoReport.
setAnaliseConjuntaChartOrderMediaSalas(pathOrdenadaMediaSalas
);
ArrayList
<TabelaPerguntaComparativosUnidades
> listaTabelasComparativasUnidadesPergunta = criarAnaliseConjuntaDeUnidadesAPergunta
(cursoReport.
getCursoStats().
getRespostasAgregadasGrupoUnidade().
getPerguntasStats(), cursoReport.
getCursoStats().
getUnidadesStats(),PerguntasGrupoQueryDao.
GRUPO_UNIDADE_CODE_PERGUNTAS,
null);
cursoReport.
setListaUnidadesComprativasPergunta(listaTabelasComparativasUnidadesPergunta
);
ArrayList
<TabelaPerguntaComparativosUnidades
> listaTabelasComparativasUnidadesPerguntaSalas = criarAnaliseConjuntaDeUnidadesAPergunta
(cursoReport.
getCursoStats().
getRespostasAgregadasGrupoUnidade().
getPerguntasStats(), cursoReport.
getCursoStats().
getUnidadesStats(),PerguntasGrupoQueryDao.
GRUPO_SALAS_CODE_PERGUNTAS,
null);
cursoReport.
setListaUnidadesComprativasPerguntaSalas(listaTabelasComparativasUnidadesPerguntaSalas
);
DataTable dataTableTodasAsUndiadesTodasPerguntas = criarTabelaComRespostasATodasAsPerguntas
(cursoReport
);
cursoReport.
setTodasAsRespostasMediasGruposUnidadesESalas(dataTableTodasAsUndiadesTodasPerguntas
);
AbstractDao.
getCurrentSession().
getTransaction().
commit();
return cursoReport
;
}
private DataTable criarTabelaComRespostasATodasAsPerguntas
(CursoPublicReport cursoReport
) {
DataTable tabelaComRespostasATodasAsPerguntasUnidadesSalas =
new DataTable
();
DataTable.
Row headerHidden = tabelaComRespostasATodasAsPerguntasUnidadesSalas.
addRowHeader();
headerHidden.
setInvisible(true);
DataTable.
Row headerGroups = tabelaComRespostasATodasAsPerguntasUnidadesSalas.
addRowHeader();
DataTable.
Row header = tabelaComRespostasATodasAsPerguntasUnidadesSalas.
addRowHeader();
headerHidden.
addColTextCenter("Inv " +
"Unidade Curricular");
headerGroups.
addColInvisible();
header.
addColTextCenter("Unidade Curricular");
headerHidden.
addColTextCenter("Inv " +
"Curso");
headerGroups.
addColInvisible();
header.
addColTextCenter("Curso");
//CABECALHOS UNIDADES
List
<PerguntaStats
> perguntaStatsesUnidadeHeader = cursoReport.
getCursoStats().
getRespostasAgregadasGrupoUnidade().
getPerguntasStats();
if(perguntaStatsesUnidadeHeader.
size() > 0)
{
DataTable.
Row.
Col c = headerGroups.
addColTextCenter("Unidade Curricular");
c.
setColspan(perguntaStatsesUnidadeHeader.
size());
c.
setBackgroundColor(ChartBuilderUtil.
getRgbXslColor(ChartBuilderUtil.
COLOR_SECTION_GREEN));
1.5.0/docs/api/java/util/Collections.html">Collections.
sort(perguntaStatsesUnidadeHeader,
new Comparator
<PerguntaStats
>() {
@
1.5.0/docs/api/java/lang/Override.html">Override
public int compare
(PerguntaStats o1, PerguntaStats o2
) {
return 1.5.0/docs/api/java/lang/Integer.html">Integer.
parseInt(o1.
getNumero()) -
1.5.0/docs/api/java/lang/Integer.html">Integer.
parseInt(o2.
getNumero());
}
});
for(PerguntaStats perguntaStats : perguntaStatsesUnidadeHeader
)
{
headerHidden.
addColTextCenter("Inv " + perguntaStats.
getNumero());
header.
addColTextCenter(perguntaStats.
getNumero()).
setBackgroundColor(ChartBuilderUtil.
getRgbXslColor(ChartBuilderUtil.
COLOR_SECTION_GREEN));
}
}
//CABECALHOS SALAS
List
<PerguntaStats
> perguntaStatsesSalasHeader = cursoReport.
getCursoStats().
getRespostasAgregadasGrupoSalas().
getPerguntasStats();
if(perguntaStatsesSalasHeader.
size() > 0)
{
DataTable.
Row.
Col c = headerGroups.
addColTextCenter("Instalações");
c.
setColspan(perguntaStatsesSalasHeader.
size());
c.
setBackgroundColor(ChartBuilderUtil.
getRgbXslColor(ChartBuilderUtil.
COLOR_SECTION_ROSE));
1.5.0/docs/api/java/util/Collections.html">Collections.
sort(perguntaStatsesSalasHeader,
new Comparator
<PerguntaStats
>() {
@
1.5.0/docs/api/java/lang/Override.html">Override
public int compare
(PerguntaStats o1, PerguntaStats o2
) {
return 1.5.0/docs/api/java/lang/Integer.html">Integer.
parseInt(o1.
getNumero()) -
1.5.0/docs/api/java/lang/Integer.html">Integer.
parseInt(o2.
getNumero());
}
});
for(PerguntaStats perguntaStats : perguntaStatsesSalasHeader
)
{
header.
addColTextCenter(perguntaStats.
getNumero());
headerHidden.
addColTextCenter("Inv " + perguntaStats.
getNumero()).
setBackgroundColor(ChartBuilderUtil.
getRgbXslColor(ChartBuilderUtil.
COLOR_SECTION_ROSE));
}
}
header.
addColTextCenter("Insc.");
headerHidden.
addColTextCenter("Inv Insc.");
headerGroups.
addColInvisible();
headerHidden.
addColTextCenter("Inv Resps.");
header.
addColTextCenter("Resps.");
headerGroups.
addColInvisible();
for(UnidadeStats unidadeStats: cursoReport.
getCursoStats().
getUnidadesStats())
{
DataTable.
Row unidadeRow = tabelaComRespostasATodasAsPerguntasUnidadesSalas.
addRowNormal();
unidadeRow.
addColTextCenter(unidadeStats.
getNomeUnidade());
unidadeRow.
addColTextCenter(unidadeStats.
getNomeCurso());
//COLUNA POR CADA MEDIA DE CADA PERGUNTA NAS UNIDADES
List
<PerguntaStats
> perguntaStatsesUnidades = unidadeStats.
getUnidadeStatsGrupoUnidade().
getPerguntasStats();
1.5.0/docs/api/java/util/Collections.html">Collections.
sort(perguntaStatsesUnidades,
new Comparator
<PerguntaStats
>() {
@
1.5.0/docs/api/java/lang/Override.html">Override
public int compare
(PerguntaStats o1, PerguntaStats o2
) {
return 1.5.0/docs/api/java/lang/Integer.html">Integer.
parseInt(o1.
getNumero()) -
1.5.0/docs/api/java/lang/Integer.html">Integer.
parseInt(o2.
getNumero());
}
});
for(PerguntaStats guiaHeader: perguntaStatsesUnidadeHeader
)
{
boolean found =
false;
for(PerguntaStats perguntaStats : perguntaStatsesUnidades
)
{
if(perguntaStats.
getNumero().
equals(guiaHeader.
getNumero()))
{
unidadeRow.
addColPercentageDefinedCenter(perguntaStats.
getMediaEntidadeEmAvaliacaoPrint(), perguntaStats.
getPercentMediaEntidadeEmAvaliacao(),
true);
found =
true;
break;
}
}
if(!found
)
unidadeRow.
addColTextCenter("--");
}
//COLUNA POR CADA MEDIA DE CADA PERGUNTA NAS SALAS
List
<PerguntaStats
> perguntaStatsSalas = unidadeStats.
getUnidadeStatsGrupoSalas().
getPerguntasStats();
1.5.0/docs/api/java/util/Collections.html">Collections.
sort(perguntaStatsSalas,
new Comparator
<PerguntaStats
>() {
@
1.5.0/docs/api/java/lang/Override.html">Override
public int compare
(PerguntaStats o1, PerguntaStats o2
) {
return 1.5.0/docs/api/java/lang/Integer.html">Integer.
parseInt(o1.
getNumero()) -
1.5.0/docs/api/java/lang/Integer.html">Integer.
parseInt(o2.
getNumero());
}
});
for(PerguntaStats guiaHeader: perguntaStatsesSalasHeader
)
{
boolean found =
false;
for(PerguntaStats perguntaStats : perguntaStatsSalas
)
{
if(perguntaStats.
getNumero().
equals(guiaHeader.
getNumero()))
{
unidadeRow.
addColPercentageDefinedCenter(perguntaStats.
getMediaEntidadeEmAvaliacaoPrint(), perguntaStats.
getPercentMediaEntidadeEmAvaliacao(),
true);
found =
true;
break;
}
}
if(!found
)
unidadeRow.
addColTextCenter("--");
}
unidadeRow.
addColTextCenter("" + unidadeStats.
getInscritos());
unidadeRow.
addColTextCenter("" + unidadeStats.
getRespostas());
}
return tabelaComRespostasATodasAsPerguntasUnidadesSalas
;
}
private ArrayList
<TabelaPerguntaComparativosUnidades
> criarAnaliseConjuntaDeUnidadesAPergunta
(List
<PerguntaStats
> perguntasAgregadasGrupo, ArrayList
<UnidadeStats
> unidadesStats,
1.5.0/docs/api/java/lang/String.html">String grupo,
1.5.0/docs/api/java/lang/String.html">String subgrupo
)
{
Map
<String, List
<UnidadePergunta
>> unidadesPerguntas =
new HashMap
<String, List
<UnidadePergunta
>>();
for(UnidadeStats unidadeStats: unidadesStats
)
{
for(PerguntaStats prgStatUnidade :unidadeStats.
findUnidadeStatsGrupo(grupo,subgrupo
).
getPerguntasStats())
{
List
<UnidadePergunta
> unidadesPerguntasList = unidadesPerguntas.
get(prgStatUnidade.
getPergunta());
if(unidadesPerguntasList ==
null)
{
unidadesPerguntasList =
new ArrayList
<UnidadePergunta
>();
unidadesPerguntas.
put(prgStatUnidade.
getPergunta(),unidadesPerguntasList
);
}
unidadesPerguntasList.
add(new UnidadePergunta
(unidadeStats,prgStatUnidade
));
}
}
ArrayList
<TabelaPerguntaComparativosUnidades
> tabelas =
new ArrayList
<TabelaPerguntaComparativosUnidades
>();
for(1.5.0/docs/api/java/lang/String.html">String pergunta: unidadesPerguntas.
keySet())
{
TabelaPerguntaComparativosUnidades tabelaPerguntaComparativosUnidades =
new TabelaPerguntaComparativosUnidades
();
tabelas.
add(tabelaPerguntaComparativosUnidades
);
tabelaPerguntaComparativosUnidades.
setPergunta(pergunta
);
DataTable perguntaUnidadesTable =
new DataTable
();
tabelaPerguntaComparativosUnidades.
setTabelaComparativaUnidades(perguntaUnidadesTable
);
DataTable.
Row header = perguntaUnidadesTable.
addRowHeader();
header.
addColTextCenter("Unidade Curricular");
header.
addColTextCenter("Curso");
header.
addColTextCenter("Insc.");
header.
addColTextCenter("Resp.");
header.
addColTextCenter("% Resposta");
header.
addColTextCenter("Média");
header.
addColTextCenter("Desvio");
List
<UnidadePergunta
> unidadesPergunta = unidadesPerguntas.
get(pergunta
);
//SUPOSTAMENTE VEM SEMPRE PREENCHIDO
if(unidadesPergunta
!=
null && unidadesPergunta.
size() > 0
)
tabelaPerguntaComparativosUnidades.
setPerguntaNumero(unidadesPergunta.
get(0
).
getPerguntaStats().
getNumero());
1.5.0/docs/api/java/util/Collections.html">Collections.
sort(unidadesPergunta,
new Comparator
<UnidadePergunta
>() {
@
1.5.0/docs/api/java/lang/Override.html">Override
public int compare
(UnidadePergunta o1, UnidadePergunta o2
) {
double sub = o2.
getPerguntaStats().
getMediaEntidadeEmAvaliacao() - o1.
getPerguntaStats().
getMediaEntidadeEmAvaliacao();
if(sub
< 0.0
)
return -
1;
else if (sub
> 0.0
)
return 1;
else return 0;
}
});
for(UnidadePergunta unidadePergunta: unidadesPergunta
)
{
DataTable.
Row rowUnidade = perguntaUnidadesTable.
addRowNormal();
rowUnidade.
addColLabelCenter(unidadePergunta.
getUnidadeStats().
getNomeUnidade());
rowUnidade.
addColLabelCenter(unidadePergunta.
getUnidadeStats().
getNomeCurso());
rowUnidade.
addColTextRight("" + unidadePergunta.
getUnidadeStats().
getInscritos());
rowUnidade.
addColTextRight("" + unidadePergunta.
getUnidadeStats().
getRespostas());
rowUnidade.
addColTextRight("" + unidadePergunta.
getUnidadeStats().
getTaxaRespostaPrint0Slots());
rowUnidade.
addColPercentageDefinedCenter("" + unidadePergunta.
getPerguntaStats().
getMediaEntidadeEmAvaliacaoPrint(), unidadePergunta.
getPerguntaStats().
getPercentMediaEntidadeEmAvaliacao(),
true);
rowUnidade.
addColTextRight(unidadePergunta.
getPerguntaStats().
getDesvio());
}
}
return tabelas
;
}
private ChartWithDataTable criarAnaliseConjuntaDeUnidades
(List
<UnidadeStats
> unidadesStats
)
{
DataTable tabelaDocenteUnidade =
new DataTable
();
try {
1.5.0/docs/api/java/util/Collections.html">Collections.
sort(unidadesStats,
new Comparator
<UnidadeStats
>() {
@
1.5.0/docs/api/java/lang/Override.html">Override
public int compare
(UnidadeStats o1, UnidadeStats o2
) {
return o1.
getNomeUnidade().
compareTo(o2.
getNomeUnidade());
}
});
1.5.0/docs/api/java/lang/String.html">String unidadeSalasPath = criarChartETabelaMediaGruposPorUnidade
(500,30, unidadesStats,
PerguntasGrupoQueryDao.
GRUPO_UNIDADE_CODE_PERGUNTAS,
null,
PerguntasGrupoQueryDao.
GRUPO_SALAS_CODE_PERGUNTAS,
null,
tabelaDocenteUnidade,
"unidadeSalas",
new 1.5.0/docs/api/java/awt/Color.html">Color[]{ChartBuilderUtil.
COLOR_SECTION_GREEN_DARK,ChartBuilderUtil.
COLOR_SECTION_ROSE_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}
);
return
new ChartWithDataTable
(
"Analise Conjunta de Unidades",
"Unidade VS Instalações/Equipamentos/Outros Recursos",
unidadeSalasPath,
tabelaDocenteUnidade
);
} catch (1.5.0/docs/api/java/io/IOException.html">IOException e
) {
logger.
error(e,e
);
}
return null;
}
private 1.5.0/docs/api/java/lang/String.html">String criarAnaliseConjuntaDeUnidadesOrdenadaMediaUnidades
(List
<UnidadeStats
> unidadesStats
)
{
try {
1.5.0/docs/api/java/util/Collections.html">Collections.
sort(unidadesStats,
new Comparator
<UnidadeStats
>() {
@
1.5.0/docs/api/java/lang/Override.html">Override
public int compare
(UnidadeStats o1, UnidadeStats o2
) {
double sub =
(o2.
getUnidadeStatsGrupoUnidade().
getMediasGrupo().
getAvaliacaoMedia()
-
o1.
getUnidadeStatsGrupoUnidade().
getMediasGrupo().
getAvaliacaoMedia());
if(sub
> 0.0
)
return 1;
else if (sub
< 0.0
)
return -
1;
return 0;
}
});
1.5.0/docs/api/java/lang/String.html">String unidadeSalasPath = criarChartETabelaMediaGruposPorUnidade
(500,30, unidadesStats,
PerguntasGrupoQueryDao.
GRUPO_UNIDADE_CODE_PERGUNTAS,
null,
PerguntasGrupoQueryDao.
GRUPO_SALAS_CODE_PERGUNTAS,
null,
null,
"unidadeSalasOrderMediaUnidades",
new 1.5.0/docs/api/java/awt/Color.html">Color[]{ChartBuilderUtil.
COLOR_SECTION_GREEN_DARK,ChartBuilderUtil.
COLOR_SECTION_ROSE_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}
);
return unidadeSalasPath
;
} catch (1.5.0/docs/api/java/io/IOException.html">IOException e
) {
logger.
error(e,e
);
}
return null;
}
private 1.5.0/docs/api/java/lang/String.html">String criarAnaliseConjuntaDeUnidadesOrdenadaMediaSalas
(List
<UnidadeStats
> unidadesStats
)
{
try {
1.5.0/docs/api/java/util/Collections.html">Collections.
sort(unidadesStats,
new Comparator
<UnidadeStats
>() {
@
1.5.0/docs/api/java/lang/Override.html">Override
public int compare
(UnidadeStats o1, UnidadeStats o2
) {
double sub =
(o2.
getUnidadeStatsGrupoSalas().
getMediasGrupo().
getAvaliacaoMedia()
-
o1.
getUnidadeStatsGrupoSalas().
getMediasGrupo().
getAvaliacaoMedia());
if(sub
> 0.0
)
return 1;
else if (sub
< 0.0
)
return -
1;
return 0;
}
});
1.5.0/docs/api/java/lang/String.html">String unidadeSalasPath = criarChartETabelaMediaGruposPorUnidade
(500,30, unidadesStats,
PerguntasGrupoQueryDao.
GRUPO_UNIDADE_CODE_PERGUNTAS,
null,
PerguntasGrupoQueryDao.
GRUPO_SALAS_CODE_PERGUNTAS,
null,
null,
"unidadeSalasOrderMediaSalas",
new 1.5.0/docs/api/java/awt/Color.html">Color[]{ChartBuilderUtil.
COLOR_SECTION_GREEN_DARK,ChartBuilderUtil.
COLOR_SECTION_ROSE_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}
);
return unidadeSalasPath
;
} catch (1.5.0/docs/api/java/io/IOException.html">IOException e
) {
logger.
error(e,e
);
}
return null;
}
/**
*
* @param semanaContagemCurso List<[count,Week,Year]>
*/
private DataTable criarEvolucaoTaxasRespostas
(List
<Object
[]> semanaContagemCurso,
int respostasRequisitadas
)
{
DataTable tableEvolucaoRespostas =
new DataTable
();
DataTable.
Row header = tableEvolucaoRespostas.
addRowHeader();
header.
addColTextCenter("Semana");
header.
addColTextCenter("Respostas obtidas na semana");
header.
addColTextCenter("Respostas Acumuladas");
header.
addColTextCenter("Por Responder");
header.
addColTextCenter("Esperadas");
header.
addColTextCenter("%");
int acumuladas =
0;
1.5.0/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat dateFormat =
new 1.5.0/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat( "dd-MMM-yyyy" );
if(semanaContagemCurso.
size() > 0
)
{
for(5+0%2Fdocs%2Fapi+Object">Object[] semanaObj : semanaContagemCurso
)
{
1.5.0/docs/api/java/lang/Long.html">Long count =
(1.5.0/docs/api/java/lang/Long.html">Long) semanaObj
[0
];
acumuladas += count
;
int faltam = respostasRequisitadas - acumuladas
;
1.5.0/docs/api/java/lang/Integer.html">Integer semana =
(1.5.0/docs/api/java/lang/Integer.html">Integer) semanaObj
[1
];
1.5.0/docs/api/java/lang/Integer.html">Integer ano =
(1.5.0/docs/api/java/lang/Integer.html">Integer) semanaObj
[2
];
1.5.0/docs/api/java/lang/String.html">String percentagemPrt = ChartBuilderUtil.
getPercentagemPrint0Slots(acumuladas,respostasRequisitadas
);
double percentagem = ChartBuilderUtil.
getPercentagem(acumuladas,respostasRequisitadas
);
1.5.0/docs/api/java/util/Calendar.html">Calendar calendar =
1.5.0/docs/api/java/util/Calendar.html">Calendar.
getInstance();
calendar.
clear();
calendar.
set(1.5.0/docs/api/java/util/Calendar.html">Calendar.
YEAR, ano
);
calendar.
set(1.5.0/docs/api/java/util/Calendar.html">Calendar.
WEEK_OF_YEAR, semana
);
calendar.
set(1.5.0/docs/api/java/util/Calendar.html">Calendar.
DAY_OF_WEEK, 7
);
1.5.0/docs/api/java/lang/String.html">String dataFinalDaSemana = dateFormat.
format(calendar.
getTime());
DataTable.
Row rowSemana = tableEvolucaoRespostas.
addRowNormal();
rowSemana.
addColTextCenter(dataFinalDaSemana
);
rowSemana.
addColNumberRight(count +
"");
rowSemana.
addColNumberRight(acumuladas +
"").
setBackgroundColor(DataTable.
getColorGradientForPercentage(percentagem/100.0
));
rowSemana.
addColNumberRight(faltam +
"");
rowSemana.
addColNumberRight(""+ respostasRequisitadas
);
rowSemana.
addColPercentageProgressCenter(percentagemPrt
);
}
}
return tableEvolucaoRespostas
;
}
}