Mensagens enviadas por: fantomas
Índice dos Fóruns » Perfil de fantomas » Mensagens enviadas por fantomas
Autor Mensagem
Oi Tituga,

Para instalar o dom4j http://www.dom4j.org faça o seguinte:

1) Fazer o download http://www.dom4j.org/download.html

2) Se você estiver utilizando a IDE eclipse.
a) Abra o projeto.
b) Abra a janela de propriedades do projeto.
c) Inclua o arquivo jar dom4j-1.6.1.jar no projeto utilizando o botão "Add External Jars...".

Esta é uma das opções, caso você tenha uma pasta lib dentro do seu projeto você poderia copiar o jar dom4j-1.6.1.jar para esta pasta e incluir-lo no projeto seguindo os passos acima utilizando o botão "Add jars..."

Leia o GUIDE e faça alguns testes pequenos antes de utilizar para valer.

[]'s
Oi Tituga,

Para instalar o dom4j http://www.dom4j.org faça o seguinte:

1) Fazer o download http://www.dom4j.org/download.html

2) Se você estiver utilizando a IDE eclipse.
a) Abra o projeto.
b) Abra a janela de propriedades do projeto.
c) Inclua o arquivo jar dom4j-1.6.1.jar no projeto utilizando o botão "Add External Jars...".

Esta é uma das opções, caso você tenha uma pasta lib dentro do seu projeto você poderia copiar o jar dom4j-1.6.1.jar para esta pasta e incluir-lo no projeto seguindo os passos acima utilizando o botão "Add jars..."

Leia o GUIDE e faça alguns teste pequenos antes de utilizar para valer.

[]'s
Oi Tituga,

Infelizmente ainda não ficou claro para mim sua dúvida .

Se entendi bem a sua situação acho que falta fazer o seguinte:

1) Obter a conexão com o banco de dados "ORIGEM".
2) Obter a conexão com o banco de dados "DESTINO".
3) Montar a instrução sql a partir do xml para obter os dados na origem.
4) Montar a instrução sql a partir do xml para atualizar os dados no destino.
5) Executar a instrução sql montada no passo 3 (ler dados na origem).
6) Executar a instrução sql montada no passo 4 (atualizar dados no destino).
7) Fechar as conexões com os bancos.
Encerrar a execução.

Obs. Os pontos citados acima é uma macro visão dos passos a seguir.

Você está se referindo a qual ponto dos citados acima?

Um java abraço
Oi Tituga,

Que bom que vc está conseguindo

Respondendo sua primeira pergunta, as tabelas origem e destino podem estar em BDs diferentes sim. Para obter os dados das tabelas origem você utiliza a CONEXÃO do bd A e para atualizar os dados nas tabelas destino você utiliza a CONEXÃO do bd B.

O que vc quiz dizer com isto, você poderia detalhar?

a ligação e uso das tabelas pra instruçoes sql sao feitas como?


acho que não entendi direito.


[]'s
E ai dicabeca,

Seguinte.....

Pelo que entendi o erro é o tal de "Unreachable code". No seu caso tem que dar este erro mesmo porque quando vc coloca o return torna-se impossível executar o break e quando vc coloca o break no lugar do return torna-se impossível executar o return.

Pra te ajudar acho que vc precisa dizer o que você tá querendo fazer dentro deste método. Tudo parece tranquilo mas subtamente você colocou um return/break dentro do while logo na primeira iteração, "meteu o pé no pau da barraca" sem dó.

Acho que vc estava indo bem na idéia mas está com problemas na finalização.


System.out.println("Abraços");
Oi totuga,

Então....eu nunca utilizei o xerces. Há um tempo que dei uma lida sobre este componente e se não me falha a memória ele não é muito simples de utilizar comparando com alguns outros que existem disponíveis. Me parece que ele é uma boa opção quando você precisa ler um xml gigantesco.

Eu conheço um pouquinho do componente DOM4J http://www.dom4j.org/download.html, acredito que seja bem mais fácil de utilizar e a documentação parece ser mais detalhada.

Mas...voltando ao seu problema é o seguinte:

a) Fiz alguns ajustes no xml que você enviou (APENAS COMO SUGESTÃO) e ficou como segue abaixo:

<?xml version="1.0" encoding="UTF-8"?>
<base-dados>
<tabela destino="customers" origem="cl">
<coluna destino="customers_id" origem="no" />
<coluna destino="customers_firstname" origem="nome" />
<coluna destino="customers_fax" origem="fax" />
<coluna destino="customers_telephone" origem="telefone" />
<coluna destino="customers_dob" origem="nascimento" />
<coluna destino="customers_email_adress" origem="email" />
<coluna destino="customers_password" origem="pass" />
</tabela>

<tabela destino="produtcs" origem="st">
<coluna destino="produtcs_id" origem="ststamp" />
<coluna destino="produtcs_model" origem="familia" />
<coluna destino="produtcs_quantity" origem="stock" />
<coluna destino="produtcs_price" origem="pv1" />
<coluna destino="manufacturers_id" origem="fornec" />
<coluna destino="produtcs_weigth" origem="peso" />
<coluna destino="produtcs_image" origem="imagem" />
</tabela>

<tabela destino="produtcs_description" origem="st">
<coluna destino="produtcs_id" origem="ststamp" />
<coluna destino="produtcs_description" origem="design" />
<coluna destino="language_id" origem="lang1" />
<coluna destino="produtcs_url" origem="url" />
</tabela>
</base-dados>

