Pesquisar neste blog

Mostrando postagens com marcador java. Mostrar todas as postagens
Mostrando postagens com marcador java. Mostrar todas as postagens

sábado, 22 de abril de 2017

Instalando programa do IRPF 2017 no Linux OpenSUSE LEAP 42.1

Este tutorial tem por objetivo orientar como efetuar a instalação no IPF 2017 no Linux OpenSUSE LEAP 42.1 versão 64 bits.
Para verificar qual versão está instalada, abra um terminal e digite:
#cat /etc/os-release
 
A próxima etapa é baixar a versão atual do Java em https://www.java.com/en/download/linux_manual.jsp. Na página que abrir faça Download da versão RPM de 32 e 64 bits. Salva na pasta Download e em seguida clique com o botão direito sobre o arquivo e escolha a opção Abrir com Install/Remove Software. Faça isso para os dois arquivos, o da versão 32 bits e o da versão de 64 bits. Após isso, basta seguir as orientações na tela.
Com isso o java da Sun já está instalado, agora é necessário setar a mesma como padrão, caso contrário não será possível instalar o programa do IRPF 2017. Para isso siga os passos abaixo:

No terminal, em modo super usuário, digite primeiro o seguinte comando:

#update-alternatives --install "/usr/bin/java" "java" "/usr/java/jre1.8.0_131/bin/java" 1

Depois digite este comando:

#update-alternatives --set java /usr/java/jre1.8.0_131/bin/java

Para verificar se a instalação e configuração do Java foram feitas corretamente digite o comando abaixo para ver qual Java está definido como padrão:

#java -version

O resultado deve ser semelhante ao abaixo:

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) Server VM (build 25.131-b11, mixed mode)

Agora já é possivel instalar o aplicativo do IRPF 2017. Acesse o site da Receita Federal do Brasil e baixe o arquivo para distribuição Linux extensão bin.
Após baixar o arquivo acesse a pasta onde o arquivo foi salvo e digite o seguinte comando:

#chmod a+x IRPF2017Linux-x86_64v1.1.bin

Isso fará com que o arquivo se torne um executável. Agora é só efetuar a instalação digitando o seguinte comando:

#./IRPF2017Linux-x86_64v1.1.bin

Siga as orientações na tela. Com isso o sistema estará disponível para uso.
Observação. Caso precise remover o link para o novo java você pode usar o seguinte comando:

#update-alternatives --remove java /usr/java/jre1.8.0_131/bin/java




Claudir Pereira dos Santos


Matelândia, 22 de abril de 2017.





sábado, 3 de outubro de 2015

Programa Claupers Bazar para gerenciamento de bazares feitos com produtos doados pela Receita Federal do Brasil

Este post tem a finalidade de demonstrar com instalar e usar o sistema Claupers Bazar, desenvolvido para auxiliar no gerenciamento de bazares feitos com produtos recebidos pela Receita Federal do Brasil.

Requisitos: leito de PDF, MySql Server e Java

O programa foi desenvolvido em Java e usa o banco de dados MySql. Para que o sistema funcione, é necessário que exista uma máquina que atue como servidor MySql e que as maquinas clientes e servidor tenha instalado a última versão do Java.
Na máquina que será usada como servidor, deverá ser criado uma schema com o nome claupersbazar. Ao ser iniciado pela primeira vez, o sistema criará automaticamente as tabelas. Antes de abrir o banco, deverá ser verificado na pasta do sistema se a string de conexão do banco está apontado para o servidor correto e se o usuário e senha do banco estão certos.
Feito isso, ao abrir o sistema, poderá ser digitado o usuário ADMIN senha admin. O sistema cria automaticamente os seguintes usuários e senhas:

usuário: CADASTRO01 senha: cadastro01: Responsável por cadastrar as pessoas no dia do Bazar;
usuário: RECIBO01 senha: recibo01: Responsável por emitir o recibo no dia do Bazar;
usuário: PRODUTO01 senha: produto01: Responsável por cadastrar os produtos e grupos no levantamento das mercadorias;







A primeira tarefa ao abrir o sistema é ir ate o menu Tabelas\Bazar e alterar os parâmetros do Bazar:







Nessa tela é possível definir todos os parâmetros do sistema:







Após definidos os parâmetros, a próxima etapa é cadastrar os produtos. O sistema não faz controle de estoque. A finalidade do mesmo é apenas emitir recibo. Recomendamos que seja feito cadastro unitário apenas de produtos com alto valor agregado como eletrônicos, perfumes assim por diante. Itens de valor baixo, recomendamos cadastro genéricos como:

Brinquedos de R$ 2,00
Brinquedos de R$ 3,00
Vestuarios de R$ 5,00
Utilidades de R$ 3,00

