• Nenhum resultado encontrado

Method: Esta classe representa um método de classe a ser gerado pelo sistema, sendo atribuição da mesma gerenciar as propriedades do método a ser gerado como seu nome, escopo, tipo de retorno, entre outros;

ITemplateOwner: Interface que representa a estrutura básica de uma classe que utiliza arquivos templates para determinar como será o formato do código-fonte gerado;

TemplateScope: Define o escopo de um template. Através desta classe é possível definir que um arquivo template será utilizado para gerar todas as classes do sistema, ou apenas uma única classe;

Template: Classe que representa um arquivo template a ser utilizado durante o processo de geração de código, sendo sua responsabilidade gerenciar o arquivo template representado;

Generator: Esta classe é responsável pelo processo de geração de código-fonte, onde todas as configurações realizadas pelo usuário são cruzadas com os arquivos templates selecionados, gerando os arquivos que contém o código-fonte das classes configuradas;

DataTypeMapping: Classe responsável pelos mapeamentos entre tipos de um banco de dados e tipos de uma linguagem de programação, em específico; e

DataTypeMappingElement: Classe que representa um mapeamento entre um tipo de banco de dados e um tipo da linguagem de programação.

Ressalta-se que no diagrama de classes da ferramenta proposta (Figura 42), não são apresentados os getters e setters utilizados para encapsular os atributos das classes, por motivos de simplicidade na visualização do diagrama. No entanto, todos os atributos das classes apresentadas possuem getters e setters para encapsulá-los.

ajudando o XML a se tornar o formato padrão para transmissão de dados entre diferentes aplicativos e computadores (BINSTOCK et al, 2002, tradução nossa).

Para que a transmissão de dados em formato XML entre diferentes aplicativos e computadores seja realizada, é necessário conhecer a estrutura do documento. Isto é possível através da utilização de um XML Schema, que permite descrever a estrutura de documentos XML.

Esta descrição possibilita definir quais os elementos e atributos que podem ou devem estar presentes em um documento, especificar o número mínimo e máximo de ocorrências de um determinado tipo de elemento, descrever um conjunto de valores permitidos para um atributo ou elemento, definir a ordem de disposição dos elementos, entre outras características de um documento XML (BINSTOCK et al, 2002, tradução nossa; VLIST, 2002, tradução nossa).

Com base em tais informações, e sabendo que todas as configurações realizadas pelo usuário na ferramenta como, por exemplo, classes, métodos, atributos, bem como a estrutura das tabelas de banco de dados relacionado às classes configuradas pelo usuário, serão salvos em formato XML, torna-se relevante elaborar o XML Schema que documente e valide a estrutura e o conteúdo do documento XML utilizado pela ferramenta para persistir informações.

Com o intuito de permitir um fácil entendimento, o XML Schema elaborado é apresentado de maneira gráfica, utilizando a notação da ferramenta Liquid XML Studio. Detalhes sobre cada estereótipo que compõem a notação utilizada pela ferramenta podem ser obtidos em Liquid (2007).

Além da representação gráfica do XML Schema, o Apêndice B apresenta o código-fonte do XML Schema mencionado.

A Figura 43 apresenta a visão geral do XML Schema utilizado pela ferramenta proposta para persistir informações sobre as configurações realizadas.

Figura 43. Visão geral do XML Schema da ferramenta proposta

Na Figura 43, onde é apresentada a visão geral do XML Schema proposto, é possível verificar, de maneira geral, quais os dados que serão salvos no documento XML. O elemento Project é o nodo raiz do documento XML, contendo informações como o nome do projeto, mapeamentos entre tipos de bancos de dados e tipos da linguagem de programação e a linguagem de programação definida pelo usuário para a geração do código-fonte. O elemento Database armazena as informações básicas do banco de dados, como nome e owner, dados relacionados às configurações de acesso ao banco de dados e a estrutura das tabelas do banco de dados selecionado.

O elemento Classes possui informações sobre as classes configuradas pelo usuário, como por exemplo, seus atributos e métodos. Já o elemento Templates possui informações sobre os arquivos templates definidos para serem utilizados durante o processo de geração de código-fonte. O elemento Generator possui informações relacionadas às configurações do gerador de código-fonte, como o diretório onde os arquivos serão gerados e a extensão padrão para tais arquivos.

Além da visão geral do XML Schema, é conveniente mostrar os detalhes internos dos elementos que são constituídos a partir de tipos complexos (complex types). Portanto, a Figura 44, Figura 45 e Figura 46 apresentam, respectivamente, os detalhes dos elementos ConfigurationSettings, Table e Field, elemento que pertence a estrutura do elemento Table.

Figura 44. Estrutura do elemento ConfigurationSettings

Figura 45. Estrutura do elemento Table

Figura 46. Estrutura do elemento Field

O elemento ConfigurationSettings (Figura 44) descreve as configurações utilizadas para acesso a um dos bancos de dados suportados pela aplicação. O elemento Table (Figura 45) define as informações referentes às tabelas do banco de dados como, por exemplo, o nome da tabela, bem como informações sobre a estrutura dos campos que compõe tal tabela, descritas no elemento Field (Figura 46).

Além do detalhamento dos elementos ConfigurationSettings e Table, faz-se necessário descrever a estrutura interna do elemento Class, bem como a estrutura dos demais elementos que constituem o mesmo. A estrutura de tais elementos pode ser observada na Figura 47, Figura 48, Figura 49 e Figura 50.

Figura 47. Estrutura do elemento Class

Figura 48. Estrutura do elemento Attribute

Figura 49. Estrutura do elemento UnderlyingDBObjects

Figura 50. Estrutura do elemento Method

A Figura 47 apresenta os detalhes do elemento Class, que define informações sobre uma classe configurada pelo usuário, como o seu nome, sua classe base, entre outros. O nome das tabelas do banco de dados que originaram a classe em questão é definido no elemento Table. Informações sobre os atributos de classe são definidos no elemento Attribute (Figura 48), e os nomes dos campos e respectivas tabelas, mapeados pelo atributo de classe, são descritos no elemento UnderlyingDBObjetcs (Figura 49). A estrutura do elemento Method (Figura 50) descreve as informações sobre um método de classe. O atributo Type deste elemento define se o método refere- se a um comando de atualização, exclusão, inserção ou seleção de dados, enquanto que o atributo Scope determina a visibilidade do método. Já o elemento Parameter descreve um parâmetro passado para o método.

Por fim, o detalhamento da estrutura interna do elemento Template pode ser observado na Figura 51.

Figura 51. Estrutura do elemento Template

A Figura 51 apresenta os detalhes do elemeto Template, que define informações sobre os arquivos templates a serem utilizados durante a geração de código-fonte. O atributo Scope determina se o arquivo template será utilizado a nível de projeto ou a nível de classe. O elemento Owner é responsável por definir o nome da classe ou do projeto associado ao arquivo template. O elemento FileName define onde o arquivo template está fisicamente armazenado. Já os elementos Suffix e FileExtension são utilizados para armazenar características específicas do arquivo de código-fonte gerado a partir do template, como a extensão do arquivo e um sufixo de identificação.