Achei que deste jeito o arquivo ficou menor e mais simplificado.

OBS. Só utilize esta idéia se REALMENTE você achar que vai resolver o seu problema.

b) Abaixo segue um código para te mostar como funciona o DOM4J, ele apenas obtem o conteúdo do arquivo e depois imprime.




Coloquei o nome da classe de Tituga.java

Para você testar este código basta você fazer o download do DOM4J e adicionar o jar dom4j-1.6.1.jar no projeto. Não esqueça de alterar o local do arquivo xml ->
Document doc = Tituga.readXmlDocument("c://portugal//atualizacoes.xml");


Espero que isto tudo lhe ajude em alguma coisa.

[]'s
Oi tituga,

No último xml que vc enviou tem uma tag com problemas, ela está na segunda linha debaixo para cima:

</destino


Está faltando o caracter ">", com este ajuste ficaria deste jeito -> </destino>

[]'s
Oi tituga,

Humm.........se a url vai ficar no código java então realmente não precisa ficar no xml.

Outras dúvidas sobre o que você enviou são as seguintes:

a) Como é que se determina a tabela destino?
.Por exemplo: Qual é o destino do conteúdo da tabela "st"? Pelo nome não dá porque os nomes das tabelas destino são bem diferentes (produtcs, produtcs_description, customers).

b) Notei que você colocou alguns pontos de interrogação na frente de algumas "colunas" você poderia comentar sobre isso?
<campo7>pass</campo7>????
<campo5>manufacturers_id</campo5>(???)
<campo2>customers_firstname+customers_lastname</campo2>(??)


c) Tem alguma tabela de origem cujo conteúdo será atualizado em mais de uma tabela destino?



[]'s
Oi tituga,

Para ajudar acho que vc deveria ler algum tutorial sobre construção de arquivos xml, tem vários na internet, este é um deles http://www.zvon.org/xxl/XMLTutorial/General_por/contents.html. O arquivo xml tem que estar bem formado (construido respeitando as regras), caso contrário, ficará difícil de ler o conteúdo deste arquivo.

Quando o arquivo estiver sem erros, você poderá utilizar alguns componentes free feitos em java para ajudar na leitura do xml. Este http://xstream.codehaus.org/ é um componente facil de utilizar, existem outros além deste.

Para montar o xml você (acho que deveria ter escrito tu, descupe meu português rsrssr) tem que ter o fluxo bem claro para atingir o objetivo. Ao ler o xml que você enviou fiquei com várias dúvidas:

a) Qual o nome dos dois banco de dados?
b) Qual a url para se obter a conexão com os bancos de dados?
c) Percebi que o nomes e a estruturas das tabelas de origem são diferentes das tabelas de destino, é assim mesmo?
d) Tem que ficar tudo em um único arquivo xml? (não que tenha que estar separados mas seria bom saber desta possibilidade)
c) Entendi que o código java irá ler o arquivo xml e irá montar um instrução sql a partir das colunas descritas nas tags origem e executar uma outra instrução sql montada a partir das colunas descritas nas tags destino, é isto mesmo?

Já ia me esquecendo uma das formas de saber se o seu arquivo xml está "bem formado" é abri-lo em no navegador. Se o navegador abrir e mostrar o conteúdo sem nenhuma mensagem de erro é porque está tudo bem. Existem alguns editores de xml free na internet.

Bom, acho que pra começar é isso.

System.out.println( "Um java abraço!" );
Aí eduveks,

Se fosse como vc disse seria bom, mas infelizmente essas coisas geralmente se transformam em lideres de projetos, gerentes, diretores e por ai vai...

Depois perguntam porque tem tanto software bagunçado por ai rsrsrsrsrrsrsrsrsrsrsrsrs.

Este está pronto para ser "GERENTÃO", perceba a astucia em lidar com os prazos.
É....também não entendi a questão sobre "coisas ultrapassadas".

Sobre o volume de acessos eu gostaria de sugerir uma avaliação no banco de dados para verificar se ele suporta essa quantidade de acessos e se é necessario ajustar algumas configurações por conta disso (nunca trabalhei com esse banco). Seria bom colocar uma boa máquina pra esse banco de dados também.

Fazer uma revisão no código java que utiliza as conexões cedidas pelo pool para ver se não esqueceram de fechar a conexão quando ocorre imprevistos, erros etc....se não fechar as conexões não tem banco que aguenta.

Fazer um avaliação nos fluxos para verificar a performance das requisições, com um volume de acesso destes acho que seria bom NÃO ter códigos gordos fazendo coisas bobas e desnecessárias.

Utilizar um JMeter da vida para testar o conjunto todo não esquecendo de colocar um DBA ou uma pessoa que entenda desse banco pra acompanhar os resultados (apresentados pelo banco dados).

Avaliar os indices das tabelas pra verificar se são adequados ou se não está faltando algum indice importante.

Resumindo.....FICA ESPERTO COM O BANCO DE DADOS (sqls, indices, chaves, triggers etc...) geralmente esse cara é um grande gargalo.

Bem....acho que pra começar é por ai....

Abraço a todos
Affe Maria!!!!!!! Bem acho q vc entendeu né?
Ops.... quiz dizer das tags ""
E ai maninho TegÊ,

Coloque o código sob o domínio das tags pra nos ajudar no entendimento.


Quebra essa pra gente


[]'s
 
Índice dos Fóruns » Perfil de fantomas » Mensagens enviadas por fantomas
Ir para:   
Powered by JForum 2.1.8 © JForum Team