URL de conexão
A URL de conexão para se utilizar o Integrate no
modelo estendido
deve seguir o seguinte formato:
jdbc:integrate:id
onde
id
representa o identificador da integração desejada, definida
no arquivo
integration.xml.
No
modelo genérico
não se utiliza nenhuma URL de conexão, pois os serviços são
requisitados através dos métodos da interface
ControllerI.
Arquivos
de
configuração
Uma das principais tarefas executadas antes do uso do Integrate é o
devido preenchimento dos seus arquivos de configuração. Todos eles são
validados antes de serem processados, validação feita através de XML
Schema.
Os arquivos de configuração do sistema são:
- integrate-datasources.xml
- Principal arquivo de configuração do sistema. Nele são definidas
informações como as classes que implementam as interfaces Wrapper
e
Lookup
e as informações de conexão dos drivers
JDBC reais utilizados. Cada fonte de dados contém um identificador
único. Abaixo, segue um exemplo do referido arquivo para uma fonte de
dados relacional e a descrição das tags:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<datasource id="mysql" type="jdbc">
<wrapper>br.ufg.integrate.wrapper.WrapperJDBC</wrapper>
<lookup>br.ufg.integrate.lookup.LookupJDBC</lookup>
<typeConfFile>conf/MySQLTypeConf.xml</typeConfFile>
<typeConfClass>br.ufg.integrate.xml.type.TypeJDBCConf</typeConfClass>
<schema>department</schema>
<jdbc-driver>com.mysql.jdbc.Driver</jdbc-driver>
<url>jdbc:mysql://localhost/department</url>
<user>root</user>
<password>xxx</password>
</datasource>
</datasources>
- datasources
- Coleção de fontes de
dados registradas no Integrate.
- datasource
- Especifica
cada fonte de dados
registrada. O atributo "id" identifica univocamente cada fonte de
dados. O atributo "type" define o tipo da fonte de dados. Será
utilizado em
versões futuras.
- wrapper
- Informa a classe que implementa a interface Wrapper.
- lookup
- Informa a classe que implementa a interace Lookup.
- typeConfFile
- Informa o arquivo que contém o mapeamento dos tipos de dados
implementados na fonte de dados para os tipos de dados definidos na API
de JDBC (ver sobre arquivo
*TypeConf.xml).
Já são fornecidos pelo Integrate os arquivos para as seguintes fontes
de dados: MS-Access, DB2,
MS-Excel, Firebird, HSQLDB, Hypersonic, Informix, InstantDB, Mckoi,
MSQL, MySQL, Oracle, Paradox, PostgreSQL, Sybase, além de um para o driver JDBC para
CSV fornecido. A sua
devida definição deve ser feita
para outras fontes de dados ou novas versões
dos SGBD's relacionados.
- jdbc-driver
- Classe do driver
JDBC que efetivamente acessa a fonte de dados. O driver JDBC
implementado pelo Integrate age apenas como um proxy, repassando as
requisições para este driver
real.
- url
- URL de conexão definido pelo driver
JDBC da fonte de dados.
- user
- Usuário de acesso à fonte de dados através da conexão.
- password
- Senha
de acesso à fonte de dados através da conexão.
integrate-config.xml
- Arquivo onde se definem
configurações necessárias ao Controlador, definindo como o Integrate se
comporta internamente em algumas situações. Abaixo, segue um exemplo do
referido arquivo e a descrição das tags:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<dateFormat>dd-MM-yyyy</dateFormat>
<stopOnError>false</stopOnError>
<printErrors>false</printErrors>
<printResultSet>false</printResultSet>
<printXMLSchema>false</printXMLSchema>
<mediator-impl>example.MediatorImpl</mediator-impl>
</config>
- config
- Coleção de tags de configuração.
- dateFormat
- Formato da data que é impressa no log de erros (arquivo error.log). Deve-se
utilizar valores válidos para a classe java.text.SimpleDateFormat.
- stopOnError
- Define se o processamento do Integrate deve interromper ou prosseguir
se ocorrer alguma exceção. Em consultas a mais de uma fonte de dados,
se estiver setado para true
e alguma exceção for lançada, todo o processo é interrompido.
Se false,
o Integrate retorna a coleção de ResultSets obtidos e desconsidera a
fonte de dados que gerou a exceção.
- printErrors
- Define onde imprimir as exceções geradas durante o processamento de
requisições. Se setado como false,
imprime o erro apenas no arquivo error.log.
Se true,
além do log de erro imprime também na saída padrão onde o sistema está
sendo executado. Esta opção pode ser útil durante o desenvolvimento do
mediador.
- printResultSet
- Define se imprime os ResultSet obtidos na saída padrão (útil durante
o desenvolvimento do mediador) ou
somente no arquivo informado como parâmetro.
- printXMLSchema
- Define
se imprime os metadados dos esquemas obtidos através de um lookup na
saída padrão ou somente no arquivo informado como parâmetro.
- mediator-impl
- Define o nome da classe que implementa a interface Mediator,
necessária para requisições de serviços feitas pelo Controlador ao
mediador.
- integration.xml
- Arquivo onde são definidas as integrações desejadas.
Depende dos identificadores definidos no arquivo integrate-datasources.xml.
O identificador de cada integração é que será utilizada na URL de
conexão, e é através dela que o Integrate identificará a integração
desejada. Segue um exemplo do
referido arquivo e a descrição das tags:
<?xml version="1.0" encoding="UTF-8"?>
<integrations>
<integration id="all2hsqldb">
<source>hsqldb</source>
<target>hsqldb</target>
<target>csv</target>
</integration>
<integration id="csv2hsqldb">
<source>hsqldb</source>
<target>csv</target>
</integration>
<integration id="hsqldb2csv">
<source>csv</source>
<target>hsqldb</target>
</integration>
</integrations>
- integrations
- Coleção de integrações.
- integration
- Integração desejada, contendo as fontes de dados envolvidas e um
identificador. O atributo "id" identifica univocamente cada integração,
e é este "id" que deve ser usado na URL de conexão.
- source
- Deve ser informada a fonte de dados de origem (aquela para qual a
aplicação cliente foi desenvolvida originalmente). O valor utilizado
deve ser o de um identificador de fonte de dados definido no arquivo integrate-datasources.xml.
Somente uma tag
<source>
é permitida.
- target
- Devem ser informadas as fontes de dados de destino, as quais a
aplicação cliente deseja acessar de maneira integrada. O valor
utilizado
deve ser o de um identificador de fonte de dados definido no arquivo integrate-datasources.xml.
Mais de uma tag
<target>
é permitida. Para que a aplicação cliente acesse inclusive a fonte de
dados de origem, deve haver uma tag
<target> com o mesmo valor definido na tag <source>.
Para o
exemplo acima, supõem-se que as fontes de dados
hsqldb e
csv foram definidas
corretamente no arquivo
integrate-datasources.xml.
A integração identificada como
all2hsqldb,
como definida, indica
para o Integrate que a aplicação cliente, originalmente criada para
acessar a fonte de dados identificada como
hsqldb,
poderá
manipular os
dados armazenados nas duas fontes de dados. A outra integração (
csv2hsqldb) retorna
para a aplicação feita para acessar a fonte de dados
hsqldb os registros
da fonte de dados
csv.
O mesmo raciocínio serve para a integração identificada como
hsqldb2csv.
- *TypeConf.xml
- Arquivos que mapeiam os tipos de dados definidos na especificação
JDBC para os tipos de dados definidos pela respectiva fonte de dados.
Este mapeamento se faz necessário porque o Integrate trabalha
internamente com os tipos JDBC definidos na especificação, e na
prática, os SGBD's de mercado não implementam estes tipos
integralmente, criando seus próprios tipos. O Integrate disponibiliza
os arquivos para alguns tipos de fontes de dados (MS-Access, DB2,
MS-Excel, Firebird, HSQLDB, Hypersonic, Informix, InstantDB, Mckoi,
MSQL, MySQL, Oracle, Paradox, PostgreSQL, Sybase, além de um para o driver para CSV),
presentes na pasta conf
do Integrate.
Para outros SGBD's
ausentes nesta relação, deve-se providenciar sua criação e configuração.
Nestes arquivos também é definida a implementação da interface
DataSourceTypes que faz o mapeamento
inverso (dos tipos da fonte de dados para os tipos JDBC).
Como cada fonte de dados tem seus próprios tipos, não seria
possível definir um conjunto de tags
padronizadas (que permitisse validação), e por este motivo foi decidida
a implementação deste mapeamento através de uma classe. Quanto o tipo
da fonte de dados não tem correspondente entre os tipos JDBC,
utiliza-se "null" no mapeamento.
Quando o
Integrate converte dos tipos da fonte de dados para os tipos JDBC (ao
realizar as funções de lookup),
utiliza esta classe implementada, e quando converte dos tipos JDBC para
os
tipos da fonte de dados (em versões futuras, quando estiver manipulando
os dados em funções de atualização dos dados) utiliza estes arquivos. O
exemplo
abaixo
exibe o arquivo para o MySQL, seguido da descrição
das tags.
<?xml version="1.0" encoding="UTF-8"?>
<TypeJDBCConf>
<DataSourceTypesClass>
br.ufg.integrate.xml.type.jdbc.datasource.MySQLTypes
</DataSourceTypesClass>
<JDBC2SQLVendorType>
<BIGINT>REAL</BIGINT>
<BINARY>TEXT</BINARY>
<BIT>SMALLINT</BIT>
<BLOB>BLOB</BLOB>
<BOOLEAN>INTEGER</BOOLEAN>
<CHAR>CHAR</CHAR>
<CLOB>NONE</CLOB>
<DATE>DATE</DATE>
<DECIMAL>DECIMAL</DECIMAL>
<DOUBLE>DOUBLE PRECISION</DOUBLE>
<FLOAT>FLOAT</FLOAT>
<INTEGER>INTEGER</INTEGER>
<LONGVARBINARY>BLOB</LONGVARBINARY>
<LONGVARCHAR>VARCHAR</LONGVARCHAR>
<NUMERIC>NUMERIC</NUMERIC>
<REAL>REAL</REAL>
<SMALLINT>SMALLINT</SMALLINT>
<TIME>TIME</TIME>
<TIMESTAMP>TIMESTAMP</TIMESTAMP>
<TINYINT>SMALLINT</TINYINT>
<VARBINARY>TEXT</VARBINARY>
<VARCHAR>VARCHAR</VARCHAR>
</JDBC2SQLVendorType>
</TypeJDBCConf>
- TypeJDBCConf
- Tag raiz
do arquivo.
- DataSourceTypesClass
- Define a classe implementada que faz o mapeamento inverso, dos tipos
da fonte de dados para os tipos
da especificação JDBC.
- JDBC2SQLVendorType
- Coleção dos
tipos definidos na especificação JDBC, com uma tag para cada um
dos tipos, sendo o valor correspondendo ao tipo definido
respectivamente na fonte de dados. No exemplo acima, são exibidos os
relacionados aos tipos do MySQL. No caso de um tipo JDBC não ter
correspondente ao tipo JDBC, utiliza-se a expressão "NONE".
Arquivo de
esquema do driver
JDBC
para CSV
A utilização do
driver
JDBC disponibilizado pelo Integrate para acessar fontes de dados do
tipo CSV exige a configuração de um arquivo que siga um esquema XSD
pré-definido (
databasemetadata.xsd),
utilizado para validar os arquivos definidos pelo usuário do Integrate.
Neste arquivo faz-se uma relação da fonte de dados com o modelo
relacional, criando uma relação com tabelas e colunas, técnica
que pode ser reutilizada com outros formatos de fontes de
dados. Atualmente o
driver
reconhece apenas arquivos CSV cujos valores são separados por vírgula, mas versões futuras definirão através deste arquivo
de configurações o caracter desejado pelo usuário. Abaixo segue uma
parte de um arquivo utilizado nos testes de
integração, com a descrição das
tags:
<?xml version="1.0" encoding="UTF-8"?>
<tables xmlns="http://integrate.sourceforge.net"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://integrate.sourceforge.net/databasemetadata.xsd">
<table name="depto">
<column>
<index>1</index>
<name>CODDEPTO</name>
<javaType>java.lang.Integer</javaType>
<sqlType>java.sql.Types.INTEGER</sqlType>
<size></size>
<isPrimaryKey>true</isPrimaryKey>
<keySequence>1</keySequence>
<decimalDigits>0</decimalDigits>
<isNullable>false</isNullable>
</column>
(...)
</table>
</tables>
- tables
- Elemento raiz do documento, onde também constam os esquemas que
validam este arquivo.
- table
- Representa uma tabela, com o nome da mesma informado no atributo
"name", que deve ser único. Pode existir mais de um elemento deste, por
exemplo se utilizar este arquivo para outros formatos. O driver
CSV padroniza que uma tabela representa um único arquivo .csv,
e o
atributo "name" recebe o nome do arquivo (sem a extensão .csv).
- column
- Faz uma relação com uma coluna do arquivo CSV (cada valor separado
por vírgula). Pode existir mais de um deste elemento.
- index
- As colunas não precisam ser inseridas no arquivo em ordem. Este
elemento define a seqüência em que elas aparecem no arquivo CSV. Estes
valores não podem se repetir dentro de uma mesma tabela.
- name
- Representa o nome da coluna.
- javaType
- Este campo deve receber o tipo de dado Java que esta coluna
representa. Deve ser um tipo primitivo ou outros
objetos comuns de
Java (String, Integer, Date, etc).
- sqlType
- Este valor deve receber o valor que esta coluna representa através
dos tipos SQL definidos na classe java.sql.Types.
- size
- Opcional. Se o tipo da coluna for de caracteres, pode-se informar a
quantidade de caracteres existentes.
- isPrimaryKey
- Dedine se esta coluna identifica o registro, o que a caracteriza como
uma chave primária.
- keySequence
- No caso de mais de uma coluna identificar o registro, este valor
define a ordem em que devem ser consideradas. estes valores
não
podem se repetir em uma mesma tabela.
- decimalDigits
- Se o tipo de dados da coluna for numérico, informa-se quantos digitos
são das casas decimais. Se não for decimal, informa-se o valor zero.
- isNullable
- Informa se esta coluna aceita valores nulos.
Última atualização: 28/06/2009