Closed jairofsouza closed 9 years ago
Primeiro vamos mudar o menu coordenador par ao seguinte:
agora vamos para o tcc-curso.zul vamos mudar para o seguinte (linha 43)
<div visible="@load(vm.projetos)">
<combobox value="Todos" onChange="@command('filtraProjeto',item=self.selectedIndex)">
<comboitem label="Todos"/>
<comboitem label="Projetos"/>
<comboitem label="Trabalhos"/>
<comboitem label="Projetos incompletos"/>
<comboitem label="Projetos aguardando aprovação"/>
<comboitem label="Trabalhos incompletos"/>
<comboitem label="Trabalhos aguardando aprovação"/>
</combobox>
</div>
<separator orient="vertical"
spacing="3px" />
<label value="Semestre: " visible="@load(vm.projetos)" />
<div visible="@load(vm.projetos)">
<radiogroup id="sv2" onCheck="@command('semestreEscolhido',item=self.selectedIndex)" />
<radio id="r1" label="Atual" radiogroup="sv2" selected="true" />
<radio id="r2" label="Todos" radiogroup="sv2" />
</div>
<separator orient="vertical"
spacing="3px" />
agora vamos criar as funções para alimentar essas mudanças
em TCCsCursoController:
adicionar
@Command
public void semestreEscolhido(@BindingParam("item") int item)//0=atual, 1 = anteriores
{
semestre = item;
filtraProjeto(tipoTrabalho);
}
mudar :
@Command public void filtraProjeto(@BindingParam("item") int item) { tipoTrabalho=item;
switch(tipoTrabalho){
case 0://TODOS
if(semestre==0)
tccs = new TCCBusiness().getNotFinishedTCCsAndProjectsByCursoAndCalendar(getUsuario().getCurso(), getCurrentCalendar(getUsuario().getCurso()));
else
tccs = new TCCBusiness().getNotFinishedTCCsAndProjectsByCurso(getUsuario().getCurso());
break;
case 1://PROJETOS
if(semestre==0)
tccs = new TCCBusiness().getProjetosByCursoAndCalendar(getUsuario().getCurso(), getCurrentCalendar(getUsuario().getCurso()));
else
tccs = new TCCBusiness().getProjetosByCurso(getUsuario().getCurso());
break;
case 2://TRABALHOS
if(semestre==0)
tccs = new TCCBusiness().getNotFinishedTCCsByCursoAndCalendar(getUsuario().getCurso(), getCurrentCalendar(getUsuario().getCurso()));
else
tccs = new TCCBusiness().getNotFinishedTCCsByCurso(getUsuario().getCurso());
break;
case 3://PROJETOS INCOMPLETOS
if(semestre==0)
tccs = new TCCBusiness().getProjetosByCursoAndCalendar(getUsuario().getCurso(), getCurrentCalendar(getUsuario().getCurso()));
else
tccs = new TCCBusiness().getProjetosByCurso(getUsuario().getCurso());
tccs = new TCCBusiness().filtraProjetosIncompletos(tccs);
break;
case 4://PROJETOS AGUARDANDO APROVAÇÂO
if(semestre==0)
tccs = new TCCBusiness().getProjetosByCursoAndCalendar(getUsuario().getCurso(), getCurrentCalendar(getUsuario().getCurso()));
else
tccs = new TCCBusiness().getProjetosByCurso(getUsuario().getCurso());
tccs = new TCCBusiness().filtraProjetosAguardandoAprovacao(tccs);
break;
case 5://TRABALHOS INCOMPLETOS
if(semestre==0)
tccs = new TCCBusiness().getNotFinishedTCCsByCursoAndCalendar(getUsuario().getCurso(), getCurrentCalendar(getUsuario().getCurso()));
else
tccs = new TCCBusiness().getNotFinishedTCCsByCurso(getUsuario().getCurso());
tccs = new TCCBusiness().filtraTrabalhosIncompletos(tccs);
break;
case 6://TRABALHOS AGUARDANDO APROVAÇÂO
if(semestre==0)
tccs = new TCCBusiness().getNotFinishedTCCsByCursoAndCalendar(getUsuario().getCurso(), getCurrentCalendar(getUsuario().getCurso()));
else
tccs = new TCCBusiness().getNotFinishedTCCsByCurso(getUsuario().getCurso());
tccs = new TCCBusiness().filtraTrabalhosAguardandoAprovacao(tccs);
break;
default:
return;
}
filterYear = "Todos";
filterTccs = tccs;
this.filtra();
}
e criar a variável global
private int semestre = 0;//0=atual, 1 = anteriores
Agora para as Buscas no BD
TCCBussines:
public List
public List<TCC> getNotFinishedTCCsAndProjectsByCursoAndCalendar(Curso curso, CalendarioSemestre currentCalendar) {
if(currentCalendar != null)
return tccDao.getNotFinishedTCCsAndProjectsByCursoAndCalendar(curso, currentCalendar);
else
return null;
}
public List<TCC> getProjetosByCursoAndCalendar(Curso curso, CalendarioSemestre currentCalendar) {
if(currentCalendar != null)
return tccDao.getProjetosByCursoAndCalendar(curso, currentCalendar);
else
return null;
}
public TCC getCurrentNotFinishedTCCByAuthor(Usuario user,CalendarioSemestre currentCalendar) {
if(currentCalendar != null)
return tccDao.getCurrentNotFinishedTCCByAuthor(user, currentCalendar);
else
return null;
}
public List<TCC> getNotFinishedTCCsByCurso(Curso curso) {
return tccDao.getNotFinishedTCCsByCurso(curso);
}
public List<TCC> getNotFinishedTCCsAndProjectsByCurso(Curso curso) {
return tccDao.getNotFinishedTCCsAndProjectsByCurso(curso);
}
public List<TCC> getProjetosByCurso(Curso curso) {
return tccDao.getProjetosByCurso(curso);
}
public boolean isProjetoAguardandoAprovacao(TCC tcc)
{
if(tcc.isProjeto() && tcc.getPalavrasChave()!=null && tcc.getArquivoTCCBanca()!=null
&& tcc.getResumoTCC()!=null && tcc.getOrientador()!=null && tcc.getNomeTCC()!=null)
return true;
return false;
}
public boolean isProjetoIncompleto(TCC tcc)
{
if(tcc.isProjeto() && !isProjetoAguardandoAprovacao(tcc))
return true;
return false;
}
public boolean isTrabalhoAguardandoAprovacao(TCC tcc)
{
ParticipacaoBusiness pb = new ParticipacaoBusiness();
if(!tcc.isProjeto() && tcc.getPalavrasChave()!=null && tcc.getArquivoTCCBanca()!=null
&& tcc.getResumoTCC()!=null && tcc.getOrientador()!=null && tcc.getNomeTCC()!=null
&& tcc.getSalaDefesa()!=null && tcc.getDataApresentacao()!=null
&& pb.getParticipacoesByTCC(tcc).size()>0)
return true;
return false;
}
public boolean isTrabalhoIncompleto(TCC tcc)
{
if(!tcc.isProjeto() && !isTrabalhoAguardandoAprovacao(tcc))
return true;
return false;
}
public List<TCC> filtraProjetosIncompletos(List<TCC> projetos)
{
for(int i=0;i<projetos.size();i++)
if(!isProjetoIncompleto(projetos.get(i)))
{
projetos.remove(i);
i--;
}
return projetos;
}
public List<TCC> filtraProjetosAguardandoAprovacao(List<TCC> projetos)
{
for(int i=0;i<projetos.size();i++)
if(!isProjetoAguardandoAprovacao(projetos.get(i)))
{
projetos.remove(i);
i--;
}
return projetos;
}
public List<TCC> filtraTrabalhosIncompletos(List<TCC> trabalhos)
{
for(int i=0;i<trabalhos.size();i++)
if(!isTrabalhoIncompleto(trabalhos.get(i)))
{
trabalhos.remove(i);
i--;
}
return trabalhos;
}
public List<TCC> filtraTrabalhosAguardandoAprovacao(List<TCC> trabalhos)
{
for(int i=0;i<trabalhos.size();i++)
if(!isTrabalhoAguardandoAprovacao(trabalhos.get(i)))
{
trabalhos.remove(i);
i--;
}
return trabalhos;
}
E TCCDAO:
public List<TCC> getNotFinishedTCCsByCursoAndCalendar(Curso curso, CalendarioSemestre currentCalendar) {
try {
Query query = getSession()
.createQuery(
"SELECT t FROM TCC AS t JOIN FETCH t.aluno AS a JOIN FETCH t.orientador LEFT JOIN FETCH t.coOrientador WHERE a.curso = :curso AND t.dataEnvioFinal IS NULL AND t.calendarioSemestre = :currentCalendar AND t.projeto = :projeto ORDER BY t.dataEnvioFinal DESC");
query.setParameter("curso", curso);
query.setParameter("currentCalendar", currentCalendar);
query.setParameter("projeto", false);
List<TCC> resultados = query.list();
getSession().close();
if (resultados != null)
return resultados;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public List<TCC> getNotFinishedTCCsAndProjectsByCursoAndCalendar(Curso curso, CalendarioSemestre currentCalendar) {
try {
Query query = getSession()
.createQuery(
"SELECT t FROM TCC AS t JOIN FETCH t.aluno AS a JOIN FETCH t.orientador LEFT JOIN FETCH t.coOrientador WHERE a.curso = :curso AND t.dataEnvioFinal IS NULL AND t.calendarioSemestre = :currentCalendar ORDER BY t.dataEnvioFinal DESC");
query.setParameter("curso", curso);
query.setParameter("currentCalendar", currentCalendar);
List<TCC> resultados = query.list();
getSession().close();
if (resultados != null)
return resultados;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public List<TCC> getProjetosByCursoAndCalendar(Curso curso, CalendarioSemestre currentCalendar) {
try {
Query query = getSession()
.createQuery(
"SELECT t FROM TCC AS t JOIN FETCH t.aluno AS a JOIN FETCH t.orientador LEFT JOIN FETCH t.coOrientador WHERE a.curso = :curso AND t.dataEnvioFinal IS NULL AND t.calendarioSemestre = :currentCalendar AND t.projeto = :projeto ORDER BY t.dataEnvioFinal DESC");
query.setParameter("curso", curso);
query.setParameter("currentCalendar", currentCalendar);
query.setParameter("projeto", true);
List<TCC> resultados = query.list();
getSession().close();
if (resultados != null)
return resultados;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public TCC getCurrentNotFinishedTCCByAuthor(Usuario user,
CalendarioSemestre currentCalendar) {
TCC resultado = null;
try {
Query query = getSession()
.createQuery(
"SELECT t FROM TCC AS t JOIN FETCH t.aluno AS a JOIN FETCH a.curso JOIN FETCH t.orientador LEFT JOIN FETCH t.coOrientador LEFT JOIN FETCH t.participacoes AS p LEFT JOIN FETCH p.professor WHERE t.aluno = :user AND t.calendarioSemestre = :currentCalendar AND t.dataEnvioFinal IS NULL");
query.setParameter("user", user);
query.setParameter("currentCalendar", currentCalendar);
resultado = (TCC) query.uniqueResult();
getSession().close();
} catch (Exception e) {
e.printStackTrace();
}
return resultado;
}
public List<TCC> getNotFinishedTCCsByCurso(Curso curso) {
try {
Query query = getSession()
.createQuery(
"SELECT t FROM TCC AS t JOIN FETCH t.aluno AS a JOIN FETCH t.orientador LEFT JOIN FETCH t.coOrientador WHERE a.curso = :curso AND t.dataEnvioFinal IS NULL AND t.projeto = :projeto ORDER BY t.dataEnvioFinal DESC");
query.setParameter("curso", curso);
query.setParameter("projeto", false);
List<TCC> resultados = query.list();
getSession().close();
if (resultados != null)
return resultados;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public List<TCC> getNotFinishedTCCsAndProjectsByCurso(Curso curso) {
try {
Query query = getSession()
.createQuery(
"SELECT t FROM TCC AS t JOIN FETCH t.aluno AS a JOIN FETCH t.orientador LEFT JOIN FETCH t.coOrientador WHERE a.curso = :curso AND t.dataEnvioFinal IS NULL ORDER BY t.dataEnvioFinal DESC");
query.setParameter("curso", curso);
List<TCC> resultados = query.list();
getSession().close();
if (resultados != null)
return resultados;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public List<TCC> getProjetosByCurso(Curso curso) {
try {
Query query = getSession()
.createQuery(
"SELECT t FROM TCC AS t JOIN FETCH t.aluno AS a JOIN FETCH t.orientador LEFT JOIN FETCH t.coOrientador WHERE a.curso = :curso AND t.dataEnvioFinal IS NULL AND t.projeto = :projeto ORDER BY t.dataEnvioFinal DESC");
query.setParameter("curso", curso);
query.setParameter("projeto", true);
List<TCC> resultados = query.list();
getSession().close();
if (resultados != null)
return resultados;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Algumas funções podem estar repitidas, substituir elas.
Para o coordenador, a tela de Gerenciar Trabalhos é redundante. A tela "Trabalhos/Projetos no semestre" poderia se chamar gerenciar trabalhos. Poderia ter um botão de radio para filtrar trabalhos no semestre ou antigos Poderia ter um filtro para a situação do trabalho/projeto (incompleto, aprovado, etc).