package br.edu.cesmac.sic.controller.beans;
import java.io.Serializable;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.model.StreamedContent;
import org.springframework.context.annotation.Scope;
import br.edu.cesmac.relatorio.util.RelatorioUtils;
import br.edu.cesmac.sic.core.domain.model.ProjetoPesquisa;
import br.edu.cesmac.sic.core.domain.model.dto.FiltroRelatorioProcessoSeletivo;
import br.edu.cesmac.sic.core.domain.model.dto.FiltroRelatorioProjetoPesquisa;
import br.edu.cesmac.sic.core.domain.model.dto.RelatorioAvaliacaoDTO;
import br.edu.cesmac.sic.core.domain.model.tipo.TipoRelatorioSistema;
import br.edu.cesmac.sic.core.domain.service.EmissorRelatorioService;
import br.edu.cesmac.web.exception.VerificadorLancamentoException;
import br.edu.cesmac.web.exception.VerificadorLancamentoException.CommandRelatorioStreamedContent;
import net.sf.jasperreports.engine.JasperPrint;
@Named
@Scope
("view")
public class RelatorioBean
implements Serializable {
private static final long serialVersionUID = 1L
;
private EmissorRelatorioService emissorRelatorioService
;
private FiltroRelatorioProcessoSeletivo filtroRelatorioProcessoSeletivo =
new FiltroRelatorioProcessoSeletivo
();
private FiltroRelatorioProjetoPesquisa filtroRelatorioProjetoPesquisa =
new FiltroRelatorioProjetoPesquisa
();
private RelatorioAvaliacaoDTO relatorioAvaliacaoDTO
;
@Inject
public RelatorioBean
(EmissorRelatorioService emissorRelatorioService
) {
this.
emissorRelatorioService = emissorRelatorioService
;
}
public FiltroRelatorioProcessoSeletivo getFiltroRelatorioProcessoSeletivo
() {
return filtroRelatorioProcessoSeletivo
;
}
public void setFiltroRelatorioProcessoSeletivo
(FiltroRelatorioProcessoSeletivo filtroRelatorioProcessoSeletivo
) {
this.
filtroRelatorioProcessoSeletivo = filtroRelatorioProcessoSeletivo
;
}
public TipoRelatorioSistema
[] getTiposRelatorioSistema
() {
return TipoRelatorioSistema.
values();
}
public FiltroRelatorioProjetoPesquisa getFiltroRelatorioProjetoPesquisa
() {
return filtroRelatorioProjetoPesquisa
;
}
public void setFiltroRelatorioProjetoPesquisa
(FiltroRelatorioProjetoPesquisa filtroRelatorioProjetoPesquisa
) {
this.
filtroRelatorioProjetoPesquisa = filtroRelatorioProjetoPesquisa
;
}
public RelatorioAvaliacaoDTO getRelatorioAvaliacaoDTO
() {
return relatorioAvaliacaoDTO
;
}
public void setRelatorioAvaliacaoDTO
(RelatorioAvaliacaoDTO relatorioAvaliacaoDTO
) {
this.
relatorioAvaliacaoDTO = relatorioAvaliacaoDTO
;
}
public StreamedContent emitirRelatorioProcessoSeletivo
() {
return new VerificadorLancamentoException
().
verificarLancamentoException(new CommandRelatorioStreamedContent
() {
@
Override
public StreamedContent execute
() {
JasperPrint relatorio = emissorRelatorioService.
emitirRelatorioProcessoSeletivo(filtroRelatorioProcessoSeletivo
);
return RelatorioUtils.
gerarPdf(relatorio, relatorio.
getName());
}
});
}
public StreamedContent emitirAvaliacoesDoProjetoPesquisa
(final ProjetoPesquisa projetoPesquisa
) {
return new VerificadorLancamentoException
().
verificarLancamentoException(new CommandRelatorioStreamedContent
() {
@
Override
public StreamedContent execute
() {
getFiltroRelatorioProjetoPesquisa
().
setProjetoPesquisa(projetoPesquisa
);
getFiltroRelatorioProjetoPesquisa
().
setTipoRelatorio(TipoRelatorioSistema.
AVALIACAO);
// Avaliacao avaliacao = new Avaliacao();
// AvaliacaoId avaliacaoId = new AvaliacaoId();
// avaliacaoId.setSequencialAvaliador(new Long(1));
// avaliacao.setAvaliacaoId(avaliacaoId);
// avaliacao.setIndicadorTecnicoCientificoRelevante(false);
// getFiltroRelatorioProjetoPesquisa().getAvaliacoes().add(avaliacao);
JasperPrint relatorio = emissorRelatorioService.
emitirAvaliacoesDoProjetoPesquisa(getFiltroRelatorioProjetoPesquisa
());
return RelatorioUtils.
gerarPdf(relatorio, relatorio.
getName());
}
});
}
}