Testando a função
Agora vamos testar a função que desenvolvemos nesse tutorial. Para isso foi criado a variável "lista" que recebe uma lista com 3 valores inteiros, essa variável é passada por parâmetro para o bloco criado (obterMenorValorLista), que retornará o menor valor da lista e exibirá em uma notificação na tela. Criamos um botão na tela para chamar a função de bloco mostrarMenorValor (Figura 6) e o resultado será exibido no navegador (Figura 6.1).
Image Added
Figura 6 - Bloco que exibe o menor valor da lista
Image Added
Figura 6.1 - Menor valor da lista exibido na tela
Anotações
As Anotações (annotations) têm o objetivo de possibilitar a declaração de metadados ao longo do código que podem ser posteriormente interpretadas por um compilador ou pré-compilador que irá realizar alguma tarefa predefinida. As anotações evitam, em muitos casos, a criação de arquivos XML de configuração que tornam tão difícil a compreensão de alguns sistemas. Anotações podem ser utilizadas, por exemplo, para indicar que um método não deve mais ser usado (@Deprecated
) ou que ele foi sobrescrito (@Override
).
Nos exemplos citados, é importante que fique claro que a presença de anotações não influi no comportamento da classe ou de seus objetos, mas sim adicionam funcionalidades anexas a uma determinada classe.
Observações:
- metadados são informações (dados) que falam sobre a classe mas não fazem parte da classe em si.
- Anotações são representadas com o símbolo prefixo @ (arroba).
As anotações na plataforma Cronapp podem ser aplicadas nos seguintes casos: declaração de métodos, classes, interfaces, parâmetros e enumerações.
Existem duas anotações principais que podem ser referenciadas e utilizadas em classes do tipo Java, são elas:
- @CronapiMetaData
- @ParamMetaData
A anotação @CronapiMetaData contém os seguintes elementos:
Tipo | Elemento | Valor |
---|
String | type | Se o valor definido for "function " a função criada ficara visível no editor de blockly, se "internal " a função ficará disponível apenas de forma interna via código. |
String | platform | Se o valor definido for "M " significa que a função criada será exibida apenas no editor de bloclky "Mobile", se o valor for "W " apenas do blockly "Web". |
String | categoryName | Permite que o usuário final determine uma nova categoria. |
String[] | categoryTags | Palavra(s)-chave utilizada(s) para auxiliar a busca de categorias de funções dentro do bloco de programação. Esse elemento pode receber mais de um valor. |
String | name | Nome da função a ser apresentada no bloco de programação. Permite chave de internacionalização. |
String[] | nameTags | Palavra(s)-chave utilizada(s) para auxiliar a busca de funções dentro do bloco de programação. Esse elemento pode receber mais de um valor. |
String | description | Descrição da função. Permite chave de internacionalização. |
String[] | params | Descrição sobre o(s) parâmetro(s) de entrada da função. Esse elemento pode receber mais de um valor. Permite chave de internacionalização. |
boolean | displayInline | Permite que os parâmetros da função no bloco de programação sejam passados, em apenas uma linha, ao invés de serem passados de forma individual, uma linha por parâmetro no bloco da função. |
boolean | arbitraryParams | Define se a função poderá receber parâmetros além dos definidos durante sua criação no momento da utilização desta no bloco. |
ObjectType[] | paramsType | Tipo do(s) parâmetro(s) de entrada da função. Esse elemento pode receber mais de um valor. (O tipo do parâmetro é baseado no enum ObjectType) |
ObjectType | returnType | Tipo de retorno da função. (O tipo de retorno é baseado no enum ObjectType) |
CategoryType | category | Tipo de categoria a qual a função faz parte. (O tipo de categoria é baseado no enum CategoryType) |
Nota |
---|
|
Os elementos ObjectType e CategoryType são do tipo enumeradores (enum) definidos respectivamente a seguir: Bloco de código |
---|
language | java |
---|
theme | Eclipse |
---|
firstline | 1 |
---|
title | enum |
---|
linenumbers | true |
---|
| public enum ObjectType {
BOOLEAN, LONG, DOUBLE, DATETIME, STRING, LIST, MAP, DATASET, JSON, XML, OBJECT, UNKNOWN, BLOCK, STATEMENT, STATEMENTSENDER, VOID
}
public enum CategoryType {
IO, DATABASE, FRONTEND, SCREEN, CONVERSION, DATETIME, XML, EMAIL, FTP, JSON, LOGIC, TEXT, LIST, MAP, COLOR, LOOP, MATH, GRID, PRINT, OTHER, OBJECT, SEMAPHORE, UTIL, JSONORMAP, TREE
} |
|
Image Added
Figura 7 - Exemplo do código de uma função utilizando alguns elementos da anotação @CronapiMetaData
A anotação @ParamMetaData contém os seguintes elementos:
TIpo | Elemento | Valor |
---|
ObjectType | type | Tipo do parâmetro. (O tipo do parâmetro é baseado no enum ObjectType) |
String | defaultValue | Valor padrão adicionado a um parâmetro de entrada de uma função. |
String | description | Descrição do parâmetro. Permite chave de internacionalização. |
String[] | keys | Opções de valores a serem adicionados num parâmetro de entrada do tipo seletor vertical (dropdown). Esse elemento pode receber mais de um valor. |
String[] | values | Valores a serem passados para função de acordo com a opção selecionada (keys) no seletor vertical (dropdown) do parâmetro da função. Esse elemento pode receber mais de um valor. Permite chave de internacionalização. |
Âncora |
---|
| internacionalizacao |
---|
| internacionalizacao |
---|
|
Internacionalização
As chaves de internacionalização ficam contidas em um arquivo de extensão "*.properties
". Arquivos desse tipo podem ser utilizados para armazenar parâmetros do tipo string no formato (chave=valor). Para utilização das chaves de internacionalização durante a criação de componentes de software na IDE Cronapp coloca-se a chave desejada entre chaves duplas, como por exemplo: description = "{{functionToQueryInDatasource}}".
Diferentemente das aplicações desenvolvidas no Cronapp que suportam todos os idiomas, o conteúdo desenvolvido para ser utilizado dentro do Cronapp, como bloco de programação ou componente visual, só poderão ser internacionalizados nos idiomas português e inglês.
Nota |
---|
|
As chaves de internacionalização não são fixas e podem ser alteradas ou adicionadas quando necessário. Para saber mais, acesse: Internacionalização. |
Para conseguir internacionalizar os blocos de programação, uma pasta com o nome "i18n
" (destaque 2 da figura 8) deve ser criada no mesmo diretório (destaque 1) onde está o arquivo Java que vão gerar os blocos de programação (destaque 8). A pasta "i18n
" deve conter os arquivos de internacionalização: "Messages_en_US.properties" e "Messages_pt_BR.properties". Ao abrir os arquivos de internacionalização JSON, a ferramenta Chave de internacionalização é exibida, permitindo adicionar as novas chaves e traduzi-las automaticamente.
Image Added
Figura 8 - Local do diretório i18n em relação ao arquivo Java e ferramenta que facilita a internacionalização