minha tela cadastrar_pesquisa.xhtml
<?xml version="1.0" encoding="ISO-8859-1" ?> Tela de Pesquisa</h:head>
<h:body>
<h:form>
<p:menubar>
<p:submenu label=“Cadastrar”>
<p:menuitem value=“Empresa"
url=”/pages/cadastro/cadastrar_empresa.xhtml" />
<p:menuitem value=“Questão"
url=”/pages/cadastro/cadastrar_questao.xhtml" />
<p:menuitem value=“Pesquisa"
url=”/pages/cadastro/cadastrar_pesquisa.xhtml" />
<p:menuitem value=“Estado"
url=”/pages/cadastro/cadastrar_estado.xhtml" />
</p:submenu>
</p:menubar>
</h:form>
<h:form id="formListagem">
<p:panel header="Gestão de Pesquisa">
<p>Informe abaixo os campos para pesquisa:</p>
<p:panelGrid id="painelForm" columns="2">
<p:outputLabel value="Pelo título da pesquisa: " />
<p:inputText type="text"
value="#{pesquisaBean.pesquisa.tituloDaPesquisa}" />
<p:outputLabel value="Pela questão: " />
<p:inputText />
</p:panelGrid>
<p:dataTable emptyMessage="Nada encontrado"
value="#{pesquisaBean.pesquisas}" var="pesquisa" paginator="true"
id="tabela">
<f:facet name="header">
<p:commandButton value="Novo" oncomplete="PF('dialogo').show()"
update=":formCadastro:painel"
actionListener="#{pesquisaBean.novo}" />
<p:commandButton value="Pesquisar" />
<p:commandButton value="Sair" update=":mensagem"
actionListener="#{empresaBean.principal}"
action="principal?faces-redirect=true" />
</f:facet>
<p:column headerText="Data da Pesquisa">
<h:outputText value="#{pesquisa.dataPesquisa}" />
</p:column>
<p:column headerText="Titulo da Pesquisa">
<h:outputText value="#{pesquisa.tituloDaPesquisa}" />
</p:column>
<p:column headerText="Descrição">
<h:outputText value="#{pesquisa.descricao}" />
</p:column>
<p:column headerText="Questões">
<h:outputText />
</p:column>
<p:column headerText="Opções">
<p:commandButton icon="ui-icon-pencil"
actionListener="#{pesquisaBean.editar}"
update=":formCadastro:painel" oncomplete="PF('dialogo').show()">
<f:attribute name="itemSelecionado" value="#{pesquisa}" />
<f:actionListener
type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</p:commandButton>
<p:commandButton icon="ui-icon-trash"
actionListener="#{pesquisaBean.excluir}"
update=":mensagem :formListagem:tabela">
<p:confirm header="Confirmação"
message="Deseja excluir este item?" icon="ui-icon-alert" />
<f:attribute name="itemSelecionado" value="#{pesquisa}" />
</p:commandButton>
</p:column>
</p:dataTable>
</p:panel>
<p:confirmDialog global="true">
<p:commandButton value="Sim" type="button"
styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="Não" type="button"
styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</h:form>
<p:dialog header="Cadastro de Pesquisa" widgetVar="dialogo"
draggable="false" resizable="false" modal="true" closable="false">
<p:growl id="mensagem" />
<h:form id="formCadastro">
<h:panelGrid id="painel" columns="2">
<p:outputLabel value="Codigo:" />
<h:outputText value="#{pesquisaBean.pesquisa.codPesquisa}" />
<p:outputLabel value="Título da Pesquisa*: " />
<p:inputText type="text"
value="#{pesquisaBean.pesquisa.tituloDaPesquisa}" required="true"
requiredMessage="O campo 'Título da Pesquisa' é obrigatorio"
size="29" />
<p:outputLabel value="Descrição: " />
<p:inputTextarea cols="30"
value="#{pesquisaBean.pesquisa.descricao}">
</p:inputTextarea>
<p:outputLabel value="Data da Pesquisa" />
<p:calendar mask="99/99/9999" size="10"
value="#{pesquisaBean.pesquisa.dataPesquisa}" />
</h:panelGrid>
<p:panelGrid columns="5">
<p:outputLabel value="Questões*: " />
<p:selectOneMenu filter="true" value="#{pesquisaBean.pesquisa}"
required="true" requiredMessage="O campo 'Questões' é obrigatorio">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione um item abaixo"></f:selectItem>
<f:selectItems value="#{pesquisaBean.questoes}" var="questao"
itemLabel="#{questao.enunciado}" />
</p:selectOneMenu>
<p:commandButton update=":formCadastro:painel :mensagem"
value="Adicionar" actionListener="#{pesquisaBean.incluirItem}" />
<p:selectBooleanCheckbox id="ok"
value="#{pesquisaBean.relacao.obrigatorio}" />
<p:outputLabel value="Obrigatório ?" />
</p:panelGrid>
<p:dataTable emptyMessage="Nenhuma questão adicionada ainda"
value="#{pesquisaBean.questoes}" var="pesquisa">
<p:column headerText="Questão">
<h:outputText value="#{pesquisa.enunciado}" />
</p:column>
<p:column headerText="Obrigatorio">
</p:column>
<p:column headerText="Posição da questão">
<p:inputText size="3" />
</p:column>
<p:column headerText="Opção">
<p:commandButton icon="ui-icon-pencil"
actionListener="#{pesquisaBean.editar}"
update=":formCadastro:painel" oncomplete="PF('dialogo').show()">
<f:attribute name="itemSelecionado" value="#{pesquisa}" />
<f:actionListener
type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</p:commandButton>
<p:commandButton icon="ui-icon-trash"
update=":mensagem :formListagem:tabela">
<p:confirm header="Confirmação"
message="Deseja excluir este item?" icon="ui-icon-alert" />
<f:attribute name="itemSelecionado" value="#{pesquisa}" />
</p:commandButton>
</p:column>
<p:confirmDialog global="true">
<p:commandButton value="Sim" type="button"
styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="Não" type="button"
styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</p:dataTable>
<h:panelGrid columns="2">
<p:commandButton value="Salvar" update=":mensagem"
actionListener="#{pesquisaBean.cadastrar}" />
<p:commandButton value="Sair" oncomplete="PF('dialogo').hide()" />
</h:panelGrid>
</h:form>
</p:dialog>
</h:body>
aqui é minha bean :
package br.com.bean;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import org.omnifaces.util.Messages;
import br.com.dao.PesquisaDao;
import br.com.dao.QuestaoDao;
import br.com.dao.RegistroDoUsuarioDao;
import br.com.modelo.Alternativa;
import br.com.modelo.Pesquisa;
import br.com.modelo.Questao;
import br.com.modelo.RegistroDoUsuario;
import br.com.modelo.RelacionamentoPesquisaComQuestoes;
@SuppressWarnings(“serial”)
@ManagedBean
@ViewScoped
public class PesquisaBean implements Serializable{
private Questao questao = new Questao();
private RelacionamentoPesquisaComQuestoes relacao = new RelacionamentoPesquisaComQuestoes();
private List<Questao> questoes;
private List<Pesquisa> pesquisas = new ArrayList<Pesquisa>();
private Pesquisa pesquisa = new Pesquisa();
private PesquisaDao dao = new PesquisaDao();
private RegistroDoUsuario registro = new RegistroDoUsuario();
private QuestaoDao questaoDao = new QuestaoDao();
private Alternativa alternativa = new Alternativa();
private List<Questao> questaoSelecionada;
public void novo() {
pesquisa = new Pesquisa();
}
public PesquisaBean() {
listarQuestoes();
}
public void cadastrar() {
//pesquisa.setDataPesquisa(new Date());
registro.setDataCadastro(new Date());
registro.setQuestoes(questao);
registro.setRespostas(questao.getEnunciado());
registro.setAlternativa(alternativa);
RegistroDoUsuarioDao registroDao = new RegistroDoUsuarioDao();
try {
registroDao.cadastrar(registro);
Messages.addFlashGlobalInfo("Cadastro salvo com sucesso");
pesquisa.setRegistroDoUsuario(registro);
dao.cadastrar(pesquisa);
Messages.addFlashGlobalInfo("Cadastrado com sucesso!");
novo();
questoes = questaoDao.listar();
System.out.println("cadastrou");
} catch (SQLException e){
Messages.addGlobalError("Erro ao tentar cadastrar Pesquisa");
e.printStackTrace();
}
}
public void incluirItem(){
try {
questoes = questaoDao.listar();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void excluir(ActionEvent evento){
try {
pesquisa = (Pesquisa) evento.getComponent().getAttributes().get("itemSelecionado");
PesquisaDao dao = new PesquisaDao();
dao.deletar(pesquisa);
pesquisas = dao.listar();
Messages.addGlobalInfo("Empresa removida com sucesso! ");
} catch (SQLException e) {
Messages.addGlobalError("Erro ao tentar excluir");
e.printStackTrace();
}
}
public void editar(ActionEvent evento){
pesquisa = (Pesquisa) evento.getComponent().getAttributes().get("itemSelecionado");
}
//@PostConstruct
public void listarQuestoes(){
try {
questoes = questaoDao.listar();
} catch (SQLException e) {
Messages.addGlobalError("Erro ao tentar listar");
e.printStackTrace();
}
}
@PostConstruct
public void listar(){
PesquisaDao dao = new PesquisaDao();
try {
//setPesquisas(dao.listar());
pesquisas = dao.listar();
} catch (SQLException e) {
Messages.addGlobalError("Erro ao tentar listar");
e.printStackTrace();
}
}
public Pesquisa getPesquisa() {
return pesquisa;
}
public void setPesquisa(Pesquisa pesquisa) {
this.pesquisa = pesquisa;
}
public List<Questao> getQuestoes() {
return questoes;
}
public void setQuestoes(List<Questao> questoes) {
this.questoes = questoes;
}
public RelacionamentoPesquisaComQuestoes getRelacao() {
return relacao;
}
public void setRelacao(RelacionamentoPesquisaComQuestoes relacao) {
this.relacao = relacao;
}
public Questao getQuestao() {
return questao;
}
public void setQuestao(Questao questao) {
this.questao = questao;
}
public Object pesquisaPorCodigo(Integer codigo) {
PesquisaDao dao = new PesquisaDao();
return dao.pesquisaPorCodigo(codigo);
}
public List<Pesquisa> getPesquisas() {
return pesquisas;
}
public void setPesquisas(List<Pesquisa> pesquisas) {
this.pesquisas = pesquisas;
}
public RegistroDoUsuario getRegistro() {
return registro;
}
public void setRegistro(RegistroDoUsuario registro) {
this.registro = registro;
}
public List<Questao> getQuestaoSelecionada() {
return questaoSelecionada;
}
public void setQuestaoSelecionada(List<Questao> questaoSelecionada) {
this.questaoSelecionada = questaoSelecionada;
}
}
essa é minha entidade Pesquisa
package br.com.modelo;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@SuppressWarnings(“serial”)
@Entity
@Table(name=“tb_pesquisa”)
public class Pesquisa implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer codPesquisa;
private String tituloDaPesquisa;
private String descricao;
@Temporal(TemporalType.DATE)
private Date dataPesquisa;
@ManyToOne
@JoinColumn(nullable=false)
private RegistroDoUsuario registroDoUsuario;
public RegistroDoUsuario getRegistroDoUsuario() {
return registroDoUsuario;
}
public void setRegistroDoUsuario(RegistroDoUsuario registroDoUsuario) {
this.registroDoUsuario = registroDoUsuario;
}
public Date getDataPesquisa() {
return dataPesquisa;
}
public void setDataPesquisa(Date dataPesquisa) {
this.dataPesquisa = dataPesquisa;
}
public Integer getCodPesquisa() {
return codPesquisa;
}
public void setCodPesquisa(Integer codPesquisa) {
this.codPesquisa = codPesquisa;
}
public String getTituloDaPesquisa() {
return tituloDaPesquisa;
}
public void setTituloDaPesquisa(String tituloDaPesquisa) {
this.tituloDaPesquisa = tituloDaPesquisa;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
@Override
public String toString() {
return "Pesquisa [codPesquisa=" + codPesquisa + ", tituloDaPesquisa=" + tituloDaPesquisa + ", descricao="
+ descricao + ", dataPesquisa=" + dataPesquisa + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((codPesquisa == null) ? 0 : codPesquisa.hashCode());
result = prime * result + ((dataPesquisa == null) ? 0 : dataPesquisa.hashCode());
result = prime * result + ((descricao == null) ? 0 : descricao.hashCode());
result = prime * result + ((tituloDaPesquisa == null) ? 0 : tituloDaPesquisa.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Pesquisa other = (Pesquisa) obj;
if (codPesquisa == null) {
if (other.codPesquisa != null)
return false;
} else if (!codPesquisa.equals(other.codPesquisa))
return false;
if (dataPesquisa == null) {
if (other.dataPesquisa != null)
return false;
} else if (!dataPesquisa.equals(other.dataPesquisa))
return false;
if (descricao == null) {
if (other.descricao != null)
return false;
} else if (!descricao.equals(other.descricao))
return false;
if (tituloDaPesquisa == null) {
if (other.tituloDaPesquisa != null)
return false;
} else if (!tituloDaPesquisa.equals(other.tituloDaPesquisa))
return false;
return true;
}
}
essa é minha entidade Questao:
package br.com.modelo;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name=“tb_questao”)
public class Questao implements Serializable{
private static final long serialVersionUID = 7909339630017003537L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer codQuestoes;
private String enunciado;
private String observacoes;
@Enumerated(EnumType.STRING)
private Tipo tipo;
// @ManyToOne
// private TipoDeQuestao tipoDeQuestao;
public Integer getCodQuestoes() {
return codQuestoes;
}
public void setCodQuestoes(Integer codQuestoes) {
this.codQuestoes = codQuestoes;
}
public String getEnunciado() {
return enunciado;
}
public void setEnunciado(String enunciado) {
this.enunciado = enunciado;
}
public String getObservacoes() {
return observacoes;
}
public void setObservacoes(String observacoes) {
this.observacoes = observacoes;
}
// public TipoDeQuestao getTipoDeQuestao() {
// return tipoDeQuestao;
// }
//
// public void setTipoDeQuestao(TipoDeQuestao tipoDeQuestao) {
// this.tipoDeQuestao = tipoDeQuestao;
// }
public Tipo getTipo() {
return tipo;
}
public void setTipo(Tipo tipo) {
this.tipo = tipo;
}
@Override
public String toString() {
return "Questao [codQuestoes=" + codQuestoes + ", enunciado=" + enunciado + ", observacoes=" + observacoes
+ ", tipo=" + tipo + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((codQuestoes == null) ? 0 : codQuestoes.hashCode());
result = prime * result + ((enunciado == null) ? 0 : enunciado.hashCode());
result = prime * result + ((observacoes == null) ? 0 : observacoes.hashCode());
result = prime * result + ((tipo == null) ? 0 : tipo.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Questao other = (Questao) obj;
if (codQuestoes == null) {
if (other.codQuestoes != null)
return false;
} else if (!codQuestoes.equals(other.codQuestoes))
return false;
if (enunciado == null) {
if (other.enunciado != null)
return false;
} else if (!enunciado.equals(other.enunciado))
return false;
if (observacoes == null) {
if (other.observacoes != null)
return false;
} else if (!observacoes.equals(other.observacoes))
return false;
if (tipo != other.tipo)
return false;
return true;
}
}
esse é o conversor de Pesquisa
package br.com.conversores;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import br.com.bean.PesquisaBean;
import br.com.modelo.Pesquisa;
public class PesquisaConverter implements Converter {
@Override
public Object getAsObject(FacesContext fc, UIComponent uic, String codigoString) {
if(codigoString != null && codigoString.trim().length() > 0) {
Integer codigo = Integer.valueOf(codigoString);
PesquisaBean bean = new PesquisaBean();
return bean.pesquisaPorCodigo(codigo);
}
else {
return null;
}
}
@Override
public String getAsString(FacesContext fc, UIComponent uic, Object pesquisaObjeto) {
if(pesquisaObjeto != null) {
Pesquisa pesquisa = (Pesquisa) pesquisaObjeto;
return pesquisa.getCodPesquisa().toString();
}
return null;
}
}