• No results found

Begrepsavklaring

Algumas alterações para migrar o dimensionamento de bombeio mecânico para plataforma de dispositivos móveis foram realizadas. As duas plataformas, tanto desktop quanto móvel, utilizam a linguagem Java. Dessa forma, as alterações realizadas na migração estão no nível de código, onde algumas funcionalidades da plataforma para desktop não são suportadas pela plataforma de dispositivos móveis. A plataforma Mobile Edition - ME do Java, não suporta a maioria das funcionalidades da plataforma Standard Edition - SE, utilizada no desenvolvimento da API. A versão do SE que mais se aproxima, em compatibilidade, com a plataforma ME é a 1.4, sendo essa versão muito limitada e não sendo completamente compatível com a versão para dispositivos móveis onde alguns métodos pertencentes à plataforma de desenvolvimento para aplicações desktop não são aceitos na plataforma de desenvolvimento móvel. Um exemplo dessa incompatibilidade é o uso de ArrayList, classe da plataforma SE desde a sua versão 1.4 não é aceita na plataforma ME, como solução foi feita uma procura de uma classe de iteração que fosse compatível nos dois ambientes, no caso o Vector. As alterações realizadas nos cálculos são descritas a seguir:

O Java ME, como descrito anteriormente, não suporta a classe ArrayList e a interface List, ambas do pacote java.util que tem como função tratar vetores de objetos. Desta forma, foi necessário substituir todas as classes do cálculo que continham essa classe e a interface no código por uma que fosse aceita pela plataforma de dispositivos móveis. A classe Java, que tem mesma função do ArrayList, e é compatível entre as duas plataformas é a Vector do pacote java.util. Assim, todas as classes do cálculo que continham List ou ArrayList foram substituídas por Vector. A Figura 28 mostra a classe do calculo ColunaHaste com as alterações realizadas, onde a Figura 28a mostra a classe antes de ser alterada e a Figura 28b mostra a classe depois da alteração.

/** Lista das seções de hastes. */

private List<SecaoHastes> listaSecoes; /** Lista das seções de hastes. */ private Vector listaSecoes

a b

Figura 28. a) mostra o código antes da alteração. E b) mostra como ficou após a alteração.

A Figura 28a também mostra outra incompatibilidade entre as duas plataformas, o Java ME não aceita o generics, funcionalidade criada na versão 1.5 do Java SE, que tem como objetivo definir um tipo específico para uma coleção de dados.

Outra alteração realizada foi a conversão dos tipos primitivos para Objetos. Desde a versão 1.5 do Java SE o tipo primitivo e o objeto de um determinado dado são semelhantes, porém para o Java ME essa semelhança não é possível, desta forma conversões para transformar de tipo primitivo para Objeto e vice-versa foram utilizadas para manter a integridade dos cálculos. A Figura 29 mostra a conversão da classe dos cálculos ValidacaoDominio que contem dados primitivos convertidos em objetos do tipo double.

