Os
atributos nos objetos de entrada e saída podem ser coletas de outros objetos. Ao especificar uma regra de mapeamento de submapa em uma declaração de mapeamento, você poderá criar
filtros de entrada e saída que são aplicados nos elementos na coleta
do atributo. Ao executar a transformação, o filtro é aplicado em
cada elemento na coleta. Se o filtro retornar
true para
o elemento, o elemento será transformado.
Antes de Iniciar
É necessário ter um modelo de mapeamento aberto. Um modelo de mapeamento tem .mapping como extensão de nome de arquivo. O modelo de mapeamento deve conter pelo menos uma declaração
de mapeamento e
uma regra de mapeamento de submapa deve estar definida na declaração de mapeamento.
Por Que e Quando Desempenhar Esta Tarefa
Para criar um filtro de objeto de entrada ou saída em uma regra de mapeamento
de submapa:
- Na área do editor, clique com o botão direito do mouse na regra de mapeamento de submapa e, em seguida, clique em Mostrar
em Propriedades.
- Na visualização Propriedades, clique na guia Filtro de
Entrada ou Filtro de Saída.
- Selecione a caixa de opção Elementos de Entrada do Filtro ou Elementos de
Saída do Filtro.
Nota: Se você estiver criando
um filtro de objeto de entrada, quando a caixa de opção estiver limpa, a regra de mapeamento de submapa
será aplicada a todos os elementos da lista quando a transformação for executada. Se
você estiver criando um filtro de objeto de saída, quando a caixa de opção estiver limpa, o
primeiro objeto da coleta de objetos de saída candidatos será referenciado no
atributo de saída.
- Para especificar o código do filtro, conclua uma das seguintes
etapas:
- Clique em Seqüencial e, em seguida, digite o código Java™
na área de texto abaixo da opção Código e, em seguida, clique em Aplicar. O código especificado deve retornar
um valor booleano. É possível especificar somente o corpo do método; a estrutura de criação de transformações define a assinatura de método.
Dica: Para consultar uma lista de nomes de
variáveis válidos, na área de texto abaixo do botão Seqüencial,
pressione Ctrl+Espaço.
Nota: Para
filtros de entrada, você pode especificar uma variável chamada <name>_src, que fornece
o valor atual da coleta no atributo.
Para filtros de saída,
<name>_tgt, que fornece o valor atual da coleta no atributo.
- Clique em Externo para especificar a classe Java
que contém o código a ser aplicado como filtro para a regra de mapeamento de submapa. A classe Java especificada deve estender
a classe org.eclipse.emf.query.conditions.Condition.
O método isSatisfied(Object object) também deve ser implementado,
em que object é configurado com o elemento atual na coleta;
esse método retorna um valor booleano. Quando
você clicar em Procurar, uma caixa de diálogo utilizará a seleção
de uma classe válida.
Dica: Para criar
uma classe que implemente um filtro, clique em Nova e, em seguida, preencha
os campos na janela Nova Classe Java.
- Clique em .
Exemplo
Por exemplo, se o atributo de entrada de uma regra de mapeamento de submapa for
uma lista de EClassifiers, você poderá criar um filtro de objeto de entrada que avalie
a função isAbstract de cada elemento. O parâmetro para a função isAbstract
é uma instância de um elemento na lista.
Cada EClassifier que for
abstrato será incluído em um conjunto de resultados. Quando a transformação for executada, a regra de
mapeamento de submapa será aplicada a cada EClassifier no conjunto de resultados.