No dia do Bazar, no mínimo dois computadores deverão ser usados para cadastrar as pessoas que irão efetuar a compra. Como base nos parâmetros informados, poderá ser estabelecida restrição na venda para menores de idade. Recomendamos a distribuição de senhas manualmente na fila para evitar tumulto. Com base nas senhas, o segurança da porta de entrada pode solicitar que entrem cerca de cinco pessoas de cada vez para o cadastro. Feito o cadastro, na tela é possível Gerar o controle da compra onde será anotado os itens escolhidos pela pessoa em cada sessão e no final usado nos computadores responsáveis pela emissão do recibo para fazer o cálculo:



Ao clicar nesse botão será aberta a tela para gerar o controle de compra:



Ao clicar no botão será gerado o controle. Em seguida deve ser clicado no botão imprimir para ser aberto um arquivo PDF que deverá ser impresso e entrega ao comprador:





Depois de feito as compras, a pessoa se dirige aos computadores responsáveis pela emissão do recibo. Preferencialmente esses computadores devem estar próximo da saída. Recomendamos o mínimo de dois computadores e uma impressora para essa tarefa. Nessa etapa será aberta a tela do menu Movimento\Emissão de Recibo.

Nessa tela deverá ser digitado no topo o número do controle da pessoa e pressionado ENTER. Em seguida deve ser pressionado o botão LANÇAR ITENS e iniciar a digitação dos códigos dos itens anotados na ficha de controle e a quantidade para que sejam inseridos no recibo. Ao final da inserção deve ser clicado no botão FECHAR RECIBO.



Feito isso, agora deve ser clicado no botão IMPRIMIR para gerar o recibo. Ao fazer isso será gerado e aberto um arquivo PDF. Na primeira vez deverá ser ajustado para imprimir em meia folha. Nos recibos seguintes este ajuste será mantido. Feito isso, deverá ser impresso duas vias do recibo e a pessoa deverá se dirigir ao caixa para pagamento. Uma via o caixa vai reter e outra vai com a pessoa para que ela retire os produtos no pacote. O recibo deverá ser assinado pelo caixa ao receber e pelo pacote ao entregar, para que a pessoa não possa tentar retirar os produtos novamente.



O administrador poderá fazer o fechamento do caixa no menu Movimento\Fechamento de Caixa. Para isso deverá ser cadastrado um caixa, com seu saldo inicial e e seguida lançado os recibos que foram pagos. Ao final, o caixa deverá ser fechado e um relatório poderá ser impresso para conferência:




O relatório de fechamento é como abaixo:




Seria isso. Segue abaixo um link para baixar o programa e instalar nas máquinas. Para isso, basta extrair o arquivo e configurar o local, usuário e senha da base de dados no arquibo bazar,.properties. Em seguida, criar um atalho na Área de Trabalho para ClaupersBazar.jar.


Baixe aqui o sistema


Claudir Pereira dos Santos


Matelândia, 03/10/2015


quarta-feira, 11 de setembro de 2013

Ativando Java para FireFox 64 bits no OpenSuse 64 Bits com KDE


-->



Este tutorial foi aplicado no openSUSE 12.3 64 bits e em algumas versões anteriores sem problemas. Primeiramente deve ser instalado o java diretamente do site http://www.java.com/pt_BR/download/linux_manual.jsp?locale=pt_BR. Faça a instalação da versão de 32 bits ou 64 bits de acordo com seu navegador e sistema. Use os pacotes RPMs e opte pela instalação automática pelo Apper ou Gerenciados de Aplicativos.
Em seguida é necessário remover possíveis links para outras versões do plugin java e em seguida criar ou atualizar o link do plugin java para o firefox na pasta padrão dos plugins para o browser. Isso é feito com os seguintes comandos:

# ln -s /usr/java/jre1.7.0_21/lib/amd64/libnpjp2.so /usr/lib64/browser-plugins/


Esse comando cria um link/atalho para o arquivo libnpjp2.so na pasta browser-plugins. Deve se atentar que deve ser criado em /usr/lib64/browser-plugins e não em /usr/lib/browser-plugin quando o firefox e 64 bits.
Após a configuração, basta acessar o site da Java para verificar se a instalação está correta. O link para o teste está logo abaixo:

http://www.java.com/pt_BR/download/installed.jsp?detect=jre&try=1

O endereços dos arquivos e pastas podem variar de acordo com a distribuição e versão dos aplicativos. Ajuste de acordo com a necessidade.

-->


Claudir Pereira dos Santos
Matelândia/PR, 11 de setembro de 2013.

segunda-feira, 5 de agosto de 2013

Problemas com JComboBox x BeansBinding x JTable






Para quem usa BeansBinding para vincular JTable com JComboBox, fica aqui uma dica. Quando ao selecionar uma linha do Jtable não atualizar as informações do JComboBox correspondente, basta mudar a linha de criação para antes da criação da tabela. Com isso, ao clicar nas linhas as informações devem ser atualizadas no JComboBox. Um procedimento simples mas que pode dar muita dor de cabeça até que seja descoberto.









Cordialmente;


Claudir Pereira dos Santos


Matelândia, 05/08/2013.

sexta-feira, 7 de junho de 2013

Ativando Java no Mozilla Firefox 21 no Linux Debian Wheezy

