Ir ao conteúdo
  • Cadastre-se

TwistedSoul

Membro Pleno
  • Posts

    161
  • Cadastrado em

  • Última visita

Tudo que TwistedSoul postou

  1. @CURIOSO22 Essas exceções são simplesmente regras de negócio para trabalhar com a conta. É bem simples: - Usuário resolve fazer um saque. - Ele digita 100 - Verifique se o 100 é maior que o valor máximo de saque - Se for, emita um alerta (exceção) de que o valor máximo permitido para saque é o valor de MAX_SAQUE - Se não for, verifique se ele tem saldo - Se tem saldo, faça a retirada e subtraia o valor da conta - Se não tem saldo, emita um alerta informando saldo insuficiente A transferência segue o mesmo esquema, mas apenas tem que conferir se existe saldo na conta para transferir e se o número da conta de destino da transferência é maior do que 100. Caso negativo em uma das duas situações, emita um alerta.
  2. Tá mais para um problema no seu sistema operacional do que no Netbeans. Tentou utilizar o Java da Oracle ao invés do OpenJDK? OpenJDK é muito zoado.
  3. @marcel.mc Com impressoras Zebra, você não vai conseguir fazer um formulário com nenhum software a não ser enviar os dados na linguagem que a impressora reconheça. Sua aplicação precisa capturar a porta onde ela está conectada, seja uma paralela, serial ou USB com compartilhamento (mais fácil de enviar o trabalho para \\127.0.0.1\zebra do que ficar lidando com drivers USB) e enviar os comandos diretamente para ela. A linguagem que a impressora usa é a ZPL (Zebra Programming Language). Lembrando que algumas delas ainda suportam e/ou usam exclusivamente ZPL/EPL/CPCL. São impressoras bem chatas de dar suporte. Mil vezes fazer etiquetas para impressoras Argox do que Zebra.
  4. @Vitor_A Opa, boa noite. Quando me referi a passar os dados para a model, me referia a classe DAO mesmo, onde ficam suas regras de negócio, acesso a banco, consultas, etc. Ao selecionar algum pedido do dropdown, use um evento onselect para enviar os dados do pedido escolhido a classe DAO, faça a consulta dos itens do pedidos e devolva os dados à tela, redesenhando ela para mostrar os novos dados. Basicamente, você precisa adicionar/remover linhas da sua tableModel a cada nova ação.
  5. @Vitor_A Bom dia Na verdade, você não transfere os itens. Você montou uma tableModel para popular os dados da tabela com os itens de um pedido, certo? Então, ao selecionar o Pedido de Compra na tela de compra, passe os dados desse pedido para a sua model, execute uma consulta em banco e busque os itens que fazem parte desse pedido. Itere pela lista, populando a tableModel com os dados e depois force a atualização da tabela no frame com repaint(); Se você quer permitir vários pedidos na mesma nota, não limpe a tableModel e apenas vá adicionando os itens de novos pedidos, sempre verificando se o PK do item do pedido já não se encontra na tabela para não repetir. Em linhas gerais, isso cobre toda e qualquer operação em tela onde você tenha uma tabela/informação principal e depois você quer exibir detalhes/lista de objetos dessa informação principal.
  6. @vinifla81 Bom dia. Ninguém vai fazer o código pra você aqui no fórum. Tente fazer e poste aqui as suas dúvidas que vamos te auxiliando até conseguir.
  7. @Guigame Bom dia. Acho que apenas "maquiar" a saída não fica legal. O negócio é tratar os números mesmo. Como você tem itens que seriam unidades, o correto seria arredondar para cima. Você não compra 15037.59 tijolos. Você compra 15038 tijolos. Para ter 15038 tijolos, se usar int tijolos = Math.round(qtdade_de_tijolos); Agora, se quiser 15037.59 tijolos, a coisa é mais chata double result = 15037.593984962406 * Math.pow(10, 2); result = Math.round(result) / Math.pow(10, 2)); A saída desse cálculo é 15037.59, coisa que você deveria usar apenas para calcular o valor. Trabalhar com valores com vírgula em Java é um saco, ainda mais quando se precisa trabalhar com valores monetários. Existem diversos exemplos Internet afora e como fazer para lidar com eles, mas a solução nunca é simples.
  8. @vqcarneiro Isso pode ser feito mas nunca vai funcionar. Você vai dar ao seu usuário a capacidade de alterar o software e inserir todo o tipo de lixo que ele achar "necessário". Fora a questão de inserir uma nova coluna no banco, você também precisa alterar o software para exibir essa nova coluna, adicionar ela no seu script de SQL, incluir o novo campo em uma consulta ou relatório, etc e isso seu usuário JAMAIS saberá como fazer e, se você der a possibilidade de mexer nisso, pode ter certeza que não vai dar certo. Acredite. Programas simples e intuitivos já provocam pane em alguns usuários, imagine deixa-los alterar o software. Em suma, se o seu usuário precisa de alteração no software, a melhor forma de fazer isso (e a correta também), é solicitar ao desenvolvedor do software que faça as mesmas e libere nova versão.
  9. @Fábio Sander Bom dia. É bem complicado e chato de fazer isso. Precisa usar o Java AWT Robot para isso. Precisa configurar o robô para navegar em cada site. Por exemplo, acesse o site, pressione TAB x vezes para selecionar tal elemento de tela, depois pressione espaço para acessar. Quando selecionar o dropdown depois de Y tabs, pressione VK_DOWN (seta para baixo) Z vezes para selecionar tal opção e então pressione ENTER. E assim vai indo para cada página. É realmente bem chato e trabalhoso. Infelizmente é a única forma que tenho conhecimento de fazer isso.
  10. @SoldZz bom dia. É só somar os valores e validar se o resto da divisão é zero. Se for, é par. Coloque seu código com suas tentativas para o pessoal poder te ajudar. Ninguém vai te dar o código pronto.
  11. @Ferreira27 Um resultset é criado por padrão antes do primeiro registro. Nunca use first() para as suas verificações. A maneira correta e mais segura de fazer é assim: if (conn.rs.next()) { //execute seu código } Sempre use next(). Se next() retornar false, significa que o resultset está vazio e nada foi encontrado com os parâmetros enviados no comando SQL. Usando first() você força que seja utilizado o primeiro registro do resultset. Se ele estiver vazio, vai dar erro.
  12. @Diego L1M4 Bom dia. Então, você precisa fazer o que te expliquei antes. Se você gerar o arquivo no jsp, vai estar gerando ele no computador DO CLIENTE. Isso é código que roda no browser e não no seu servidor. Você precisa pegar os dados de tela, submeter ao seu servlet, tratar os mesmos e daí você gera o arquivo de texto no lado do servidor.
  13. @LuizCarlos24 Boa tarde. É realmente complicado te dizer quais classes criar. Depende muito da estrutura e como você vai montar seu backend. Tenha em mente que o frontend deve apenas "desenhar" o que for enviado pelo backend. Provavelmente você terá objetos específicos para trabalhar com filtros, dados de cliente e produtos, BOs para interação com o banco de dados etc. Atualmente, o melhor seria a tela receber um JSON e renderizar o conteúdo a partir dos dados do mesmo. Criar um e-commerce não é fácil e a estrutura PRECISA ser segura, rápida e modular para facilitar manutenção, ainda mais que é projeto de conclusão. Esmero na programação é essencial. Se você tem pouco conhecimento na parte, considere usar Bootstrap para gerar os elementos da tela e, se tiver tempo para estudar, AngularJS 2 para facilitar a montagem de tela e interação client<->server.
  14. @Diego L1M4 Mas esse C: é no lado do client. A melhor coisa a se fazer MESMO é gerar tudo no servidor e disponibilizar o arquivo em forma de download.
  15. @Lívia Barreto Boa tarde. Mesmo com interface em web, o software inteiro seria desenvolvido em Java. A solução desktop, em Swing, também funciona, mas não é necessariamente mais fácil ou rápida de desenvolver. Com interface web, ao iniciar o computador, tanto banco de dados como servidor de aplicação iniciam normalmente, o que dispensa agendador de tarefas. Em caso de Swing, se necessitar de um .jar iniciando com o computador para gerenciar a comunicação com os clients, apenas coloque um atalho do .jar no Inicializar que tudo se resolve. Coloque nos agendamentos apenas um script para backup diário do banco de dados. Aproveite e crie uma conta do Google, Dropbox ou Onedrive para guardar os arquivos de backup do banco. Se você vai sair no final do ano, sabe-se lá quem vai tomar conta do software e, como são PCs antigos, a probabilidade de dar problema é grande. Sobre exportar para planilhas, já te adianto que é chato e meio complicado, mas tem como fazer.
  16. @Diego L1M4 boa noite Use a solução do @D4ni31 , mas altere a linha File arquivo = new File("Registro.csv"); para File arquivo = new File("c:\\Registro.csv"); Sem especificar a unidade, nada vai ser gravado. E lembre-se, fazer dessa forma é extremamente ruim. Você está presumindo que o usuário esteja usando Windows. E se ele estiver usando Linux, OSX ou estiver em um smartphone? O melhor é mandar a requisição para o servidor, gerar o arquivo no server, gravar ele no contexto da aplicação em uma pasta qualquer de depois redirecionar para o browser abrir diretamente o arquivo para download. Dessa forma não importa o sistema operacional e browser do lado do client.
  17. @Lívia Barreto boa tarde. A melhor forma de fazer isso é guardar as informações em um banco de dados. Veja qual desses 4 computadores tem o melhor hardware e instale o banco de dados e o servidor da aplicação nele. Recomendo o uso do banco de dados PostgreSQL. Free, rápido, muito poderoso e leve. Usamos ele para nossa aplicação. Temos cliente com bancos beirando os 250GB de dados e ele funciona lindamente. Desconsidere coisas como armazenamento de dados em arquivos texto, ler e alterar planilhas, etc. E se quiser ainda menos dor de cabeça, faça o programa com interface Web. Não precisa instalar nada em nenhum outro computador. Apenas acessar o browser, digitar o endereço e pronto. Como servidor de aplicação, existem vários disponíveis no mercado para web, como Tomcat, Glassfish, Wildfly, etc.
  18. @Luiz Felipe do Vale porque fazer via trigger? Não tem sentido. Inicie uma transaction - Finalize a venda e registre os itens da venda em banco SE retornou um OK - Atualize os movimentos de caixa efetuando a chamada de outro método que executa suas gravações em banco SE retornou OK - Faça a chamada do método que executa a gravação em banco para atualizar a quantidade de itens em estoque. TUDO deu certo? Commit. ALGO deu errado? Rollback. Faça as operações independentes. Faça seu software modularizado. Faça uma model especializada em cada função do seu software. Se tentar fazer tudo de uma vez no mesmo lugar, a manutenção começa a ficar onerosa e o código extremamente complicado de expandir/refatorar/corrigir.
  19. Não é uma pasta. É um contexto da dashboard do JBoss. Esse projeto por acaso não é o OpenShift BPM BAM Dashboard? Configure o ambiente, importe ele para a sua IDE e depure. Muito mais simples.
  20. @Elyton Moreira Boa tarde. A forma como você compara os valores está errada. A variável número é um int. Um tipo int se compara com return variavel1 == variavel2; No caso de nomeDono, é uma String. O tipo String NUNCA se compara com ==. Com String, o correto é return string1.equals(string2); Já no caso de double, a coisa complica um pouco. Double JAMAIS se compara com ==. É impossível que essa comparação funcione. Com double, a comparação é mais complexa //Se você usar int result = Double.compare(valor1, valor2); //No caso de double if (result > 0) { //Significa que valor1 é maior que valor 2 } else if (result < 0) { //Significa que valor1 é menor que valor 2 } else { //Sendo resultado igual a ZERO, significa que valor1 é igual a valor2 } No seu caso return this.numeroConta == conta.numeroConta && this.nomeDono.equals(conta.nomeDono) && Double.compare(this.limite, conta.limite) == 0 && Double.compare(this.saldo, conta.saldo) == 0; Veja se isso resolve. Abraço
  21. @Elyton Moreira boa noite. Basicamente, você precisa comparar os campos do objeto conta que dão identidade própria a ele. No caso, seria o número. @Override public boolean equals(Object conta) { return this.numero == conta.numero; } Do modo como está agora, o seu equals tem um return false, então a resposta sempre será que são diferentes.
  22. @Diego L1M4 Boa noite <input value="" name="j_username" class="text-input" type="text" autofocus/> altere para <input value="USUARIO_QUE_FARA_LOGIN_AUTOMATICO" name="j_username" class="text-input" type="text" autofocus/> Depois, <input name="j_password" class="text-input" type="password"/> altere para <input name="j_password" value="PASSWORD_DO_USUARIO" class="text-input" type="password"/> E antes da tag </body> coloque <script type="text/javascript"> document.forms[0].submit(); </script> Com isso você está setando direto no JSP os dados de login e mandando efetuar o submit dos dados no momento em que a página carregar. Se isso não funcionar, deve haver outra maneira de alterar o código da aplicação para entrar sem login.
  23. @Luiz Felipe do Vale Boa noite. Não sei se já resolveu isso, mas a maneira mais simples de fazer é, ao gravar a venda, apenas faça um método que remove do estoque, alterando a quantidade diretamente no banco. NUNCA remova um item do estoque enquanto a venda é feita. E se o cliente resolve cancelar a venda antes de concluir? Você teria o trabalho de recolocar em estoque. Para facilitar as coisas, execute a chamada de remoção de estoque no método em que você grava a venda, passando a lista de itens como parâmetro.
  24. @maycon1 O erro está bem descrito nesse stack Java.math.BigInteger cannot be cast to java.lang.Long Alguma variável de algum objeto é do tipo BigInteger e você está tentando gravar ela no banco como um tipo Long através de um cast direto. Para você gravar em banco um valor do tipo BigInteger como Long, faça suaVariavelBigInteger.longValue(); Isso deve resolver seu problema.
  25. @Rodrigo Orejana da Costa Boa tarde. No seu código não tem nada que possa servir de exemplo para olhar e analisar. Você apenas postou as chamadas feitas para a classe Player. Isso não ajuda. Você quer aumentar o volume de que? Do stream do aúdio no player ou no sistema operacional? Se for no Player, depende única e exclusivamente como você desenvolveu a reprodução e como trabalha com o stream do áudio. Se for o volume do sistema operacional, você terá que usar Runtime, ProcessBuilder ou JNI, descobrir qual a API do sistema operacional em que o Player está sendo executado controla o volume e realizar as chamadas através dele. Java é um sistema multiplataforma e não possui acesso a nenhum recurso exclusivo de API de nenhum sistema operacional. Você deve verificar em que sistema está operando e fazer as chamadas de acordo.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...