例: DataObject 型データでの双方向 (bi-di) 変換の使用

双方向言語スクリプト内の情報を使用する場合、データの形式の変換が必要になる場合があります。以下に、DataObject 型データについて変換を実行するコーディングを段階的に説明した例を示します。

IBM® WebSphere® Process Server バージョン 6.0.0 で、Windows®、AIX®、または Linux® オペレーティング・システム版の JDK 1.4.1 を使用している場合は、これらのクラスをインストールする必要はありません。

モジュールでは、DataObject 型の情報を双方向形式から別の形式へ変換する必要があります。

注: 形式がよく分からない場合は、双方向 (bi-di) 形式のストリングの値を参照してください。
  1. bi-di エンジンのインプリメンテーションを含むすべての bi-di クラスを組み込みます。
    import com.ibm.bidiTools.bdlayout.*;
  2. DataObject 型オブジェクトを操作する必要のあるすべてのクラスを組み込みます。
    import commonj.sdo.DataObject;
    import commonj.sdo.Type;
    import commonj.sdo.Property;
  3. DataObject 型オブジェクトに含まれる各種のストリングを格納するストリング変数を定義します。このステップにより、DataObject の横移動を再帰的に実行しながら、type String の属性のフィルタリングを容易に行うことができます。
    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";
  4. プロパティーの型が String であるかどうかを検査する関数を定義します。
    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; 
    }
  5. DataObject 全体に bi-di 変換を適用する再帰的関数を定義します。
    注: 以下に、コード・ロジックが従う基本的な前提事項を説明します。
    • bi-di 変換は、string 型のプロパティーにのみ適用されます。
    • DataObject 内の string 型のプロパティーは、1 つの bi-di 形式で格納されます。
    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();
    1. string でないプロパティーはすべてスキップします。
             if (!isStringFamilyType(property)) 
                   continue;
      
             if (property.isContainment()) { 
                  if (property.isMany()) { 
                        List childsList = boIn.getList(property); 
    2. 変換を再帰的に呼び出して、子オブジェクトを処理します。
       
                        for (int childNumber = 0; childNumber < childsList.size(); 
      		   childNumber++){                   BiDiDataObjTransformationBO(connectionContext, 
      		 ((DataObject)childsList.get(childNumber)),formatIn, formatOut);
                    } 
                } else {
    3. 変換を再帰的に呼び出して、含まれている任意のビジネス・オブジェクトの子オブジェクトを処理します。
                    BiDiDataObjTransformationBO(connectionContext, 
      	     ((DataObject)boIn.get(property)),formatIn, formatOut);
               } 
           } else {
    4. 単純な string 属性を変換します。
               String str = BiDiStringTransformation(
                   (boIn.getString(propertyName),formatIn, formatOut);
               boIn.setString(propertyName, str); 
           } 
         } 
         return boIn; 
      }

Terms of use |

Last updated: Fri Mar 24 06:06:57 2006

(c) Copyright IBM Corporation 2005, 2006.
This information center is powered by Eclipse technology (http://www.eclipse.org)