Estrutura de Arquivos e Dados de entrada

Inicialmente, o formato utilizado para os dados de entrada é baseado em arquivos CSV, por ser um formato usualmente utilizado para fornecimento de dados e facilmente editado em diversas ferramentas existentes, como o Google Sheets ou o Microsoft Excel®.

Arquivos formato CSV

O arquivo de entradas das Libs possuem características comuns ao formato CSV. Esses arquivos seguem as seguintes premissas:

  • Linhas que começam com “&” são consideradas comentários e não são lidas pelo modelo.

  • Linhas em branco são desconsideradas

  • Cada linha representa um dado com vários campos associados.

  • Os campos são separados pelo caractere separador “;”.

  • Cada campo contêm um único dado.

  • O primeiro campo de cada linha é SEMPRE um identificador do dado que determina também quantos e quais dados vem nos campos subsequentes.

Arquivo Índice

O arquivo índice contêm uma lista de funcionalidades a serem consideradas através do ambiente LIBs, através das seguintes informações: nome da funcionalidade a ser ativdada; descrição da funcionalidade (a critério do usuário); nome do arquivo onde se encontram os dados relacionados à funcionalidade.

Em cada linha do arquivo os campos são os seguintes:

Tabela 1 Arquivo de índices

Campos

Obrigatorio

Nulável

Descrição

IDENTIFICADOR-FUNCIONALIDADE

Sim

Não

Identificador referente a funcionalidade que deve ser considerada

Descrição

Não

Não

Descrição da funcionalidade, do arquivo ou qualquer outra informação relevante para o usuário. Esse campo não é utilizado.

Arquivo com os dados para determinada funcionalidade

Sim

Não

Caminho para o arquivo com os dados. Pode ser fornecido de forma absoluta ou relativo ao diretório do arquivo de índices.

Tabela 2 Campos do arquivo de índices

Campos

Tipo

Unidade

Mínimo

Máximo

Padrão

IDENTIFICADOR-FUNCIONALIDADE

Texto

Descrição

Texto

Arquivo com os dados para determinada funcionalidade

Texto

Exemplo de utilização:

Listagem 1 Exemplo arquivo índices
&**************************************************
& Descrição colunas:
&**************************************************
& ID: Identificador referente à funcionalidade que deve ser considerada
& Descricao: Descrição com para o campo 2
& Caminho: Caminho para o arquivo com os dados.
&          Pode ser fornecido de forma absoluta ou relativo ao diretório do arquivo de índices.
&*****************;**********;****************************************
&ID               ;Descricao               ;Caminho
&-                ;-                       ;-
&SSSSSSSSSSSSSSSSS;SSSSSSSSSSSSSSSSSSSSSSSS;SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
EOLICA-CADASTRO   ;Modelagem Usinas Eolicas;dados_eolicas.csv
ID-FUNCIONALIDADE2;Descrição2              ;dados_funcionalidade_2.csv
ID-FUNCIONALIDADE3;Descrição3              ;/caminho/absoluto/dados_funcionalidade_3.csv

Observações:

  • Diversas funcionalidades podem conter seus dados em um único arquivo, bastando copiar o nome do arquivo para estas funcionalidades. De qualquer forma, recomenda-se manter os dados em arquivos separados para melhor organização e reaproveitamento de dados, e também para manter uma estrutura de colunas única para cada arquivo CSV.

Listagem 2 Exemplo arquivo índices com arquivo único
 &**************************************************
 & Descrição colunas:
 &**************************************************
 & ID: Identificador referente a funcionalidade que deve ser considerada
 & Descricao: Descrição com para o campo 2
 & Caminho: Caminho para o arquivo com os dados.
 &          Pode ser fornecido de forma absoluta ou relativo ao diretório do arquivo de índices.
 &*****************;**********;****************************************
 &ID               ;Descricao ;Caminho
 &-                ;-         ;-
 &SSSSSSSSSSSSSSSSS;SSSSSSSSSS;SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
 ID-FUNCIONALIDADE1;Descrição1;todos_os_dados.csv
 ID-FUNCIONALIDADE2;          ;todos_os_dados.csv

Arquivos de dados

Cada item no arquivo de índices aponta para um outro arquivo contendo os dados referentes à funcionalidade associada. Esses arquivos de dados terão as mesmas premissas descritas para o arquivo de índices, com exceção do número de colunas de dados, que pode variar de acordo com cada dado.

Dessa forma imagine as funcionalidades de identificador “FUNCIONALIDADE-UM” e uma outra funcionalidade com identificador “FUNCIONALIDADE-DOIS”. FUNCIONALIDADE-UM possui os dados “DADO-UM-FUNCIONALIDADE-UM” e “DADO-DOIS-FUNCIONALIDADE-UM”, e a FUNCIONALIDADE-DOIS posui os dados “DADO-UM-FUNCIONALIDADE-DOIS” e “DADO-DOIS-FUNCIONALIDADE-DOIS”.

Assim, para a situação acima um arquivo de índices possível seria:

