• Nenhum resultado encontrado

Capítulo 4 Propostas de Solução de Monitorização Remota

5.1 Histórico de Ciclos

5.1.2 Parsing do Ficheiro CSV em Android

De forma a desenvolver código reutilizável e transversal, foram criados métodos e objetos para o processamento da informação proveniente do ficheiro CSV, independente- mente de como e onde foi obtido o ficheiro.

Inicialmente foram criados objetos que irão conter as variáveis para cada dado do ciclo e os métodos para o seu preenchimento e posterior acesso. De seguida foi criado o método (getParsedData) para processar o ficheiro e guardar os dados, cada um na sua respetiva variável dentro do objeto (CycleSample) que represente o ciclo. O método está dividido em três algoritmos responsáveis pela leitura (sequencial de cada linha), processamento e armazenamento: dos dados do cabeçalho, das fases do ciclo e dos dados para o gráfico. Na Figura 5.5 está representada a visão geral do parsing do ficheiro CSV com os dados do ciclo.

5.1. Histórico de Ciclos

Figura 5.5: Processo resumido do parsing do ficheiro CSV em Android.

Algoritmo de Parsing dos Dados do Cabeçalho

Devido à estrutura e tamanho fixo do cabeçalho, a localização dos dados é bem conhecida, pelo que o algoritmo para o parsing do cabeçalho consiste na leitura, trans- formação dos dados para unidades corretas (caso necessário) e posterior armazenamento dos dados de cada linha.

Algoritmo de Parsing dos Dados das Fases do Ciclo

Para processamento dos dados das fases ao contrário do cabeçalho e dos dados para o gráfico é necessário construir um mecanismo para o correto processamento, principalmente porque a quantidade dos dados para cada fase do ciclo é variável, o que por sua vez também traz um desafio para a sua correta representação a seguir.

Podem-se considerar duas estratégias diferentes para superar esta dificuldade, uma primeira mais direta que consistiria na construção de tabelas, prevendo todas as situações possíveis para a quantidade de dados e de estrutura do ciclo, e uma segunda que consiste na criação de um algoritmo independente capaz de fazer oparsing desta parte, de forma a conseguir reconhecer os identificadores, os dados e a quantidade de dados pertencente a cada fase. A primeira estratégia torna-se inviável com projetos de maior dimensão, devido ao tempo e esforço para a previsão de todos os casos possíveis ser elevado e à elevada probabilidade de não contemplar algum caso. Para além disto, tornaria o código inflexível e frágil a alterações e/ou situações ocasionais (como por exemplo, ocorrência de umbug ou falha). Como tal, optou-se por projetar e construir um algoritmo minimamente sofisticado, future-proof e que faça o parsing dos dados de forma esquemática, capaz de analisar e guardar eventuais imprevistos, sem que seja provocado um erro (exceção).

Para além dos identificadores e dos dados das fases, acrescentou-se mais uma variável durante oparsing, para um efeito explicativo designada de “Quantidade”, que representará a quantidade de linhas de dados para cada fase, estando inicialmente definida a zero.

Esta variável é incrementada após a leitura duma linha com dados da fase e o seu valor é guardado em conjunto com os restantes dados durante o parsing dos dados do ficheiro CSV.

A análise dos dados das fases é iniciada logo após o parsing do cabeçalho, com a leitura da linha seguinte do ficheiro CSV. De acordo com a Figura 5.4(b), as linhas podem conter unicamente uma ou três colunas com dados, separados por um ponto e vírgula. Assim:

• Caso a linha contenha somente uma coluna, o conteúdo presente na linha corres- ponde ao identificador da fase. Nesta situação, é guardado o valor da variável “Quantidade” em conjunto com o identificador da fase, à exceção da primeira ite- ração, onde a variável “Quantidade” ainda não sofreu alterações, sendo somente guardado o identificador, prosseguindo com a leitura da linha seguinte;

• Caso contenha três colunas, correspondem aos dados da fase precedente, pela res- petiva ordem: a hora, a pressão e a temperatura. Nesta situação, é incrementada a variável “Quantidade” e guardados os dados presentes na linha.

Os identificadores das fases, as quantidades e todos os dados da fase são guardados nas listas separadas. Como a quantidade de dados para cada fase não é igual e dependendo do ciclo, algumas fases possuem a quantidade de dados variável (como o caso da fase de esterilização), a lista com quantidades serve de ponte para interligar a lista com as fases às listas com os dados correspondentes (Figura 5.6). A leitura e análise da parte das fases do ciclo continua até não encontrar o identificador de fim do ciclo (FI) ou o identificador de erro (ER). Na Figura 5.7 está representado o fluxograma do funcionamento do algoritmo deparsing dos dados das fases do ciclo.

5.1. Histórico de Ciclos

Figura 5.7: Fluxograma da análise da parte das fases do ciclo do ficheiro CSV.

Algoritmo de Parsing dos Dados para o Gráfico

A parte dos dados para o gráfico está estruturada de forma uniforme, começando logo após os dados das fases do ciclo e finalizando com uma linha em branco. A partir desta estrutura, o algoritmo deparsing consiste num loop que termina ao encontrar a linha em branco, sendo lida uma linha de cada vez, processando os dados de forma a guardá- los na unidade correta e nas listas correspondentes. Por exemplo uma linha de dados (0252;1009;0077) é guardada como 25.2 (corresponde aos ºC), 1.009 e 0.077 (correspondem a Bar). Para posteriormente estes dados poderem ser representados em forma de gráfico, é criada mais uma lista com a hora em que os dados foram amostrados. Esta lista é preenchida em conjunto com os restantes dados, em que se recorre à hora do início do ciclo para a primeira amostra e soma-se sucessivamente 4 segundos para as próximas.