Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

psykotico

Membros Plenos
  • Total de itens

    301
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

56

2 Seguidores

Informações gerais

  • Cidade e Estado
    São Paulo / SP
  • Sexo
    Prefiro não dizer

Outros

  • Ocupação
    Analista de Sistemas Java
  • Interesses
    Microservices, SOA, SaaS, PaaS, Integração, Java, Ruby, NodeJS, NoSQL
  1. Sim ... Na verdade como você disse que estava aprendendo, achei que trabalhar apenas com valores simples na view e no MB seria mais tranquilo pra você entender. Mas se já está abstraindo isso, perfeito, é assim mesmo
  2. No form, você está mostrando o valor do ID e o nome da pessoa. você pode utilizar um DOM Input hidden pra fazer essa parte e poder recuperar o Id da pessoa pelo menos. <h:inputHidden value="#{user.id}" id="hiddenId" />
  3. O velho caso do Relacionamento Bidirecional ... é terrível e gera vários erros mesmo ... Não é elegante fazer isso, mas meu sono não me deixa pensar em algo melhor ... public void addTelefone(Pessoa pessoa, Telefone telefone) { try { sessao = HibernateUtil.getSessionFactory().openSession(); if (pessoa.getTelefones() == null) { pessoa.setTelefones(new ArrayList<Telefone>()); } pessoa.getTelefones().add(telefone); telefone.setPessoa(pessoa); sessao.save(telefone); transacao.commit(); } catch (Exception e) { e.printStackTrace(); } finally { sessao.close(); } } O Problema do bidirecional é que ele tem problemas para entender que quando você seta um, implicitamente você está setando o outro ... Forçando dessa forma, você garante que o mesmo objeto está sendo setado nos dois lados ...
  4. Exatamente como disse o @Boko Moko. Mas é mais interessante você estudar sobre encapsulamento, na Orientação a Objetos. Assim você começa a entender sobre atributos, métodos e suas características.
  5. Existem várias formas. Acredito que a forma mais simples de você fazer isso é inserindo cada linha em uma Lista de Strings, como abaixo: String linha; List<String> lista = new ArrayList<String>() while( (linha = reader.readLine()) != null ){ lista.add(linha); } E depois disso utilizar algum algorítmo de ordenação para ordenar a lista. PORÉM: Se forem números, tome cuidado pos ele tende a ordenar Strings por caractere, o que resulta em algo como [1,10,11,12 ... 2,20,21 ...] ... Assim, teria que se atentar a essa situação ... Outra forma é utilizar a Biblioteca Collections ... Collections.sort(list, comparator); Nesse caso, para evitar a Situação de ordem de números, você teria que implementar a Classe comparator para indicar o maior e menor.
  6. É que você tá chamando o método com o seguinte parâmetro: logindao logi = new logindao(); //... logi.Alterar(login.getSenha()); ou seja, você tá passando uma String Senha, para um método e lá você está aguardando que o Objeto seja um LoginBean acredito que deva funcionar se você alterar a chamada do método para: logi.Alterar(login);
  7. Isso exato ... assim você não precisa ficar buscando o código antes de fazer o update e faz tudo num processo apenas ... outra coisa interessante é validar pra ver se ele preencheu o campo senha ... só fazer um !senha.isEmpty() assim ele evita salvar logins com senha vazia ....
  8. Não necessariamente. Veja, se (e exclusivamente se) o campo login for único no banco (ou seja, só vai existir valores diferentes) então qualquer pesquisa por login só vai retornar um campo, correto ... Com isso, na sua pesquisa: String sql = "Select * from usuario where login = ? "; Já faz exatamente o que eu quis dizer. Com isso, seu update ficaria com String sql = "update usuario set senha = ? where login = ?"; Da forma que você está fazendo, dá a chance do usuário mudar inclusive o campo login. Com isso eu posso colocar TODOS os logins da tabela com o mesmo nome, e depois disso, o sistema não conseguirá identificar qual é qual. Exemplo: ++++++++++++++++++++++++++++++++++++++++ | codigo | login | senha | +--------+---------------+-------------+ | 1 | usuario1 | umasenha | | 2 | outrouser | outrasenha | | 3 | maisum | maisoutra | ++++++++++++++++++++++++++++++++++++++++ Se eu no primeiro momento fizer login = "outrouser" terei: Select * from usuario where login = 'outrouser'; o que retornaria o código 2 para a tela. Mas, se depois de atualizar o form eu completar com as informações login = "maisum" e senha = "blabla", eu tenho: update usuario set login = 'maisum',senha = 'blabla' where codigo = 2 O que me resulta em uma tabela assim: ++++++++++++++++++++++++++++++++++++++++ | codigo | login | senha | +--------+---------------+-------------+ | 1 | usuario1 | umasenha | | 2 | maisum | blabla | | 3 | maisum | maisoutra | ++++++++++++++++++++++++++++++++++++++++ E com isso, como seu sistema localizará o usuário "maisum" correto? Porém, se você utilizar a constraint unique para o campo login, nunca terá esse problema de duplicação na coluna, e com isso, você já poderá fazer o update da forma que eu expliquei ali em cima. PS.: Não sei se é o caso, mas por boa prática de segurança, geralmente alteração de senha só é realizada em uma console de admin, ou após o usuário estar logado. Se ele está logado, basta você manter os dados do usuário em um objeto estático (ou um Bean, caso você utilize Injeção de Dependência) e buscar os valores antes do update, só solicitando a senha. Se for numa console admin, como você já listou todos os usuários, você novamente já tem os valores de login na tela de listagem, e pode reaproveitar inclusive o mesmo form para update de senha.
  9. Tente com Object result = consulta.getSingleResult(); return result == null; você está solicitando para ele executar uma ação de update no banco, mas é uma query simples ... como você sempre tem o objeto consulta instanciado, ele nunca vai dar false ...
  10. Acho que esse tópico aqui vai te ajudar: https://stackoverflow.com/questions/8769336/drag-image-from-browser-to-drop-onto-jlabel
  11. no caso a correta seria a resposta 1 ... p.push(8); p.push(15); Object ob = pop(); p.push(23); p.push(ob); p.push(p.top()); p.push(p.pop());
  12. Cara, analisando seu código me deparei com uma série grande de erros... - No switch case, você finaliza a estrutura, mas abre um "case 2" logo após. Verifica a ordem de chaves pois está completamente errada. - Objeto materias não foi inicializado - Você cria dois objetos com nomes dataNascimento; - valorHoraria não foi criado - chamada do Parser está errada: Interger.Integer.parseInt(...) ou Interger.parseInt(...) ... o correto é Integer.parseInt() - disciolinasExistentes não foi criado - método materias.IndexOutOF não existe ... o correto é materias.indexOf(...) Veja, não consigo nem analisar se há erro de lógica com tanto erro de compilação ... verifique isso antes...
  13. Esse tipo de abordagem é um pouco estranha, já que no fim, a informação que você tem para alterar não é o id, e sim o login ... Apenas pra entender o motivo, porque você quer que apareça os id do usuário na tela de alteração de senha?? Veja, se isso força alguns processos a mais só pra satisfazer esse caminho. você precisaria: - Pesquisar o login no banco para buscar o id do usuário a partir do campo login. - Setar o id do usuário no campo da tela para ele ser exibido. - Executar o comando de update no banco com os valores novos. Se essa necessidade do id não for obrigatória, basta fazer o update com um where apontando apenas o campo login (lembrando que o campo login deve ter constraint de unicidade na tabela)
  14. Pelo que vi, o Java tem alguns problemas com telas com DPI muito alto ... sendo assim, se sua aplicação foi um JAR executável, é só executar com java -jar <ARQUIVO.JAR> -Dsun.java2d.dpiaware=false Do contrário, existe a possibilidade de setar isso direto na JVM, mas não encontrei como fazer aqui no momento.
  15. Eu não entendi exatamente qual a dúvida. Mas vamos lá ... Para fazer o get pelo id, você pode fazer exatamente como fez no método de exclusão ... mas retornando o objeto. public void getFor(int id) { for(int i = 0;i<lista1.size();i++) { if(lista1.get(i).getId()==id) { return lista1.get(i); } } } Acabei não compreendendo se fornecedor possui um id ou não, então fiz acreditando que ele possua. Todos os outros métodos se assemelham muito a esse, então basta seguir esse modelo. PS.: Para melhorar a compreensão do seu código (isso vale pra qualquer linguagem), tente usar nomes de variáveis, atributos e métodos mais contextualizados. Ao invés de lista e lista1, use listaProdutos e listaFornecedores ... nos métodos tb ... getProdutos() para retornar a lista de produtos ... getProduto(id) para retornar um único produto ... assim o código fica mais natural e fácil para entender e dar manutenção

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×