外部のエンタープライズ情報システム (EIS) との間でやり取りするデータについて、サービス・データ・オブジェクトをサポート対象の双方向言語形式に変換したり、WebSphere® ESB から外部の EIS に送信するデータをその特定 EIS で使用されている双方向言語形式に変換したりする API を作成できます。
データ・オブジェクトの双方向言語形式を変換するための API を作成するには、以下の手順を実行します。
import com.ibm.bidiTools.bdlayout.*;
import commonj.sdo.DataObject; import commonj.sdo.Type; import commonj.sdo.Property;
String STRING_STR_TYPE = "String"; String NORM_STRING_STR_TYPE = "normalizedString"; String TOKEN_STR_TYPE = "token"; String LANG_STR_TYPE = "language"; String NAME_STR_TYPE = "Name"; String NMTOKEN_STR_TYPE = "NMTOKEN"; String NCNANE_STR_TYPE = "NCName"; String ID_STR_TYPE = "ID"; String IDREF_STR_TYPE = "IDREF"; String IDREFS_STR_TYPE = "IDREFS"; String ENTITY_STR_TYPE = "ENTITY"; String ENTITIES_STR_TYPE = "ENTITIES";
private static boolean isStringFamilyType (Property property) { boolean rc = false; if ((property.getType().getName().equalsIgnoreCase(STRING_STR_TYPE)) || (property.getType().getName().equalsIgnoreCase(NORM_STRING_STR_TYPE)) || (property.getType().getName().equalsIgnoreCase(TOKEN_STR_TYPE)) || (property.getType().getName().equalsIgnoreCase(LANG_STR_TYPE)) || (property.getType().getName().equalsIgnoreCase(NAME_STR_TYPE)) || (property.getType().getName().equalsIgnoreCase(NMTOKEN_STR_TYPE)) || (property.getType().getName().equalsIgnoreCase(NCNANE_STR_TYPE)) || (property.getType().getName().equalsIgnoreCase(ID_STR_TYPE)) || (property.getType().getName().equalsIgnoreCase(IDREF_STR_TYPE)) || (property.getType().getName().equalsIgnoreCase(IDREFS_STR_TYPE)) || (property.getType().getName().equalsIgnoreCase(ENTITY_STR_TYPE)) || (property.getType().getName().equalsIgnoreCase(ENTITIES_STR_TYPE))) rc = true; return rc; }
DataObject BiDiDataObjTransformationBO(DataObject boIn, String formatIn, String formatOut){ Type type; Property property; if (boIn == null) return null; type = boIn.getType(); List propertyList = type.getProperties(); for (int propertyNumber = 0; propertyNumber < propertyList.size(); propertyNumber++){ property = (Property) propertyList.get(propertyNumber); String propertyName = property.getName();
if (!isStringFamilyType(property)) continue; if (property.isContainment()) { if (property.isMany()) { List childsList = boIn.getList(property);
for (int childNumber = 0; childNumber < childsList.size(); childNumber++){ BiDiDataObjTransformationBO(connectionContext, ((DataObject)childsList.get(childNumber)),formatIn, formatOut); } } else {
BiDiDataObjTransformationBO(connectionContext, ((DataObject)boIn.get(property)),formatIn, formatOut); } } else {
String str = BiDiStringTransformation( (boIn.getString(propertyName),formatIn, formatOut); boIn.setString(propertyName, str); } } return boIn; }