Para cada declaração de mapeamento no modelo de mapeamento, a estrutura de criação de transformação gera um arquivo de origem Java com o nome nTransform.java, em que n representa o nome da declaração de mapeamento. Coletivamente, esses arquivos Java formam o código de transformação. Além de gerar o código de implementação para a transformação, a estrutura de criação de transformação também gera o código para registrar a transformação no Serviço de Transformação. Depois de criar uma declaração de mapeamento, você pode incluir regras de mapeamento incrementalmente e gerar o código-fonte, ou implementações, para as regras de mapeamento. Não é necessário definir todas as regras de mapeamento para poder gerar o código-fonte.
Em geral, declarações de mapeamento seguem uma convenção de nomenclatura de x2y, em que x representa o tipo de objeto de entrada e y representa o tipo de objeto de saída. Por exemplo, uma declaração de mapeamento denominada Package2EPackage especifica uma declaração de mapeamento que possui Package como objeto de entrada e EPackage como objeto de saída.
Um mapa entre elementos estabelece a correspondência entre seus atributos, o que permite a troca de dados entre eles. A maioria dos mapas oferece a capacidade de manipular ainda mais os dados entre a origem e o destino. Por exemplo, você pode optar por especificar cálculos ou fazer outras modificações nos dados criando um código customizado, que possibilita designar valores ao destino.
Para criar uma declaração de mapeamento de classe para classe no modelo de mapeamento:
Para incluir um objeto de entrada e um objeto de saída na declaração de mapeamento de classe para classe:


Depois de incluir os objetos de entrada e saída na declaração de mapeamento, você pode definir as regras de mapeamento entre os atributos.Regras de mapeamento, também chamadas de mapeamentos, especificam como designar um valor a um atributo de um objeto de saída, de acordo com os valores dos atributos de um objeto de entrada.
Você cria uma regra de mapeamento entre o atributo name dos objetos de entrada e de saída. A classe de destino tem o mesmo nome que a classe no modelo de entrada; considere esse processo como a criação de uma cópia da classe. Em uma lição mais adiante, você irá incluir as operações de mapeamento na regra de mapeamento.
Você cria uma regra de mapeamento de submapa entre o atributo ownedOperation dos objetos de entrada e de saída. Para cada operação na coleta ownedOperation, a operação gerada no modelo de destino tem o mesmo nome e visibilidade que a operação no modelo de entrada.
Um submapa é uma chamada de um mapa a partir de outro mapa. O submapa que está sendo invocado pode, mas não precisa, ser definido no mesmo arquivo de mapeamento do que o mapa que o invoca. Um submapa permite mapear um tipo complexo no modelo de entrada para um tipo complexo no modelo de saída. O submapa que você criar pode invocar um mapa existente em qualquer arquivo de mapeamento. A definição de submapas em arquivos de mapeamento separados incentiva a reutilização de mapas; entretanto, a criação de vários arquivos de mapeamento pode intensificar a manutenção do projeto. Submapas também podem incluir outros submapas, resultando em uma estrutura hierárquica.
Você também pode criar regras de mapeamento de submapas entre os objetos de entrada e os objetos de saída em uma declaração de mapeamento.
Para cada submapa em uma declaração de mapeamento, um extrator denominado getInputFeatureToOutputFeature_UsingMap_Extractor é gerado na transformação de inclusão, em que InputFeature representa o nome do atributo de entrada e OutputFeature representa o nome do atributo de saída, enquanto Map representa o nome da declaração de mapeamento.
Você pode especificar refinamentos semânticos utilizando a API OCL (Object Constraint Language) fornecida pelo Eclipse.
Uma regra de mapeamento herdada, e a regra ou o extrator gerado a partir desse mapeamento, mantêm a mesma posição relativa na ordem de processamento que a regra de mapeamento e sua regra ou seu extrator gerado.
Para cada regra de mapeamento de movimentação ou customizada em uma declaração de mapeamento, é incluída uma regra no código-fonte de transformação gerado. Para cada regra de mapeamento de submapa, é gerado um extrator de conteúdo no código-fonte da transformação. Quando você cria uma regra de mapeamento, seu tipo é determinado pelos atributos de entrada e saída que são selecionados. Por exemplo, se os atributos de entrada e saída forem tipos primitivos compatíveis, como cadeias ou inteiros, uma regra de mapeamento de movimentação será especificada. Se os atributos de entrada e saída forem tipos complexos, uma regra de submapa será especificada. Se movimentação e submapa não forem tipos de regras de mapeamento apropriados, uma regra de mapeamento customizada será especificada.
Para definir as regras de mapeamento na declaração de mapeamento Class2Class:
Neste ponto da lição, na área do editor, o submapa tem uma indicação com um X circulado em vermelho, que representa um erro. Coloque o ponteiro do mouse sobre essa indicação para visualizar a mensagem de erro. Essa mensagem de erro afirma que você precisa selecionar uma declaração de mapeamento a ser invocada pela regra de mapeamento de submapa. Para resolver esse erro, crie uma declaração de mapeamento de operação para operação.
Para criar uma declaração de mapeamento de operação para operação: