Comparar dados antes de gravar e atualizar javaee/jsf
Ola. Preciso de um auxilio. Estou estudando jsf e estou desenvolvolveno uma aplicação para fins de estudo mesmo. A questao é a seguinte. Ante de gravar no banco de dados, a aplcação analise o seguinte:
- Ao salvar, verifica antes se o nome do setor já exista no banco de dados (postgres), senão existir, grave, senao nao permita;
- Ao atualizar, tbem execute a mesma analise e atualize os dados, se alterar o nome, tem que analisar se este nome já existe no banco de dados pra nao salvar repetido.
- Data de cadastro deve ser em ao salvar e e data de alteração tem que ser em atualizar.
Arquivo entidade:
Arquivo entidade:
package entidades;
meubean:
meu GenericDAO:
minha parte do pagina xhtml (botao salvar):
minhar parte da pagina xhtml onde faz edição:
É isso, se alguem puder me ajudar, agradeço.
- Ao salvar, verifica antes se o nome do setor já exista no banco de dados (postgres), senão existir, grave, senao nao permita;
- Ao atualizar, tbem execute a mesma analise e atualize os dados, se alterar o nome, tem que analisar se este nome já existe no banco de dados pra nao salvar repetido.
- Data de cadastro deve ser em ao salvar e e data de alteração tem que ser em atualizar.
Arquivo entidade:
Arquivo entidade:
package entidades;
import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Temporal; import javax.persistence.TemporalType; @SuppressWarnings("serial") @Entity public class Setor extends GenericDomain { @Column(name = "nome",length =20, nullable = false) private String nome; @Column( name = "status",length =10) private String status; @Temporal(TemporalType.TIMESTAMP) private Date dataCadastro; @Temporal(TemporalType.TIMESTAMP) private Date dataAlteracao; private Long usuarioAlteracao; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public Date getDataCadastro() { return dataCadastro; } public void setDataCadastro(Date dataCadastro) { this.dataCadastro = dataCadastro; } public Date getDataAlteracao() { return dataAlteracao; } public void setDataAlteracao(Date dataAlteracao) { this.dataAlteracao = dataAlteracao; } public Long getUsuarioAlteracao() { return usuarioAlteracao; } public void setUsuarioAlteracao(Long usuarioAlteracao) { this.usuarioAlteracao = usuarioAlteracao; } public Setor(String nome, String status, Date dataCadastro, Date dataAlteracao, Long usuarioAlteracao) { super(); this.nome = nome; this.status = status; this.dataCadastro = dataCadastro; this.dataAlteracao = dataAlteracao; this.usuarioAlteracao = usuarioAlteracao; } public Setor() { super(); } @Override public String toString() { return "Area [nome=" + nome + ", status=" + status + ", dataCadastro=" + dataCadastro + ", dataAlteracao=" + dataAlteracao + ", usuarioAlteracao=" + usuarioAlteracao + "]"; } }
meubean:
public class SetorBean implements Serializable { private Setor setor; private List setores; public Setor getSetor() { return setor; } public void setSetor(Setor setor) { this.setor = setor; } public List<Setor> getSetores() { return setores; } public void setSetores(List<Setor> setores) { this.setores = setores; } @PostConstruct public void listar() { try { SetorDAO dao = new SetorDAO(); setores = dao.listar(); } catch (RuntimeException erro) { Messages.addGlobalError("Ocorreu um erro ao tentar listar os setores"); erro.printStackTrace(); } } public void novo() { setor = new Setor(); } public void salvar() { try { SetorDAO dao = new SetorDAO(); setor.setDataCadastro(new Date()); dao.merge(setor); setor = new Setor(); setores = dao.listar(); Messages.addGlobalInfo("Setor salvo com sucesso"); } catch (RuntimeException erro) { Messages.addGlobalError("Ocorreu um erro ao tentar salvar o setor"); erro.printStackTrace(); } } public void excluir(ActionEvent evento) { try { setor = (Setor) evento.getComponent().getAttributes().get("setorSelecionado"); SetorDAO dao = new SetorDAO(); dao.excluir(setor); setores = dao.listar(); Messages.addGlobalInfo("Setor removido com sucesso"); } catch (RuntimeException erro) { Messages.addFlashGlobalError("Ocorreu um erro ao tentar remover o setor"); erro.printStackTrace(); } } public void editar(ActionEvent evento) { setor = (Setor) evento.getComponent().getAttributes().get("setorSelecionado"); }
meu GenericDAO:
ublic class GenericDAO { private Class classe; @SuppressWarnings("unchecked") public GenericDAO() { this.classe = (Class<Entidade>) ((ParameterizedType) getClass().getGenericSuperclass()) .getActualTypeArguments()[0]; } public void salvar(Entidade entidade) { Session sessao = HibernateUtil.getFabricaDeSessoes().openSession(); Transaction transacao = null; try { transacao = sessao.beginTransaction(); sessao.save(entidade); transacao.commit(); } catch (RuntimeException erro) { if (transacao != null) { transacao.rollback(); } throw erro; } finally { sessao.close(); } } @SuppressWarnings("unchecked") public List<Entidade> listar() { Session sessao = HibernateUtil.getFabricaDeSessoes().openSession(); try { Criteria consulta = sessao.createCriteria(classe); List<Entidade> resultado = consulta.list(); return resultado; } catch (RuntimeException erro) { throw erro; } finally { sessao.close(); } } @SuppressWarnings("unchecked") public Entidade buscar(Long codigo) { Session sessao = HibernateUtil.getFabricaDeSessoes().openSession(); try { Criteria consulta = sessao.createCriteria(classe); consulta.add(Restrictions.idEq(codigo)); Entidade resultado = (Entidade) consulta.uniqueResult(); return resultado; } catch (RuntimeException erro) { throw erro; } finally { sessao.close(); } } public void excluir(Entidade entidade) { Session sessao = HibernateUtil.getFabricaDeSessoes().openSession(); Transaction transacao = null; try { transacao = sessao.beginTransaction(); sessao.delete(entidade); transacao.commit(); } catch (RuntimeException erro) { if (transacao != null) { transacao.rollback(); } throw erro; } finally { sessao.close(); } } public void editar(Entidade entidade) { Session sessao = HibernateUtil.getFabricaDeSessoes().openSession(); Transaction transacao = null; try { transacao = sessao.beginTransaction(); sessao.update(entidade); transacao.commit(); } catch (RuntimeException erro) { if (transacao != null) { transacao.rollback(); } throw erro; } finally { sessao.close(); } } public void merge(Entidade entidade) { Session sessao = HibernateUtil.getFabricaDeSessoes().openSession(); Transaction transacao = null; try { transacao = sessao.beginTransaction(); sessao.merge(entidade); transacao.commit(); } catch (RuntimeException erro) { if (transacao != null) { transacao.rollback(); } throw erro; } finally { sessao.close(); } }
minha parte do pagina xhtml (botao salvar):
… <h:panelGrid columns=“2”> <p:commandButton value=“Salvar” icon=“ui-icon-circle-check" actionListener=”#{setorBean.salvar()}“ update=”:mensagem :formCadastro:painel :formListagem:tabela" /> <p:commandButton value=“Fechar” oncomplete=“PF(‘dialogo’).hide();” /> </h:panelGrid>
minhar parte da pagina xhtml onde faz edição:
p:commandButton icon=“ui-icon-pencil" actionListener=”#{setorBean.editar}“ update=”:formCadastro:painel" oncomplete=“PF(‘dialogo’).show();”> <f:attribute name=“setorSelecionado” value="#" /> </p:commandButton>
É isso, se alguem puder me ajudar, agradeço.
Silvinho
Curtidas 0
Respostas
Kelvin A
27/11/2018
Acho que deixando o campo como Unique resolveria a questão da comparação, caso não resolva você precisa chamar um método que percorra todos os valores da coluna, comparando um a um, e no fim dele chamar o método salvar. Creio que unique seja a melhor opção.
GOSTEI 0