Pessoal,
Estou com o seguinte problema: tenho uma lista de nomes de hospitais.
Essa lista deve ser apresentada em um telão. Esse telão pode apresentar no máximo 13 nomes de hospitais.
É exibida um lista com nomes de hospitais para cada especialidade cadastrada.
Por exemplo: Oftamologia => e uma lista dos hospitais que possuem essa especialidade.
Neurologia => e uma lista dos hospitais que possuem essa especialidade.
No caso de haver por exemplo 20 hospitais cadastrados para oftamologia, a exibição deve ser da seguinte forma:
Oftamologia => e uma lista dos hospitais que possuem essa especialidade (13 hospitais).
Oftamologia => e uma lista com 7 hospitais.
Neurologia => e uma lista dos hospitais que possuem essa especialidade.
Para a exibição estou usando o componente caroussel do primeface.
O código da minha tela:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<body>
<ui:composition template="_templateSemMenu.xhtml">
<ui:define name="corpo">
<style type="text/css">
.ui-datatable .ui-datatable-data .vermelho td{
background-color:#FF0000;
}
*{
font-weight: bold;
}
.especialidade{
font-size: 28px;
}
.titulo{
font-size: 30px;
}
.dados{
font-size: 25px;
}
</style>
<h:form id="formularioExibicao" >
<br></br>
<br></br>
<p:growl id="growl" showDetail="true" sticky="true"></p:growl>
<div align="center" >
<p:outputPanel id="painel" >
<p:carousel id="smallCarousel" value="#{exibicaoBean.listaExibicao}" var="quantitativoExibicao"
itemStyleClass="especialidade" rows="1" effect="easeInStrong" circular="true" pageLinks="4" autoPlayInterval="10000" style="width:1000px; height:100%;">
<p:panel id="panelEspecialidade">
<h:outputText value="#{quantitativoExibicao.especialidade.nome}" style="especialidade" />
</p:panel>
<p:dataTable id="tabelaQuantitativo" value="#{quantitativoExibicao.quantitativo}" var="quantitativo" rowStyleClass="#{quantitativo.quantidade le 0 ? 'vermelho' : null}" style="width:1000px; height:1000px;">
<p:column id="hospital" >
<f:facet name="header">
Hospital
</f:facet>
<h:outputText value="#{quantitativo.especialidadeREGMED.hospital.nome}" />
</p:column>
<p:column id="quantidade">
<f:facet name="header">
Esp
</f:facet>
<h:outputText value="#{quantitativo.quantidade}" />
</p:column>
<p:column id="encaminhamento" >
<f:facet name="header">
Enc
</f:facet>
<h:outputText value="#{quantitativo.encaminhamentos}" />
</p:column>
</p:dataTable>
</p:carousel>
</p:outputPanel>
</div>
</h:form>
</ui:define>
</ui:composition>
</body>
</html>
E o meu bean:
package br.pe.gov.ses.pme.mb;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import br.pe.gov.ses.pme.dao.DAO;
import br.pe.gov.ses.pme.dao.EspecialidadeREGMEDDAO;
import br.pe.gov.ses.pme.dao.QuantitativoDAO;
import br.pe.gov.ses.pme.dao.QuantitativoExibicaoDAO;
import br.pe.gov.ses.pme.modelo.Especialidade;
import br.pe.gov.ses.pme.modelo.Quantitativo;
import br.pe.gov.ses.pme.modelo.QuantitativoExibicao;
@ManagedBean
@ViewScoped
public class QuantitativoExibicaoBean implements Serializable{
private QuantitativoExibicao quantitativoExibicao = new QuantitativoExibicao();
private DAO<QuantitativoExibicao> dao = new DAO<QuantitativoExibicao>(QuantitativoExibicao.class);
private DAO<Especialidade> daoEspecialidade = new DAO<Especialidade>(Especialidade.class);
private List<QuantitativoExibicao> listaExibicao;
private List<QuantitativoExibicao> listaExibicaoPaginado;
private List<Especialidade> listaEspecialidade;
private Date data;
private int turno;
private int show;
private int paginacao;
@Inject
private QuantitativoDAO quantitativoDAO;
@Inject
private QuantitativoExibicaoDAO quantExibicaoDAO;
@Inject
private EspecialidadeREGMEDDAO especialidadeREGMEDDAO;
public QuantitativoExibicaoBean(){
}
@PostConstruct
public void init(){
this.listaExibicao = new ArrayList();
this.setListaEspecialidade(this.daoEspecialidade.listarTodos());
this.show = 0;
this.paginacao = 0;
}
public QuantitativoExibicaoBean(QuantitativoExibicaoDAO exibDAO){
this.quantExibicaoDAO = exibDAO;
}
/*
* Método que monta as informações para exibição
*/
public String criarExibicao(){
int contador = 0;
String url = "";
boolean existePlantao = this.quantitativoDAO.existePlantao(this.data, this.turno);
if(existePlantao){
for(int i = 0; i < this.listaEspecialidade.size(); i++){
contador++;
Especialidade tempEspecialidade = this.listaEspecialidade.get(i);
List<Quantitativo> tempListaQuantitativo = this.setarListaExibicao(tempEspecialidade, this.data, this.turno);
System.out.println("tam do tempListaQuantitativo "+tempListaQuantitativo.size() );
QuantitativoExibicao tempExibicao = new QuantitativoExibicao();
tempExibicao.setEspecialidade(tempEspecialidade);
tempExibicao.setQuantitativo(tempListaQuantitativo);
this.listaExibicao.add(tempExibicao);
}
this.show = 1;
url = "ExibicaoQuantitativo.jsf?faces-redirect=true";
FacesContext.getCurrentInstance().getExternalContext().getFlash().put("lista", this.listaExibicao);
}else{
FacesContext facesContext = FacesContext.getCurrentInstance();
facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Não há exibição para esse plantão", ""));
facesContext.getExternalContext().getFlash().setKeepMessages(true);
url = "EscolhaExibicao.jsf?faces-redirect=true";
}
return url;
}
public List<Quantitativo> setarListaExibicao(Especialidade especialidade, Date data, int turno){
System.out.println("nome da especialidade: "+especialidade.getNome());
List<Quantitativo> resultante = new ArrayList();
List<Quantitativo> filtrado = this.quantitativoDAO.procurarQuantitativo(data, turno, especialidade);
List<Quantitativo> restante = this.quantitativoDAO.setarHospitaisQuantitativo(especialidade);
int tamanho = filtrado.size() + restante.size();
System.out.println("tamanho: "+tamanho);
int indice = 0;
resultante = filtrado;
for(int i = filtrado.size(); i< tamanho; i++){
resultante.add(i, restante.get(indice));
indice++;
}
return resultante;
}
public QuantitativoExibicao getExibicaoQuantitativo() {
return quantitativoExibicao;
}
public void setExibicaoQuantitativo(QuantitativoExibicao exibicaoQuantitativo) {
this.quantitativoExibicao = exibicaoQuantitativo;
}
public List<QuantitativoExibicao> getListaExibicao() {
return listaExibicao;
}
public void setListaExibicao(List<QuantitativoExibicao> lista) {
this.listaExibicao = lista;
}
public DAO<QuantitativoExibicao> getDao() {
return dao;
}
public void setDao(DAO<QuantitativoExibicao> dao) {
this.dao = dao;
}
public QuantitativoExibicaoDAO getQuantExibicaoDAO() {
return quantExibicaoDAO;
}
public void setQuantExibicaoDAO(QuantitativoExibicaoDAO quantExibicaoDAO) {
this.quantExibicaoDAO = quantExibicaoDAO;
}
public List<Especialidade> getListaEspecialidade() {
return listaEspecialidade;
}
public void setListaEspecialidade(List<Especialidade> listaEspecialidade) {
this.listaEspecialidade = listaEspecialidade;
}
public DAO<Especialidade> getDaoEspecialidade() {
return daoEspecialidade;
}
public void setDaoEspecialidade(DAO<Especialidade> daoEspecialidade) {
this.daoEspecialidade = daoEspecialidade;
}
public QuantitativoDAO getQuantitativoDAO() {
return quantitativoDAO;
}
public void setQuantitativoDAO(QuantitativoDAO quantitativoDAO) {
this.quantitativoDAO = quantitativoDAO;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
public int getTurno() {
return turno;
}
public void setTurno(int turno) {
this.turno = turno;
}
public int getShow() {
return show;
}
public void setShow(int show) {
this.show = show;
}
public EspecialidadeREGMEDDAO getEspecialidadeREGMEDDAO() {
return especialidadeREGMEDDAO;
}
public void setEspecialidadeREGMEDDAO(EspecialidadeREGMEDDAO especialidadeREGMEDDAO) {
this.especialidadeREGMEDDAO = especialidadeREGMEDDAO;
}
public int getPaginacao() {
return paginacao;
}
public void setPaginacao(int paginacao) {
this.paginacao = paginacao;
}
public List<QuantitativoExibicao> getListaExibicaoPaginado() {
return listaExibicaoPaginado;
}
public void setListaExibicaoPaginado(List<QuantitativoExibicao> listaExibicaoPaginado) {
this.listaExibicaoPaginado = listaExibicaoPaginado;
}
}