Especificando Filtros de Objetos de Entrada e Saída nas Regras de Mapeamento do Submapa

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:

  1. 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.
  2. Na visualização Propriedades, clique na guia Filtro de Entrada ou Filtro de Saída.
  3. 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.
  4. 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.
  5. Clique em Arquivo > Salvar.
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.


Feedback