@ManagedBean(name = “controle”)
public class Controle implements Serializable {
Logging log;
@EJB
private ControleDao cdao;
private String titulo;
private String descricao;
private String classificacao;
private String status;
private Date data;
private Date prazo;
private List<DemDemandas> listDemandas;
public Controle() {
log = new Logging("Demandas");
}
public String adicionarDemanda() {
DemDemandas demandas = new DemDemandas();
System.out.println(data);
System.out.println(prazo);
demandas.setTitulo(this.titulo);
demandas.setData(this.data);
demandas.setDescricao(this.descricao);
demandas.setPrazo(this.prazo);
demandas.setStatus(this.status);
demandas.setClassificacao(this.classificacao);
cdao.insert(demandas);
return "relatorio";
}
public void consultaDemandas(){
ArrayList list = new ArrayList();
listDemandas = cdao.getFromNamedQuery("DemDemandas.findAll", list);
}
public String getClassificacao() {
return classificacao;
}
public void setClassificacao(String classificacao) {
this.classificacao = classificacao;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Date getPrazo() {
return prazo;
}
public void setPrazo(Date prazo) {
this.prazo = prazo;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public List<DemDemandas> getListDemandas() {
return listDemandas;
}
public void setListDemandas(List<DemDemandas> listDemandas) {
this.listDemandas = listDemandas;
}
}
[/code]
Aqui está a página que utiliza a lista:
[code]
<ui:composition template=“http://localhost:8080/Padrao/template/modelo.xhtml”
xmlns=“http://www.w3.org/1999/xhtml”
xmlns:h=“http://java.sun.com/jsf/html”
xmlns:ui=“http://java.sun.com/jsf/facelets”
xmlns:p=“http://primefaces.prime.com.tr/ui”
xmlns:f=“http://java.sun.com/jsf/core”>
<ui:define name=“menu”>
<ui:include src="…/modelos/menu.xhtml"/>
</ui:define>
<ui:define name=“conteudo”>
<h:form>
<p:dataTable var=“item”
value="#{controle.listDemandas}"
paginator=“true” rows=“20”
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
emptyMessage=“Sem registros”
selectionMode=“single”>
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Procurar em todos os campos:" />
<p:inputText id="globalFilter" onkeyup="" style="width:150px; margin-left: 10px;" />
</p:outputPanel>
</f:facet>
<p:column>
<f:facet name="header">
<h:outputText value="Título" />
</f:facet>
<h:outputText value="#{item.titulo}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Classificação" />
</f:facet>
<h:outputText value="#{item.classificacao}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Prazo" />
</f:facet>
<h:outputText value="#{item.prazo}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Status" />
</f:facet>
<h:outputText value="#{item.status}" />
</p:column>
</p:dataTable>
</h:form>
</ui:define>
</ui:composition>[/code]
Bean gerado, estou utilizando o query q ele mesmo gera pra mim:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.bb.direv.demandas.modelo;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name = "dem_demandas", catalog = "intranet", schema = "")
@NamedQueries({
@NamedQuery(name = "DemDemandas.findAll", query = "SELECT d FROM DemDemandas d"),
@NamedQuery(name = "DemDemandas.findByCodDemanda", query = "SELECT d FROM DemDemandas d WHERE d.codDemanda = :codDemanda"),
@NamedQuery(name = "DemDemandas.findByData", query = "SELECT d FROM DemDemandas d WHERE d.data = :data"),
@NamedQuery(name = "DemDemandas.findByPrazo", query = "SELECT d FROM DemDemandas d WHERE d.prazo = :prazo"),
@NamedQuery(name = "DemDemandas.findByClassificacao", query = "SELECT d FROM DemDemandas d WHERE d.classificacao = :classificacao"),
@NamedQuery(name = "DemDemandas.findByStatus", query = "SELECT d FROM DemDemandas d WHERE d.status = :status")})
public class DemDemandas implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "cod_demanda")
private Integer codDemanda;
@Basic(optional = false)
@Lob
@Column(name = "titulo")
private String titulo;
@Basic(optional = false)
@Column(name = "data")
@Temporal(TemporalType.DATE)
private Date data;
@Basic(optional = false)
@Lob
@Column(name = "descricao")
private String descricao;
@Basic(optional = false)
@Column(name = "prazo")
@Temporal(TemporalType.DATE)
private Date prazo;
@Basic(optional = false)
@Column(name = "classificacao")
private String classificacao;
@Basic(optional = false)
@Column(name = "status")
private String status;
public DemDemandas() {
}
public DemDemandas(Integer codDemanda) {
this.codDemanda = codDemanda;
}
public DemDemandas(Integer codDemanda, String titulo, Date data, String descricao, Date prazo, String classificacao, String status) {
this.codDemanda = codDemanda;
this.titulo = titulo;
this.data = data;
this.descricao = descricao;
this.prazo = prazo;
this.classificacao = classificacao;
this.status = status;
}
public Integer getCodDemanda() {
return codDemanda;
}
public void setCodDemanda(Integer codDemanda) {
this.codDemanda = codDemanda;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Date getPrazo() {
return prazo;
}
public void setPrazo(Date prazo) {
this.prazo = prazo;
}
public String getClassificacao() {
return classificacao;
}
public void setClassificacao(String classificacao) {
this.classificacao = classificacao;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
@Override
public int hashCode() {
int hash = 0;
hash += (codDemanda != null ? codDemanda.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof DemDemandas)) {
return false;
}
DemDemandas other = (DemDemandas) object;
if ((this.codDemanda == null && other.codDemanda != null) || (this.codDemanda != null && !this.codDemanda.equals(other.codDemanda))) {
return false;
}
return true;
}
@Override
public String toString() {
return "br.com.bb.direv.demandas.modelo.DemDemandas[codDemanda=" + codDemanda + "]";
}
}
e o dão genérico:
package br.com.bb.direv.demandas.dao;
import br.com.bb.direv.demandas.utilitarios.Logging;
import java.util.Calendar;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
@Stateless
public class ControleDao implements java.io.Serializable
{
@PersistenceContext(unitName = "EntidadesPU")
private EntityManager em;
Query q;
Logging log = new Logging("Demandas");
public void insert(Object entidade){
try {
em.persist(entidade);
} catch (Exception Ex) {
log.addLog(Calendar.getInstance().getTime() + "[ControleDao]{insert}: " + Ex.getMessage());
}
}
public void update(Object entidade){
try {
em.merge(entidade);
} catch (Exception Ex) {
log.addLog(Calendar.getInstance().getTime() + "[ControleDao]{update}: " + Ex.getMessage());
}
}
/**
* Excluir uma entidade no banco de dados
* @param entidade Classe da entidade
* @param cdEntidade Chave Primária da entidade
*/
public void excluir(Class entidade, Object cdEntidade) {
try {
em.getTransaction().begin();
em.remove(em.find(entidade, cdEntidade));
em.getTransaction().commit();
} catch (Exception Ex) {
log.addLog(Calendar.getInstance().getTime() + "[ControleDao]{excluir}: " + Ex.getMessage());
}
}
/**
* Buscar uma entidade no banco de dados
* @param entidade Classe da entidade
* @param cdEntidade Chave Primária da entidade
* @return Entidade
*/
public Object getEntidade(Class entidade, Object cdEntidade) {
Object resultado = null;
try {
resultado = em.find(entidade, cdEntidade);
} catch (IllegalArgumentException Ex) {
log.addLog(Calendar.getInstance().getTime() + "[ControleDao]{getEntidade}: " + Ex.getMessage());
}
return resultado;
}
/**
* Retornar valores a partir de uma NamedQuery
* @param namedQuery
* @param parametros Devem estar na ordem definida na NamedQuery
* @return Lista de Objetos
*/
public List getFromNamedQueryParametrosOrdenados(String namedQuery, List parametros) {
List resultado = null;
try {
q = em.createNamedQuery(namedQuery);
for (int i = 0; i < parametros.size(); i++) {
q.setParameter(i + 1, parametros.get(i));
}
resultado = q.getResultList();
} catch (Exception Ex) {
log.addLog(Calendar.getInstance().getTime() + "[ControleDao]{getFromNamedQuery}: " + Ex.getMessage());
}
return resultado;
}
/**
* Retornar valores a partir de uma NamedQuery
* @param namedQuery
* @param parametros Podem estar em qualquer ordem.
* @return Lista de Objetos
*/
public List getFromNamedQuery(String namedQuery, List<Object[]> parametros) {
List resultado = null;
try {
q = em.createNamedQuery(namedQuery);
for (int i = 0; i < parametros.size(); i++) {
q.setParameter((String) parametros.get(i)[0], parametros.get(i)[1]);
}
resultado = q.getResultList();
} catch (Exception Ex) {
log.addLog(Calendar.getInstance().getTime() + "[ControleDao]{getFromNamedQuery}: " + Ex.getMessage());
}
return resultado;
}
}
num encontro nada errado, nadinha T_T