Olá.
Toda vez que faço uma alteração no cadastro ou adiciono uma permissão para o usuário quando pesquisa esse usuário novamente ele lista as permissão duplicada.Alguém tem alguma ideia do que pode ser.
Segue meu bean
@ManagedBean(name = "usuarioMB")
@ViewScoped
public class UsuarioBean implements Serializable {
private Usuario usuario;
private List<Empresa> empresas;
private List<CentroCusto> centrosCusto;
private List<Programa> programas;
private List<Usuario> usuariosPesquisados;
private List<Permissao> permissoes;
private List<Usuario> usuariosDe;
private List<Usuario> usuariosPara;
private List<Sistema> sistemas;
private List<DepartamentoProjetos> dpProjetos;
private UsuarioDAO usuarioDAO;
private EmpresaDAO empresaDAO;
private CentroCustoDAO centroCustoDAO;
private ProgramaDAO programaDAO;
private PermissaoDAO permissaoDAO;
private SistemaDAO sistemaDAO;
private DepartamentoProjetosDAO departamentoProjetosDAO;
private int pesquisa;
private int usuarioDe;
private int usuarioPara;
private String usuarioPesquisa;
private String conteudoPesquisa;
private String verificaSenha;
private String confirmaEmail;
private String confirmaSenha;
private String senhaAux = "";
private boolean somenteLeitura;
private boolean podeSalvar;
private boolean statusNovo;
private boolean statusSalvar;
private boolean statusPesquisar;
private boolean statusCancelar;
private boolean isNovo;
private boolean showDialog;
public UsuarioBean() {
this.usuario = new Usuario();
usuario.setDepartamentoProjetos(new DepartamentoProjetos());
this.usuarioDAO = new UsuarioDAO();
this.empresaDAO = new EmpresaDAO();
this.centroCustoDAO = new CentroCustoDAO();
this.programaDAO = new ProgramaDAO();
this.permissaoDAO = new PermissaoDAO();
this.sistemaDAO = new SistemaDAO();
this.departamentoProjetosDAO = new DepartamentoProjetosDAO();
this.pesquisa = 1;
//this.usuarioPesquisa = "";
this.usuariosPesquisados = new ArrayList<Usuario>();
this.permissoes = new ArrayList<Permissao>();
this.dpProjetos = new ArrayList<DepartamentoProjetos>();
this.somenteLeitura = false;
this.confirmaEmail = "";
this.confirmaSenha = "";
this.statusNovo = false;
this.statusPesquisar = false;
this.statusSalvar = true;
this.statusCancelar = true;
this.showDialog = false;
listarEmpresas();
listarCentroCusto();
listarProgramas();
listarDepartamentoProjetos();
}
/**
* Metodo que lista permissões de usuario
*
* @param id
*/
public void listarPermissoes(int id) {
permissoes = permissaoDAO.listarPermissao(id);
}
public void listarSistemas() {
sistemas = sistemaDAO.getSistemaByPesquisa(pesquisa, conteudoPesquisa);
}
/**
* metodo testa se as senhas são equivalentes
*/
public void senhaEquivalente() {
if (!usuario.getSenha().equals(this.confirmaSenha)) {
this.confirmaSenha = "";
UtilSistemas.mostrarMensagemErro("Campo inválido", "Senha incorreta!");
}
}
/**
* Método que verifica se o email é válido
*/
public void validarEmail() {
if (!UtilSistemas.isEmailValido(usuario.getEmail())) {
UtilSistemas.mostrarMensagemErro("Campo inválido", "Email incorreto!");
}
}
/**
* metodo testa se os emails digitados sao equivalentes
*/
public void emailEquivalente() {
if (!usuario.getEmail().equals(this.confirmaEmail)) {
this.confirmaEmail = "";
UtilSistemas.mostrarMensagemErro("Email não validou", "Os emails não são equivalentes");
}
}
/**
* valida o cpf na view
*
*/
public void validaCPF() {
this.usuariosPesquisados = usuarioDAO.getUsuarioByPesquisa(3, usuario.getCPF());
try {
if (!UtilSistemas.isCPF(usuario.getCPF())) {
usuario.setCPF("");
throw new Exception("CPF Inválido");
} else if (!usuariosPesquisados.isEmpty()) {
usuario = usuarioDAO.getUsuarioByCPF(usuario.getCPF());
if (usuario.getDepartamentoProjetos() == null) {
usuario.setDepartamentoProjetos(new DepartamentoProjetos());
}
this.senhaAux = usuario.getSenha();
this.somenteLeitura = true;
listarPermissoes(usuario.getSeq());
throw new Exception("CPF Já Cadastrado");
}
} catch (Exception e) {
UtilSistemas.mostrarMensagemAlerta("Atenção!", e.getMessage());
}
}
/**
* Metodo que retorna uma lista de departamentos de projeto
*/
public void listarDepartamentoProjetos() {
dpProjetos = departamentoProjetosDAO.listarDepartamentos();
}
/**
* metodo verfica se o login esta cadastrado na base de dados
*/
public void validaLogin() {
String str = usuario.getUserName();
int idx = str.indexOf(" "); //- 1 verdadeiro não tem espaço
Usuario user = usuarioDAO.getUsuarioByLogin(usuario.getUserName());
try {
if (idx != -1) {
throw new Exception("O nome de Usuário não deve conter espaços");
} else if (usuario.getUserName().length() < 3) {
throw new Exception("Usuário deve ter no minimo 3 digitos");
}
if (user.getUserName() != null) {
throw new Exception("Usuario ja esta cadastrado");
}
} catch (Exception e) {
usuario.setUserName("");
UtilSistemas.mostrarMensagemErro("Erro", e.getMessage());
}
}
/**
* Método que valida os campos do cadastro
*
* @return
*/
public boolean isCamposValidos() {
List<String> msgs = new ArrayList<String>();
// cpf
if (!UtilSistemas.isCPF(usuario.getCPF())) {
usuario.setCPF("");
msgs.add("CPF Inválido");
} else if (!usuariosPesquisados.isEmpty()) {
//usuario = usuarioDAO.getUsuarioByCPF(usuario.getCPF());
this.somenteLeitura = true;
//msgs.add("CPF Já Cadastrado");
}
//rg
if (usuario.getRG().trim().length() < 5) {
msgs.add("RG inválido");
}
// nome
if (usuario.getNome().trim().length() < 3) {
msgs.add("Nome inválido");
}
// data nasc
if (usuario.getDataNasc() == null) {
msgs.add("Data inválida");
}
// email
if (senhaAux.equals("") && !usuario.getEmail().equals(this.confirmaEmail)) {
msgs.add("Email inválido");
}
// email equivalente
if (senhaAux.equals("") && !usuario.getEmail().equals(this.confirmaEmail)) {
msgs.add("Email não são equivalentes");
}
//login
String str = usuario.getUserName();
int idx = str.indexOf(" "); //- 1 verdadeiro não tem espaço
Usuario user = usuarioDAO.getUsuarioByLogin(usuario.getUserName());
if (idx != -1) {
msgs.add("O nome de Usuário não deve conter espaços");
}
if (usuario.getUserName().length() < 3) {
msgs.add("Usuário deve ter no minimo 3 digitos");
}
// if(user.getUserName() != null){
// msgs.add(“Usuario ja esta cadastrado”);
// }
if (usuario.getUserName() == null) {
msgs.add(“Usuário Inválido”);
}
// senha
if (senhaAux.equals("") && !usuario.getSenha().equals(this.confirmaSenha)) {
msgs.add("Senha inválida");
}
//
if (!msgs.isEmpty()) {
for (String s : msgs) {
UtilSistemas.mostrarMensagemErro("Campo obrigatório", s);
}
}
return (msgs.isEmpty());
}
public void pesquisar() {
this.statusNovo = false;
this.statusPesquisar = false;
this.statusSalvar = false;
this.statusCancelar = false;
this.usuariosPesquisados = new ArrayList<Usuario>();
if (!isNovo) {
usuariosDe = usuarioDAO.listarUsuarios();
usuariosPara = usuariosDe;
}
}
/**
* metodo salva usuario
*
* @throws Exception
*/
public void salvar() throws Exception {
this.statusNovo = false;
this.statusPesquisar = false;
this.statusSalvar = true;
this.statusCancelar = true;
if (isCamposValidos()) {
try {
if (usuario.getSenha().equals("")) {
usuario.setSenha(senhaAux);
confirmaSenha = senhaAux;
}
usuario = usuarioDAO.salvar(usuario);
if (usuario.getSeq() > 0 && permissoes.size() > 0) {
permissaoDAO.salvarPermissoes(permissoes, usuario.getSeq(), isNovo);
}
if (isNovo) {
usuariosDe = usuarioDAO.listarUsuarios();
usuariosPara = usuariosDe;
RequestContext.getCurrentInstance().execute("PF('dialogPerfil').show()");
}
isNovo = false;
UtilSistemas.mostrarMensagemSucesso("Sucesso", "Usuario Salvo");
} catch (Exception e) {
UtilSistemas.mostrarMensagemErro("Erro", e.getMessage());
}
}
}
/**
* Metodo que copia o perfil de permissões
*/
public void copiarPerfil() {
isNovo = true;
List<Permissao> permissoesAux = new ArrayList<Permissao>();
permissoesAux = permissaoDAO.listarPermissao(usuarioPara);
for (Permissao p : permissoesAux) {
deletarPermissao(p.getId());
}
permissoes = permissaoDAO.listarPermissao(usuarioDe);
permissaoDAO.salvarPermissoes(permissoes, usuarioPara, isNovo);
isNovo = false;
}
public void cancelar() {
this.statusNovo = false;
this.statusSalvar = true;
this.statusPesquisar = false;
this.statusCancelar = true;
this.usuariosPesquisados = new ArrayList<Usuario>();
isNovo = false;
}
/**
* limpa tela
*/
public void novo() {
this.usuario = new Usuario();
this.confirmaEmail = "";
this.confirmaSenha = "";
this.usuariosPesquisados = new ArrayList<Usuario>();
this.usuario.setDepartamentoProjetos(new DepartamentoProjetos());
permissoes = new ArrayList<Permissao>();
this.isNovo = true;
this.statusNovo = true;
this.statusSalvar = false;
this.statusPesquisar = true;
this.statusCancelar = false;
this.somenteLeitura = false;
}
/**
* metodos retorna lista de usuario pesquisados
*
* @param pesquisa
* @param usuario
*/
public void listarUsuarios() {
usuariosPesquisados = usuarioDAO.getUsuarioByPesquisa(pesquisa, usuarioPesquisa);
}
/**
* Metodo pra deletar permissão
*
* @param idPermissao
*/
public void deletarPermissao(int idPermissao) {
permissaoDAO.deletarPermissao(idPermissao);
listarPermissoes(usuario.getSeq());
//RequestContext.getCurrentInstance().update("formCadastro:dtPermissoes");
}
/**
* Metodo que retorna usuario pelo CPF
*
* @param CPF
*/
public void getUsuarioByCPF(String CPF) {
usuario = usuarioDAO.getUsuarioByCPF(CPF);
}
/**
* Metodo que lista empresas
*/
public void listarEmpresas() {
empresas = empresaDAO.listarEmpresas();
}
/**
* Metodo que retorna uma lista de programas ativos
*/
public void listarProgramas() {
programas = programaDAO.listarProgramas();
}
/**
* Metodo que lista programas pelo id do Sistema
*
* @param idSistema
*/
public void listarProgramasSistema(int idSistema) {
programas = new ArrayList<Programa>();
sistemas = new ArrayList<Sistema>();
conteudoPesquisa = "";
programas = programaDAO.listarProgramasByIdSistema(idSistema);
int i = 0;
for (Permissao p : permissoes) {
for (i = 0; i < programas.size(); i++) {
if (p.getPrograma().getIdPrograma() == programas.get(i).getIdPrograma()) {
programas.remove(i);
}
}
}
if (programas.size() < 1) {
RequestContext.getCurrentInstance().update("formCadastro:dlgSistema");
UtilSistemas.mostrarMensagemAlerta("Atenção", "Todas as permissões deste sistemas já foram concedida ao usuário.");
RequestContext.getCurrentInstance().execute("PF('dlgSistema').show();");
} else {
RequestContext.getCurrentInstance().execute("PF('dlgSistema').hide();");
RequestContext.getCurrentInstance().update("formCadastro:dlgProgramas");
RequestContext.getCurrentInstance().update("formCadastro:dlgSistema");
RequestContext.getCurrentInstance().execute("PF('dlgProgramas').show();");
}
}
/**
* Metodo que adiciona uma nova permissao para usuario
*/
public void adicionarPermissao() {
List<Programa> programasTemp = new ArrayList<Programa>();
for (Programa p : programas) {
if (p.isIsSelected()) {
programasTemp.add(p);
}
}
for (Programa p : programasTemp) {
Permissao permissao = new Permissao();
permissao.setIdUsuario(usuario.getSeq());
permissao.setIsAcessa(true);
permissao.setIsAltera(true);
permissao.setIsInsere(true);
permissao.setPrograma(p);
permissao.setiUsuario(UtilSistemas.getUsuarioLogado().getSeq());
permissoes.add(permissao);
}
permissaoDAO.salvarPermissoes(permissoes, usuario.getSeq(), isNovo);
listarPermissoes(usuario.getSeq());
RequestContext.getCurrentInstance().execute("PF('dlgProgramas').hide();");
RequestContext.getCurrentInstance().update("formCadastro:pnlPermissao");
UtilSistemas.mostrarMensagemSucesso("Sucesso!", "Permissão adicionada com sucesso!");
}
/**
* Metodo que retorna uma lista de Centro de Custo
*/
public void listarCentroCusto() {
centrosCusto = centroCustoDAO.listarCentroCusto();
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
this.confirmaEmail = usuario.getEmail();
this.confirmaSenha = usuario.getSenha();
this.verificaSenha = usuario.getSenha();
this.senhaAux = usuario.getSenha();
this.usuarioPesquisa = "";
if (usuario.getDepartamentoProjetos() == null) {
usuario.setDepartamentoProjetos(new DepartamentoProjetos());
}
listarPermissoes(usuario.getSeq());
pesquisar();
}
public List<Permissao> getPermissoes() {
return permissoes;
}
public void setPermissoes(List<Permissao> permissoes) {
this.permissoes = permissoes;
}
public List<Programa> getProgramas() {
return programas;
}
public void setProgramas(List<Programa> programas) {
this.programas = programas;
}
public List<Empresa> getEmpresas() {
return empresas;
}
public void setEmpresas(List<Empresa> empresas) {
this.empresas = empresas;
}
public List<CentroCusto> getCentrosCusto() {
return centrosCusto;
}
public void setCentrosCusto(List<CentroCusto> centrosCusto) {
this.centrosCusto = centrosCusto;
}
public int getPesquisa() {
return pesquisa;
}
public void setPesquisa(int pesquisa) {
this.pesquisa = pesquisa;
}
public String getUsuarioPesquisa() {
return usuarioPesquisa;
}
public void setUsuarioPesquisa(String usuarioPesquisa) {
this.usuarioPesquisa = usuarioPesquisa;
}
public List<Usuario> getUsuariosPesquisados() {
return usuariosPesquisados;
}
public void setUsuariosPesquisados(List<Usuario> usuariosPesquisados) {
this.usuariosPesquisados = usuariosPesquisados;
}
public String getVerificaSenha() {
return verificaSenha;
}
public void setVerificaSenha(String verificaSenha) {
this.verificaSenha = verificaSenha;
}
public boolean isSomenteLeitura() {
return somenteLeitura;
}
public void setSomenteLeitura(boolean somenteLeitura) {
this.somenteLeitura = somenteLeitura;
}
public boolean isPodeSalvar() {
return podeSalvar;
}
public void setPodeSalvar(boolean podeSalvar) {
this.podeSalvar = podeSalvar;
}
public String getConfirmaEmail() {
return confirmaEmail;
}
public void setConfirmaEmail(String confirmaEmail) {
this.confirmaEmail = confirmaEmail;
}
public String getConfirmaSenha() {
return confirmaSenha;
}
public void setConfirmaSenha(String confirmaSenha) {
this.confirmaSenha = confirmaSenha;
}
public boolean isStatusNovo() {
return statusNovo;
}
public void setStatusNovo(boolean statusNovo) {
this.statusNovo = statusNovo;
}
public boolean isStatusSalvar() {
return statusSalvar;
}
public void setStatusSalvar(boolean statusSalvar) {
this.statusSalvar = statusSalvar;
}
public boolean isStatusPesquisar() {
return statusPesquisar;
}
public void setStatusPesquisar(boolean statusPesquisar) {
this.statusPesquisar = statusPesquisar;
}
public boolean isStatusCancelar() {
return statusCancelar;
}
public void setStatusCancelar(boolean statusCancelar) {
this.statusCancelar = statusCancelar;
}
public List<Usuario> getUsuariosDe() {
return usuariosDe;
}
public void setUsuariosDe(List<Usuario> usuariosDe) {
this.usuariosDe = usuariosDe;
}
public List<Usuario> getUsuariosPara() {
return usuariosPara;
}
public void setUsuariosPara(List<Usuario> usuariosPara) {
this.usuariosPara = usuariosPara;
}
public int getUsuarioDe() {
return usuarioDe;
}
public void setUsuarioDe(int usuarioDe) {
this.usuarioDe = usuarioDe;
}
public int getUsuarioPara() {
return usuarioPara;
}
public void setUsuarioPara(int usuarioPara) {
this.usuarioPara = usuarioPara;
}
public List<Sistema> getSistemas() {
return sistemas;
}
public void setSistemas(List<Sistema> sistemas) {
this.sistemas = sistemas;
}
public String getConteudoPesquisa() {
return conteudoPesquisa;
}
public void setConteudoPesquisa(String conteudoPesquisa) {
this.conteudoPesquisa = conteudoPesquisa;
}
public boolean isShowDialog() {
return showDialog;
}
public void setShowDialog(boolean showDialog) {
this.showDialog = showDialog;
}
public List<DepartamentoProjetos> getDpProjetos() {
return dpProjetos;
}
public void setDpProjetos(List<DepartamentoProjetos> dpProjetos) {
this.dpProjetos = dpProjetos;
}