public class ValidacaoDominio {

//TODO Adicionado Double.valueOf(valor em double) para retornar Double*/

//private static Configuracao conf = new Configuracao(); private static Double[] diametrosExternoColunaProducao =

{Double.valueOf(""+1.900), Double.valueOf(""+2.375), Double.valueOf(""+2.875), Double.valueOf(""+3.500), Double.valueOf(""+4.000), Double.valueOf(""+4.500)};

private static Double[] diametrosInternoColunaProducao =

{Double.valueOf(""+1.610), Double.valueOf(""+1.995), Double.valueOf(""+2.441), Double.valueOf(""+2.992), Double.valueOf(""+3.476), Double.valueOf(""+3.958)};

private static Double [] diametrosPistao = {Double.valueOf(""+1.06), Double.valueOf(""+1.25), Double.valueOf(""+1.50),

Double.valueOf(""+1.75),Double.valueOf(""+2.00), Double.valueOf(""+2.25), Double.valueOf(""+2.50), Double.valueOf(""+2.75), Double.valueOf(""+3.25), Double.valueOf(""+3.75), Double.valueOf(""+4.75)};

private static Double [] diametrosBomba = {Double.valueOf(""+1.06), Double.valueOf(""+1.25), Double.valueOf(""+1.50), Double.valueOf(""+1.75), Double.valueOf(""+2.00), Double.valueOf(""+2.25), Double.valueOf(""+2.50), Double.valueOf(""+2.75), Double.valueOf(""+3.25) ,Double.valueOf(""+3.75), Double.valueOf(""+4.75)};

private static Boolean tabelado;

Figura 29. Conversão da classe Validação Domínio.

O método Double.valueOf que recebe como parâmetro um valor String correspondente à um valor double apresenta como retorno um valor de Objeto do tipo Double. O método inverso, que converte um valor de Objeto em um valor primitivo double é o Double.parseDouble que recebe como parâmetro um valor String referente ao valor do Objeto Double. A Figura 30 mostra a classe TensaoRupturaGrauAco que apresenta esse tipo de conversão.

Figura 30. Conversão de tipos primitivos

O Java ME não suporta anotações, utilizadas na versão 1.5 do Java SE. No código dos cálculos essas anotações são utilizadas nas exceções, dessa forma não foi preciso fazer substituições por outras classes para migrar os cálculos para a plataforma ME do Java. A alteração necessária foi a retirada dessas anotações. A Figura 31 mostra a classe CursoCpmException mostrando esse tipo de alteração.

Figura 31. Retirando anotações

O sistema desenvolvido para plataforma de desktop apresenta propriedades que contem todas as mensagens de erro do sistema, desta forma basta referenciar a propriedade correspondente no tratamento dos erros. Porém a utilização deste recurso para a plataforma móvel não é possível, desta forma a solução encontrada foi criar classes com atributos estáticos correspondendo às mensagens de erro do sistema. A Figura 32 mostra a classe ValidacaoDominio, que tem como função mostrar alguma mensagem ao usuário com as alterações realizadas.

Figura 32. Classe ValidacaoDominio com a retirada de consulta às propriedades

As linhas sublinhadas da Figura 32 indicam a retirada das consultas ao documento de propriedades que contem a lista com as mensagens de erro.

Tendo como objetivo resumir todo conteúdo da subseção 4.1.2.1, a Tabela 4 descreve resumidamente quais as incompatibilidades e soluções realizadas na conversão da API cálculos para a plataforma para dispositivos móveis.

Tabela 4. Resumo das incompatibilidades entre as plataformas.

Incompatibilidade Alteração Realizada

A plataforma para dispositivos móveis não suporta as classes ArrayList e List do pacote Java.util da edição Standard

Foi realizada uma alteração que consistia em substituir em todo código pela Classe Vector do pacote Java.util da edição Mobile

O JavaME não suporta generics da versão 1.5 do JavaSE

Retirou-se todos os generics do código

O JavaSE, desde sua versão 1.5, possui o Autoboxing e o unboxing que apresentam como função a conversão em tempo de compilação de tipos primitivos em objetos e objetos em tipos primitivos respectivamente. A JavaME porém não suporta essa característica da versão 1.5 do JavaSE

Foi realizada conversões entre tipos primitivos em objetos e vice-versa.

O JavaME não suporta Anotações da JavaSE

Foi retirado todas as anotações no código da API

O JavaME não possui acesso a Propriedades (Properties). Essas propriedades continham as mensagens de erro do sistema.

Criada uma classe que contem todas as mensagens de erro.

A subseção 4.1.2.1 teve como principal objetivo mostrar como as conversões da API de cálculos foram realizadas. Esta API sofreu diversas alterações no código para que fosse possível ser adaptada para a plataforma móvel. Não é objetivo desta seção mostrar todas as classes que sofreram alterações e sim mostrar quais as principais incompatibilidades encontradas na conversão desta API.