双方向言語スクリプト内の情報を使用する場合、データの形式の変換が必要になる場合があります。以下に、DataObject 型データについて変換を実行するコーディングを段階的に説明した例を示します。
モジュールでは、DataObject 型の情報を双方向形式から別の形式へ変換する必要があります。
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; }
(c) Copyright IBM Corporation 2005, 2006. All rights reserved.
(c) Copyright IBM Japan 2006
このインフォメーション・センターでは、Eclipse テクノロジー (http://www.eclipse.org) が採用されています。