Sistema Borboleta Desktop - Camada lógica
Esta camada é responsável pela comunicação do sistema com a base de dados e os dispositivos móveis. Pode ser dividida em 2 módulos:
  • comunicação com a base de dados;

  • importação e exportação de dados;


Cada módulo foi desenvolvido utilizando o princípio de Test Driven Development da Programação Extrema, [XP]. Este princípio consiste em escrever testes unitários que verifiquem a corretude de uma funcionalidade do sistema. Para o desenvolvimento dos testes, utilizamos o JUnit

Comunicação com a base de dados
O módulo de comunicação com a base de dados foi desenvolvido utilizando o JDBC. A função deste módulo é inserir e recuperar dados dos pacientes e medicamentos através de consultas SQL.

Este módulo consiste em classes java que são capazes de abrir e fechar conexões com o gerenciador de dados, extrair informações das tabelas (quantas são, quais são os campos, de que tipo, etc), recuperar e inserir dados, além das classes Java que representam os objetos do sistema. Abaixo, temos os diagrams UML que representam o módulo:

Este diagrama representa os objetos do sistema. Podemos observar que todos os objetos do sistema implementam a interface BorboletaObject. Assim, todos os objetos do sistema possuem um método toXML() que é o responsável pela representação XML do objeto. As tabelas da base de dados também são objetos do sistema, pois suas informações(número de campos, tipos de campos e etc) são importantes para a configuração do sistema Borboleta. É através das informações das tabelas que a interface gráfica é construída.


O diagrama abaixo ilustra as classes java responsáveis pela comunicação com o gerenciador de dados. A classe DataBaseSQLProperties é responsável por abrir e fechar conexões com o gerenciador utilizando a API JDBC. Já a classe DataBaseSQL insere e recupera dados da base. Esta classe segue o padrão Singleton [GoF95], isto nos garante que haverá apenas uma instância desta classe sendo utilizada por todo o sistema.


Importação e Exportação de dados
A importação e exportação de dados para os dispositivos móveis é feita através de arquivos XML e conexões via HTTP. O fluxo seguidos pelos dados é descrito pelo diagrama abaixo:


Exportação de dados
Através da interface desktop do sistema Borboleta, o usuário escolhe os dados que deseja exportar. Após a escolha, a opção exportar é ativada e os dados escolhidos são escritos em seu formato XML. Este arquivo estará em um servidor HTTP para que o download à partir dos dispositivos móveis seja possível.

Importação de dados
Para a importação dos dados, a ordem dos procedimentos se invertem. À partir da interface desktop do sistema, o usuário escolhe o arquivo XML que contém os dados a serem importados. Após a localização do arquivo, o sistema ativa o leitor de arquivos XML, transforma-o em objetos do sistema e grava no banco de dados através da classe DataBaseSQL.

Pendências
O mecanismo de importação, assim como o de exportação, só está disponível para os objetos paciente e tabela. Mas devido a flexiblidade adotada no desenvolvimento deste módulo, é fácil extendê-lo para realizar estas operações para qualquer objeto do sistema.