É possível usar a conversão Java™ customizada para inserir seu próprio código Java a ser usado no mapeamento.
No editor de Mapeamento de Dados Gráficos, selecione Java Customizado na lista Transformações Customizadas. Você pode então usar as propriedades de transformação para selecionar um método Java em uma classe Java a partir de um projeto Java em sua área de trabalho. Use o assistente de conteúdo da coluna Valores para ajudá-lo a designar os elementos necessários do esquema de origem.
A classe Java que você fornece para o mapa deve ter um método estático que retorne o tipo apropriado para o valor do elemento de saída e usa parâmetros do tipo apropriado para as entradas ligadas.
Por exemplo, o método Java a seguir pode ser usado em uma transformação Java customizada que tinha três elementos de saída, dos tipos xs:string, xs:decimal e xs:boolean e o elemento de saída sendo xs:decimal:
public static BigDecimal calSomething(String memType, BigDecimal stdCost, boolean flag) {
BigDecimal actualCost = stdCost;
if (flag & memType.startsWith("gold")) {
BigDecimal discRate = new BigDecimal(0.9);
actualCost = actualCost.multiply(discRate);
}
return actualCost;
}
A tabela a seguir mostra os mapeamentos entre o tipo Esquema, o tipo Java e o tipo de árvore do WebSphere Message Broker:
Tipo Esquema | Tipo Java | Tipo de Árvore de Mensagens do Broker |
---|---|---|
xs:anyURI | java.lang.String | CHARACTER |
xs:base64Binary | byte[] | BLOB |
xs:boolean | boolean, java.lang.Boolean | BOOLEAN |
xs:byte | byte, java.lang.Byte | INTEGER |
xs:date | javax.xml.datatype.XMLGregorianCalendar | DATE |
xs:dateTime | javax.xml.datatype.XMLGregorianCalendar | TIMESTAMP |
xs:dayTimeDuration | javax.xml.datatype.Duration | INTERVAL |
xs:decimal | java.math.BigDecimal | DECIMAL |
xs:double | double, java.lang.Double | FLOAT |
xs:duration | javax.xml.datatype.Duration | INTERVAL |
xs:float | float, java.lang.Float | FLOAT |
xs:gDay | javax.xml.datatype.XMLGregorianCalendar | DATE |
xs:gMonth | javax.xml.datatype.XMLGregorianCalendar | DATE |
xs:gMonthDay | javax.xml.datatype.XMLGregorianCalendar | DATE |
xs:gYear | javax.xml.datatype.XMLGregorianCalendar | DATE |
xs:gYearMonth | javax.xml.datatype.XMLGregorianCalendar | DATE |
xs:hexBinary | byte[] | BLOB |
xs:int | int, java.lang.Integer | INTEGER |
xs:integer | java.math.BigInteger | DECIMAL |
xs:long | long, java.lang.Long | INTEGER |
xs:negativeInteger | java.math.BigInteger | DECIMAL |
xs:nonNegativeInteger | java.math.BigInteger | DECIMAL |
xs:nonPositiveInteger | java.math.BigInteger | DECIMAL |
xs:normalizedString | java.lang.String | CHARACTER |
xs:positiveInteger | java.math.BigInteger | DECIMAL |
xs:short | short, java.lang.Short | INTEGER |
xs:string | java.lang.String | CHARACTER |
xs:time | javax.xml.datatype.XMLGregorianCalendar | TIME |
xs:unsignedByte | Short | INTEGER |
xs:unsignedInt | Long | INTEGER |
xs:unsignedLong | java.math.BigInteger | DECIMAL |
xs:unsignedShort | Int | INTEGER |
xs:yearMonthDuration | javax.xml.datatype.Duration | INTERVAL |
Você também pode criar transformações Java Customizado para processar entradas e saídas que sejam matrizes ou tipos complexos; elas não podem ser convertidas de um tipo de esquema para um tipo Java definido, mostrado na tabela anterior.
Nesse caso, sua classe Java deve usar a classe MbElement para fazer referência ao elemento de entrada ou saída. Para obter informações sobre como usar Java e a classe MbElement, consulte Usando Classes de API Java para Transformações de Mapeamento Java Customizadas.