A ativação do Java para o Mozilla Firefox 21 não é um processo difícil. Basta baixar o Java para a versão adequada de seu navegador. Nesse exemplo será usado o arquivo do Java de 64 bits pois essa é a arquitetura do Debian Wheezy e do Mozilla Firefox. Se você for trabalhar com arquitetura de 32 bits use o Java de 32 bits e verifique as mudanças nos caminhos.

-->



A primeira etapa e baixar a ultima versão do Java para Linux no seguinte endereço: http://www.java.com/pt_BR/download/linux_manual.jsp?locale=pt_BR
Fique atento a sua arquitetura.
Em seguida, descompacte o arquivo com o comando abaixo:

$tar zxvf nome_do_arquivo_baixado

Depois moca a pasta que foi criada com a descompactação conforme comando abaixo:

$mv caminho_e_nome_da_pasta //usr/lib/jvm/

O último passo é criar um link simbólico para a biblioteca do Java para a pasta do navegador:

$ln -s /usr/lib/jvm/jre1.7.0_21/lib/amd64/libnpjp2.so /usr/lib/mozilla/plugins/


-->



Feito isso, basta abrir o navegador e acessar o seguinte endereço para verificar se a instalação correu perfeitamente:

http://www.java.com/pt_BR/download/installed.jsp

Seria isso. Boa sorte.


Claudir Pereira dos Santos

Matelândia, 07/06/2013.
-->


quinta-feira, 27 de setembro de 2012

Estabelecendo o LookAndFeel padrão de sua aplicação Java






Após alguns sofrimentos com a interface gráfica mudando ao executar a aplicação, encontrei uma solução que é a seguinte. Na Classe Principal do programa deve ser alterado o metodo main para ficar como o código abaixo:
 
 public static void main(String[] args) {
        try {
              UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
            } catch (Exception e) {
            e.printStackTrace();
          }
 
Com isso, será usado a interface gráfica do java que você quizer. No caso eu usei a windows, mas você pode usar a nimbo, metal, plastic e outras.
 




 

 
Claudir Pereira dos Santos
 
 
Matelândia, 23 de outubro de 2009.
 

Usando drive jdbc do firebird para java





Um dos segredos em usar o drive jdbc do firebird para java é adicionar o certo.
Tentei conexão adicionando o drive firebirdsql.jar mas não dava certo, mesmo tentando varios tivos de url de conexão.
Só funcionou quando usei o drive firebirdsql-full.jar. Após isso adicionei uma url com o seguinte formato e funcionou:
 
jdbc:firebirdsql://localhost:3050/C:\caminho\banco.gdb
 
 
Seria isso pessoal.
 
 
 
Cordialmente;
 
 
Claudir Pereira dos Santos





sexta-feira, 17 de agosto de 2012

Exemplo de Converter de Timestamp para Calendar para ser usado com binding em Java

Para quem necessitar de um Converter de Timestamp para Calendar, segue abaixo um exemplo. Cabe ressaltar que faz grande diferença se o código está em ConvertForward ou ConvertReverse, Aprendi isso as duras penas. Ao tentar executar o sistema com os códigos invertidos recebia a seguinte mensagem de erro: Cannot cast java.util.GregorianCalendar to java.sql.Timestamp.




package br.com.claupers.reportsspdata.model;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import org.jdesktop.beansbinding.Converter;

public  class ConverterTimeStampToCalendar extends Converter<Calendar,Timestamp>{   
    public Timestamp convertForward(Calendar value) {       
        SimpleDateFormat format;
        format = new SimpleDateFormat("dd/MM/yyyy HH:MM");   
        format.setLenient(false);
        String stringData = format.format(value.getTime());
        Timestamp data=null;
        try {
            data = new Timestamp(format.parse(stringData).getTime());
        } catch (ParseException e) {           
            e.printStackTrace();
        }
         return data;
    }
   
   
    public Calendar convertReverse(Timestamp value)
    {   
        SimpleDateFormat format;
        format = new SimpleDateFormat("dd/MM/yyyy HH:MM");   
        format.setLenient(false);
        String stringData = format.format(value);
        Calendar data = Calendar.getInstance();
        try {
            data.setTimeInMillis(format.parse(stringData).getTime());
        } catch (ParseException e) {           
            e.printStackTrace();
        }
        return data;      
    }  
}

  

Seria isso.




Claudir Pereira dos Santos


Matelândia, 17 de agosto de 2012.   

quinta-feira, 19 de julho de 2012

iReport 4.5.1 - Somando valor de uma váriavel do subReport no relatório principal

Quando for necessário somar os valores ou efeturar algum outro tipo de cálculo com valores de um supreport é possível usar a propriedade return values do componente subreport. Para isso, crie no subreport uma váriavel para armazenar o valor e faça o mesmo do relatório principal. Veja o exemplo abaixo:




Váriavel do relatório Principal:
Nome: TotalGeral
Variable Class: java.lang.Double
Calculation: System
Reset Type: report;


Váriavel do relatório Principal:
Nome: Total
Variable Class: java.lang.Double
Calculation: Nothing
Reset Type: report; 
Variable Expression: O campo ou a referência que conterá os valores a serem calculados.

Feito isso, no relatório principal deve ser selecionado o componente subreport e aberta a propriedade return values. Nesta tela deverá ser feito o vinculo entre a varial do subreport e do relatório principal. Atenção! O nome da váriavel do subreport não aparecerá de deverá ser digitada. Veja exemplo na tela abaixo:




Configurando retun values no subreport
Agora basta adicionar a váriavel TOTALGERAL no relatório e emitir para testar.



Claudir Pereira dos Santos

Matelândia, 19 de julho e 2012.




iReport 4.5.1 - Efetuando consulta em multiplos bancos de dados com connection expression

INTRODUÇÃO


Não é muito comum, mas as vezes pode ser necessário emitir um relatório com base em informações em duas ou mais bases de dados. Para resolver esse problema pode ser usado um subreport no iReport. Nesse exemplo será usado a base de dados do sistema Sisaih01 do Datasus que usa o Firebird como SGDB. Esse sistema possui três bases de dados, sendo a sisaih00.gdb, sisaih01.gdb e a sisaih99.gdb. A sisaih00.gdb armasena tabelas que podem ser alimentadas e alteradas pelo Datasus mensalmente como por exemplo de procedimentos, cid10, clinicas entre outras. A sisaih01.gdb armazena informações inseridas pelos hospitais como dados do paciente, procedimentos realizados, internações entre outros. A sisaih99.gdb armazena tabelas que são alteradas raramente como de cep, nacionalidade entre outros.




O PROBLEMA


O problema que levou a pesquisa sobre como usar o iReport para emitir um relatório usando multiplas bases foi a necessidade de um relatório com nome de pacientes, código e descrição do procedimento, valor do procedimento, número da Autorização de Internação Hospitalar (AIH), mês de apresentação e de competência da internação entre outros dados. Como a tabela de procedimentos que contem o valor e a descrição não fica na mesma base onde são armazenados os dados da internação do paciente, foi necessário buscar a solução.


CRIANDO CONSULTA DO BANCO SISAIH01.GDB PARA RELATÓRIO PRINCIPAL DO IREPORT


Antes de criar a consulta sql, lembre-se de adicionar o jar do drive jaybird no classpath do iReport e configurar a conexão. Abaixo segue uma cópia da tela de configuração como exemplo:


Configurando conexão


Deverá ser criada uma configuração para cada base que será usada para que seja possível usar em tempo de desenvolvimento. Para gerar o relatório principal será usado o comando sql abaixo. Clique com o botão direito do mouse sobre o relatório na janela do Report Inspector e escolha a opção Edit Query  e cole a consulta abaixo em Report Query:


select serv.sp_apres,serv.sp_cmpt_uti_acomp,serv.sp_num_aih,
serv.sp_dt_int,aih.aih_pac_nome,serv.sp_ato_prof,vlr.va_linha,aih.aih_car_int
from tb_serv_prof serv
inner join  tb_valor_aih vlr on serv.sp_num_aih=vlr.va_num_aih
inner join tb_aih aih on vlr.va_num_aih= aih.aih_num_aih

where
(
/*Procedimentos componente II - competência 07/2012*/
(serv.sp_ato_prof in (0404010016,0404010024,0404010032,0404010105,0404010210,0404010229,
                      0404010237,0404010350,0405020015,0405020023,0405030134,0405030142,
                      0406020566,0406020574,0408040076,0408040084,0408040092,0408050055,
                      0408050063,0408050160,0408050888,0408050896,0409010235,0409010561,
                      0409030040) and serv.sp_cmpt_uti_acomp=201207
)
)
and vlr.va_linha=1 and vlr.va_tipo_valor=1 and serv.sp_linha=1
and aih.aih_car_int=01 and (serv.sp_apres=$P{P_APRES})
order by serv.sp_apres





Com isso já é possível montar o relatório principal com a estrutura da figura abaixo:

Relatório Principal


Após desenhar o relatório principal, salve o mesmo como o nome Eletivas.
 



CRIANDO CONSULTA DO BANCO SISAIH00.GDB PARA SUBREPORT DO IREPORT


Agora que já foi criado o relatório principal, é hora de criar o subreport. Lembre-se de mudar na caixa de seleção a conexão para o banco sisaih00.gdb. Feito isso, crie um novo relatório com o nome Eletivas_subreport, adicione dois parâmetros no sub-relatório (P_COMP e P_CODPROC) e cole a seguinte consulta:


select pr.proc_cod,pr.proc_descr,pr.proc_vl_sh,pr.proc_vl_sp,pr.proc_cmpt_ini,pr.proc_cmpt_fim
from tb_proc pr where pr.proc_cod=$P{P_CODPROC} and pr.proc_cmpt_ini=$P{P_COMP}



Feito isso basta estruturar o subreport com os campos conforme imagem abaixo e adicionar uma váriavel com expressão para receber o total dos campos do serviço médico e hospitalar:


Componentes subreport e expressão da váriavel total

Dica: Usa a propriedade pattern  dos campos para formatar como moeda.

Neste exemplo o subreport deve ficar o mais estreito possível pois ele vai ficar abaixo das linhas do relatório principal conforme pode ser visto na figura abaixo:


Relatório principal com subreport
Na figura acima já foi adicionado um componente subreport da palheta do iReport no relatório principal. Esse componente tem por função fazer a ligação entre os dois relatórios. Nesse exemplo o componente foi colocado dentro da banda detalhes, logo abaixo das informações que serão exibidas pelo relatório principal, dessa forma, a cada linha do principal, logo abaixo será exibido as linhas do sub-relatório.




ADICIONANDO O SUBREPORT NO RELATÓRIO PRINCIPAL DO IREPORT


Ao adicionar o componente subreport o iReport iniciará um assistente para auxiliar nas configurações do componente. Na primeira tela marque para usar um relatório existente e selecione o Eletivas_subreport conforme figura abaixo:


Adicionando relatório do componente subreport
Na tela seguinte marque para não usar conexão pois iremos configurar manualmente:

Configurando conexão

Na tela seguinte é feita a vinculação dos dois parâmetros (P_COMP e P_CODPROC) criados no subreport com valores do relatório principal. Esses dois parâmetros foram usados na consulta sql, lembra? Dessa forma, vamos especificar quais valores devem ser buscados no outro banco a cada nova linha gerada no relatório principal. Se isso não fosse aplicado, para cada linha da tabela mestre seria exibido todos os registros da tabela detalhe. Nesse caso o critério de busca é o procedimento e a competência do mesmo, sendo que dessa forma sempre será retornado apenas um registro. A configuração ficará conforme tela abaixo:

Vinculando parâmetros do subreport com fields no principal
Como pode ser visto na figura acima, foi vinculado os parâmetros do detalhe aos fields do principal. Dessa forma será usado o valor desses fields na busca da tabela detalhe. Na tela seguinte defina que o caminho do subreport será armazenado em um parâmetro, conforme abaixo:

Configurando armazenamento do diretório do subreport

Feito isso o subreport está quase pronto. Agora vamos definir como será feita a conexão dos dados. Selecione o componente subreport e na janela de propriedades altere connection type para Use a connection Expression. Com isso, logo abaixo essa propriedade será ativada, clique no botão ao lado dela e adicione o seguinte valor:


java.sql.DriverManager.getConnection("jdbc:firebirdsql:192.168.0.1/3050:c:/Arquivos de Programas/Datasus/sisaih01/sisaih00.gdb","SYSDBA","masterkey")

O endereço obviamente deve ser o de seu banco caso vá fazer um teste. Feito isso, o relatório principal já pode ser visualizado, dessa forma ele irá pedir a apresentação. Se ao executar o relatório você receber um erro conforme abaixo não se assuste:

...
Caused by: java.sql.SQLException: No suitable driver found for jdbc:firebirdsql:192...
...

Isso pode ser corrigido mudando a propriedade language no relatório principal de Grovy para Java como pode ser visto na figura abaixo. Para isso, basta clicar com o botão direito sobre o relatório na janela Report Inspector e escolher a opção Propriedades. Feito isso, o relatório deve funcionar.

Alterando propriedade language do relatório de grovy para Java


Seria isso, caso tenha alguma sugestão ou dúvida é só postar nos comentários.


Claudir Pereira dos Santos


Matelândia/PR, 19 de julho de 2012.







terça-feira, 3 de julho de 2012

Exportando planilha xls no iReport 4.5.1 com fórmulas





Um iReport é uma ferramenta muito pederosa para criação de relatórios. Neste pequeno tutorial será demonstrado como gerar um relatório e exportar o mesmo para o formato xls com fórmula. Como exemplo será usado um relatório com a estrutra exibida na figura abaixo:

Relatório de exemplo




Com seu relatório pronto, faça um teste de exportação para xls, veja como estão dispostas as colunas e linhas. Faça os ajustes que entender necessário para melhorar a visualização. Uma dica é não deixar nenhum espaço entre uma coluna e outra do relatório. Dessa forma, a planilha será gerada sem pular colunas também.
Uma vez visualizado e ajusta o relatório, agora deve ser definido quais colunas serão usadas. Neste exemplo, a coluna I ( Vlt. Total) irá armazenar a multiplicação de G*H, respectivamente Qtde e Vlr. Unit como pode ser verificado na figura abaixo:




Planilha de exemplo

Também deve ser observado em qual linha vão iniciar os dados, isso é muito importante para o correto funcionamento da fórmula.
Com a estrutura do relatório pronta, agora é hora de ativar a função na coluna Vlr. Total do relatório para efetuar o cálculo. Para isso selecione o field referente ao valor total, vá na paleta propriedades e clique em proprerties expressions e adione a expressão abaixo:

net.sf.jasperreports.export.xls.detect.cell.type=True

Ativando capacidade de reconhecer fórmulas


Essa expressão ativa a capacidade da célula reconhecer as formulas da planilha quando o relatório é exportado para arquivos xls. Se for exportado para outro formato será usado o valor da propriendade Text field expression.
Feito isso, agora vamos adicionar outra proprerties expressions. Essa nova propriedade e expressão é a própria fórmula. A propriedade é a seguinte:

net.sf.jasperreports.export.xls.formula

O valor dessa propriedade deve ser marcado como expressão. Sua estrutura é a seguinte:

"G"+($V{REPORT_COUNT}+2)+"* H"+($V{REPORT_COUNT}+2)

Veja na imagem abaixo como ficou na tela de configuração:

Adicionando fórmula
Pronto. Agora ao exportar a planilha a coluna do valor total receberá a seguinte fórmula:
=G3*H3
=G4*H4
=Gn*Hn
A adição do 2 a váriavel REPORT_COUNT se faz necessário porque a faixa de dados inicia-se na linha 3.
Seria isso. Agora é só usar a criatividade e implementar outras fórmulas.




Claudir Pereira dos Santos


Matelândia/PR, 04/07/2012

Instalando e configurando WindowBuilder Pro no Eclipse para desenvolver aplicativos Swing





O WindowBuilder é composto por SWT Designer e Swing Designer tornando a criação de  aplicações Java GUI descomplicada, reduzindo com isso o tempo empregado para escrever códigos. É possível usar ferramentas visuais de design e layout para criar de formas simples, janelas complexas, sendo o código Java gerado automaticamente. Os controles podem ser arrastados e soltos para serem adicionados. Também é possível gerenciar os manipuladores de eventos dos componentes e alterar suas propriedades usando um editor visual entre outras opções (THE ECLIPSE FOUNDATION, 2011).
Essa ferramenta é construído como um plug-in para o Eclipse e as várias ferramentas baseadas em Eclipse.Ele constrói uma árvore sintática abstrata (AST) para navegar no código fonte e usa GEF para mostrar e gerir a apresentação visual. O código gerado não requer bibliotecas adicionais personalizados para compilar e executar, podendo ser usado sem ter WindowBuilder Pro instalado. Ele pode ler e escrever praticamente qualquer formato e engenharia reversa inclusive código escrito a mão, suportando a edição do código de forma livre permitindo fazer alterações em qualquer lugar, e mais, é possível mover, alterar nome e subdividir os métodos sem nenhum problema(THE ECLIPSE FOUNDATION, 2011).
A instalação do WindowBuilder Pro é simples. Para efetuar, basta acessar o site da ferramenta e obter o link para usar na ferramenta de instalação do Eclipse. Para isso primeiramente deve se acessar o link https://developers.google.com/java-dev-tools/download-wbpro?hl=pt-BR e copiar o endereço de acordo com a versão do Eclipse. Depois, basta ir no menu help, clicar em Install New Software e colocar o link conforme figura abaixo:




Instalando WindowBuilder Pro
Instalando WindowBuilder Pro

Após a instalação basta reiniciar o Eclipse que novos componentes irão aparecer na IDE. Com isso já é possível usar as ferramentas. Na figura abaixo e demonstrado como criar a tela principal de uma aplicação Swing.


Como pode ser visto a ferramenta da suporte a outros tipos de interface, mas no tutorial será abordado apenas o Swing.
Com a criação do formulário principal o Eclipse exibirá o código fonte do mesmo. Para que seja possível trabalhar em modo visual, basta clicar na aba design conforme é exibido na Figura abaixo que também já traz mais alguns recortes da tela de desenvolvimento.




Ferramentas do WindowBuilder Pro
Ferramentas do WindowBuilder Pro

Ao adicionar, por exemplo, um JTextField, a paleta structure exibirá as opções que poderão ser alteradas do componente. Em sua parte superior a mesma tem cinco botões sendo eles o (1)Show Events que exibe os eventos que podem ser ativados, (2)Goto Definition que leva para o código do componente, (3)Convert Field to local/Convert Local to Field que define se os componentes serão declarados para serem usados apenas localmente no código ou se em todo o escopo da classe, (4) Show advanced properties que exibirá as opções avançadas do componente e por fim o botão (5)Restore default value que irá restaurar os valores padrões.

Paleta e propriedade do componente
Paleta e propriedade do componente


Na Figura abaixo é exibida a prévia de uma janela criada com WindowBuilder Pro e do lado esquerdo todos seus componentes.

Exemplo de formulário e paleta de componentes adicionados
Exemplo de formulário e paleta de componentes adicionados




Para efetuar a vinculação faz-se necessário a biblioteca beansbinding-1.2.1.jar que pode ser encontrada em http://download.java.net/maven/2/org/jdesktop/beansbinding/1.2.1/. Após realizar download do arquivo, é necessário adicioná-lo ao CLASSPATH. Para isso pode ser criado uma nova pasta no projeto com nome de lib onde o arquivo é colado e feito os procedimentos da Figura abaixo. 

Adicionando beansbindig ao classpath
Adicionando beansbindig ao classpath
Após adicionar o arquivo ao CLASSPATH basta fechar e abrir o formulário para que uma nova aba, a Bindings, seja ativada conforme é mostrado na Figura abaixo.

Ativando aba Bindings
Ativando aba Bindings


Nessa aba estão disponíveis vários comandos visuais para configuração dos vínculos como pode ser observado na Figura abaixo.

Tela de configuração bindings
Tela de configuração bindings
No campo 1b, serão exibidas as vinculações criadas que, ao serem selecionadas poderão ser alteradas pelos controles do campo 1a. Os controles dos campos 2a e 2b servem para definir como o objeto deve ser tratado, isso é muito importante, pois algumas opções só aparecerão se for feita a definição correta. Os campos 3a e 3b estabelecem, respectivamente, qual objeto será o alvo e o modelo. O controle do campo 4 serve para criar a vinculação. Por fim, os campos 5a e 5b, permitem escolher quais propriedades serão vinculadas de ambos os objetos.
Seria isso. No próximo tutorial será demonstrado como preparar as entidades para trabalhar com beansbindings e como preparar o modelo para jTable para receber os dados.


Claudir Pereira dos Santos

Matelândia/PR, 03/07/2012.






Referências:

THE ECLIPSE FOUNDATION. WindowBuilder - is a powerful and easy to use bi-directional Java GUI designer. Eclipse, 2011. Disponivel em: <http://www.eclipse.org/windowbuilder/>. Acesso em: 09 set. 2011.

Criando entidades de forma reversa no Eclipse e configurando arquivo persistense.xml

Quem não se assustou com o código de uma entidade do Java no início dos estudos que atire a primeira pedra. Mas se você está iniciando em Java não se assuste, existem formas práticas de gerar uma entidade. Esse tutorial é uma continuação do Iniciando um novo projeto JPA no Eclipse Indigo e instalando EclipseLink. Dessa forma é necessário que você o leia antes.
Se o projeto JPA já foi criado sem problemas e a conexão com sua base de dados estabelecida, já é possivel criar as entidades de forma reversa, onde elas são geradas com base nas informações do banco. Para isso basta clicar com o botão direto sobre o projeto e ir na opção JPA Tools conforme figura abaixo:




Criando entidades de forma reversa no Eclipse
Criando entidades de forma reversa no Eclipse
Com isso é chamada a ferramenta de geração de entidades onde é possível controlar a conexão com o banco, quais tabelas terão as entidades criadas, os relacionamentos das mesmas, o tipo de acesso, a forma de geração da chave primária, tipo de coleção entre outras informações como é visto na figura abaixo:




Criando entidade com JPA Tools
Criando entidade com JPA Tools
Com esses procedimentos as entidades são criadas e estão prontas para serem usadas. Agora basta fazer alguns ajustes finais no arquivo persistence.xml. Para abrir o arquivo, basta dar dois cliques que o Eclipse chama a ferramenta para edição do mesmo. Como está sendo usado o EclipseLink, o controle desse arquivo pode ser feito de forma visual em vários parâmetros. Com outras opções como Hibernate, isso também é possível, mas alguns parâmetros tem que ser ajustadas manualmente no código do arquivo. Na Figura abaixo é demonstrado com configurar a conexão de forma simplificada. Ao clicar em populate from connection o próprio sistema gera a string de conexão do banco.




Configurando arquivo persistense.xml
Configurando arquivo persistense.xml

Outra opção que vale apena dar uma olhada é na configuração dos logs. No arquivo persistense.xml também é possível controlar qual o nível de registro de eventos do sistema. Esta opção é útil para detecção de erros. A Figura abaixo ilustra essa opção.


Configurando nível de log os eventos no arquivo persistense.xml
Configurando nível de log os eventos no arquivo persistense.xml

Da mesma forma que as entidades foram geradas usando como referência as tabelas da base de dados, o processo também pode ser feito no outro sentido. Para isso basta criar a entidade e vinculá-la no arquivo persistense.xml e configurar para que as tabelas sejam criadas ao se executar o sistema. Essa opção é demonstrada na Figura abaixo:

Configurando opções de alteração da base no arquivo persistense.xml
Configurando opções de alteração da base no arquivo persistense.xml

Todas as alterações feitas são refletidas no código do arquivo persistense.xml que pode ser visualizado na aba Source conforme é exibido na Figura abaixo. As alterações feitas no código também refletirão nos controles visuais.

Código do arquivo persistense.xml
Código do arquivo persistense.xml

Seria isso. Agora já é possível iniciar o desenvolvimento da interface gráfica. No próximo tutorial (Instalando e configurando WindowBuilder Pro no Eclipse para desenvolver aplicativos Swing) demonstrarei como instalar e configurar o WindowBuilder Pro para desenhar a tela e fazer as ligações entre a interface a e base por meio de Beans Binding.


Claudir Pereira dos Santos

Matelândia/PR, 03/07/2012.

Java AbstractTableModel - Implementando método getValueAt com reflection







Reflection é uma característica da plataforma Java que permite obter informações de forma introspectiva, ou seja de sim mesmo, em tempo de execução. Com esse recurso, uma classe consegue ler a si mesmo e obter informações que podem ser usadas pelo desenvolvedor. Nesse exemplo esse recurso foi usado para implementar o método getValueAt da AbstractTableModel.
Primeiramente foi necessário criar uma Array de Strings para armazenar o nome dos campos da classe respeitando-se maiusculas e minusculas e uma lista tipada para armazenar as entidades:

private String[] fields = {"id","nome","endereco"};
private List<Entidade> myList = new ArrayList<Entidade>(); 

Em seguida foi implementado o método getValueAt:

@Override
    public Object getValueAt(int row, int col) {
        Entidade e = (Entidade)myList.get(row);        
        try {
            final Field field=e.getClass().getDeclaredField(fields[col]);
            if (field!=null){
                field.setAccessible(true);
                return field.get(e);
            }
        } catch (SecurityException e1) {
            return "Erro SE";
        } catch (NoSuchFieldException e1) {
            return "Erro NE";
        } catch (IllegalArgumentException e1) {
            return "Erro IAr";
        } catch (IllegalAccessException e1) {
            return "Erro IAc";
        }        
        return "";

    }






Uma atenção especial deve ser data a importação da classe Field. Deve ser usada a localizada no pacote indicado abaixo:

import java.lang.reflect.Field;


Seria isso.


Claudir Pereira dos Santos

Matelândia, 03/07/2012.

sexta-feira, 1 de junho de 2012

Valor JTextField em UpperCase



Após algumas pesquisas na net em busca de uma solução para permitir apenas textos em letras maiusculas no JTextField do Java, a solução que mais me agradou foi essa.
Clique com o botão direto no mouse sobre o JTextFiled, vá na opção eventos\key\KeyReleased. Ele irá gerar o código inicial para o evento. Altere o mesmo para que fique da seguinte forma:

private void JTextField1KeyReleased(java.awt.event.KeyEvent evt) {

        if (evt.getKeyCode()!=32 & evt.getKeyCode()!=8 & evt.getKeyCode()!=37 & evt.getKeyCode()!=39)

        //JOptionPane.showMessageDialog(null, evt.getKeyCode(),"Código da tecla", 0);

        JTextField1.setText(JTextField1.getText().toUpperCase()); 

    }


Aprimorando o código para que não seja necessário mudar para cada componente:


 private void tf_NomeKeyReleased(java.awt.event.KeyEvent evt) {                                   

        JTextField tf = (JTextField) evt.getComponent();

        if (evt.getKeyCode()!=32 & evt.getKeyCode()!=8 & evt.getKeyCode()!=37 & evt.getKeyCode()!=39)

            tf.setText(tf.getText().toUpperCase());

    }

Agora, a cada tecla pressionada, o caracter será convertido para maiuscula e o cursor irá para o final do texto. Por isso é necessário tratar a entra. Caso a tecla seja espaço, back space, seta para frente e seta para tráz, nada é feito. Caso queira que outra tecla seja ignorada e não sabe o número, basta descomentar a terceira linha do código que o número correspondente será exibido. 


Claudir Pereira dos Santos 

 Matelândita, 20 de outubro de 2009.

segunda-feira, 13 de fevereiro de 2012

Simulando DBLookUpComboBox para capturando chave do valor selecionado no JComboBox

Esta dica é uma referencia a versão original do seguinte link:

http://tech.chitgoks.com/2009/10/05/java-use-keyvalue-pair-for-jcombobox-like-htmls-select-tag/

Ela demonstra como trabalhar com um campo chave e uma descrição em um jComboBox. Isso é muito útil para quem vem do Delphi e está acostumado com o DbLookUpComboBox. Para elucidar a questão, segue abaixo código do objeto a ser adicionado aos itens do combo box:



public class KeyValue {
 String key, value;
 
 public KeyValue(String key, String value) {
  this.key = key;
  this.value = value;
 }
 
 public String getValue() { return value; }
 public String getKey() { return key; }
 
 @Override
 public String toString() { return key; }
 
 @Override
 public boolean equals(Object obj) {
  if (obj instanceof KeyValue) {
   KeyValue kv = (KeyValue) obj;
   return (kv.value.equals(this.value));
  }
  return false;
 }
 
 @Override
 public int hashCode() {
  int hash = 7;
  hash = 97 * hash + (this.value != null ? this.value.hashCode() : 0);
  return hash;
 }
}
 
 



Agora segue um exemplo de como adicionar os itens ao jComboBox:

jComboBox1.addItem(new KeyValue("Valor a ser exibido", "Campo Chave"));


Para recuperar o valor do campo chave, pode ser usado o seguinte código:

String value = ((KeyValue) jComboBox.getSelectedItem()).getValue();


Seria isso.



Cordialmente;




Claudir Pereira dos Santos


Matelândia, 13/02/2012