Listagem 3 Arquivo índices para situação de exemplo
 &**************************************************
 & Descrição colunas:
 &**************************************************
 & ID: Identificador referente a funcionalidade que deve ser considerada
 & Descricao: Descrição com para o campo 2
 & Caminho: Caminho para o arquivo com os dados.
 &          Pode ser fornecido de forma absoluta ou relativo ao diretório do arquivo de índices.
 &******************;**********;****************************************
 &ID                ;Descricao ;Caminho
 &-                 ;-         ;-
 &SSSSSSSSSSSSSSSSSS;SSSSSSSSSS;SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
 FUNCIONALIDADE-UM  ;Descrição1;dados_funcionalidade_um.csv
 FUNCIONALIDADE-DOIS;Descrição2;dados_funcionalidade_dois.csv

Seus respectivos arquivos de dados seriam:

Listagem 4 Exemplo arquivo de dados “dados_funcionalidade_um.csv” para FUNCIONALIDADE-UM
 &**************************************************
 & Descrição colunas:
 &**************************************************
 & ID: Identificador referente a funcionalidade que deve ser considerada
 & Campo1: Descrição para o campo 1
 & Campo2: Descrição para o campo 2
 & Campo3: Descrição para o campo 3
 &**************************;**********;**************;*************************
 &ID                        ;Campo1    ;Campo2        ;Campo3
 &-                         ;-         ;-             ;-
 &SSSSSSSSSSSSSSSSSSSSSSSSSS;IIIIIIIIII;FFFFFFFFFFFFFF;SSSSSSSSSSSSSSSSSSSSSSSSS
 DADO-UM-FUNCIONALIDADE-UM  ;         1;           1.0;Nome_Exemplo1
 DADO-UM-FUNCIONALIDADE-UM  ;         2;           2.0;Nome_Exemplo2

 &**************************************************
 & Descrição colunas:
 &**************************************************
 & ID: Identificador referente a funcionalidade que deve ser considerada
 & OutroCampo1: Descrição para o outro campo 1
 & OutroCampo2: Descrição para o outro campo 2
 &**************************;***********;***********
 &ID                        ;OutroCampo1;OutroCampo2
 &-                         ;-          ;-
 &SSSSSSSSSSSSSSSSSSSSSSSSSS;IIIIIIIIIII;FFFFFFFFFFFF
 DADO-UM-FUNCIONALIDADE-DOIS;          3;         3.0
 DADO-UM-FUNCIONALIDADE-DOIS;          4;         4.0
Listagem 5 Exemplo arquivo de dados “dados_funcionalidade_dois.csv” para FUNCIONALIDADE-DOIS
 &**************************************************
 & Descrição colunas:
 &**************************************************
 & ID: Identificador referente a funcionalidade que deve ser considerada
 & Campo1: Descrição para o campo 1
 &**************************;**********
 &ID                        ;Campo1
 &-                         ;-
 &SSSSSSSSSSSSSSSSSSSSSSSSSS;IIIIIIIIII
 DADO-DOIS-FUNCIONALIDADE-UM;         1
 DADO-DOIS-FUNCIONALIDADE-UM;         2

 &**************************************************
 & Descrição colunas:
 &**************************************************
 & ID: Identificador referente a funcionalidade que deve ser considerada
 & OutroCampo1: Descrição para o outro campo 1
 & OutroCampo2: Descrição para o outro campo 2
 &**************************;***********;**************
 &ID                        ;OutroCampo1;OutroCampo2
 &-                         ;-          ;-
 &SSSSSSSSSSSSSSSSSSSSSSSSSS;IIIIIIIIIII;FFFFFFFFFFFFFF
 DADO-DOIS-FUNCIONALIDADE-DOIS;          3;         3.0
 DADO-DOIS-FUNCIONALIDADE-DOIS;          4;         4.0

Linhas descritivas e Réguas identificadoras dos campos

Nos exemplos acima, você deve ter percebido que há diversos registros iniciados com o caractere “&”. Como explicado anteriormente, estes registros não são lidos pelos modelos, portanto são opcionais. Ressaltamos, porém, que tais registros podem ser bastante úteis para descrever as informações que constam no arquivo e o conteúdo dos campos.

Em particular, uma “régua identificadora” do registro pode ser utilizada pelo usuário para indicar o tipo de dado a ser fornecido em cada campo, seguindo a convenção a seguir:

  • “S”: texto alfanumérico (string);

  • “I”: valor inteiro;

  • “F”: valor real (float)).

Ressalta-se que o alinhamento dos campos não é necessário, mas pode ser utilizado para os usuários que utilizam os arquivos texto para edição ou visualização. Por exemplo, se os registros mostrados anteriormente fossem escritos da forma a seguir, sem réguas e sem espaços entre os caracteres “;”:

Listagem 6 Exemplo arquivo de dados CSV sem espaços entre caracteres “;”
DADO-UM-FUNCIONALIDADE-UM;1;1.0;Nome_Exemplo1
DADO-UM-FUNCIONALIDADE-UM;2;2.0;Nome_Exemplo2
DADO-DOIS-FUNCIONALIDADE-DOIS;3;3.0
DADO-DOIS-FUNCIONALIDADE-DOIS;4;4.0

os modelos iriam ler as informações da mesma forma que o exemplo “arquivo de dados para FUNCIONALIDADE-DOIS”. Em particular, esta maneira de informar os dados (sem espaços entre os campos) é até mais adequada para abertura do arquivo em editores de planilhas, pois evitam que surjam caracteres em branco no conteúdo das células