基本的なカスタマイズ > ユーザーインタフェースのカスタマイズ > UI の情報の表示 > 属性のカスタマイズ > Windchill 属性のカスタマイズの概要 > データユーティリティ > データユーティリティクラスの作成
  
データユーティリティクラスの作成
com.ptc.core.components.descriptor.DataUtility インタフェースを実装することでデータユーティリティを作成します。
データユーティリティはアプリケーションコンテキストを使用して検出されるので、実装クラスはパブリックで、引数のないパブリックなコンストラクタがある必要があります。
新しい DataUtility を実装する場合、AbstractDataUtility 基本クラスを拡張してください。
属性値を補ったり属性のレンダリング方法を変更したりする必要があれば、該当する場合には既存のデータユーティリティを拡張してください。属性に現在マッピングされているデータユーティリティは「利用可能な属性レポート」または JcaDebug で確認できます。詳細については、使用可能な属性レポートおよびjcaDebug の使用を参照してください。
1. DataUtility インタフェースの getDataValue() メソッドを実装します。
getDataValue() メソッドは、特定の属性の UI に配置されるべきコンテンツを取得します。
例:
追加のテキストを伴う特殊な文字列属性の値を追加する場合の例は、以下のとおりです。
Object getDataValue(String component_id, Object datum, ModelContext mc)
throws WTException {
…..
…..
String rawVal = myObject.get(component_id);
String displayVal = rawVal + “My extra text”;
TextDisplayComponent gui = new TextDisplayComponent(…);
gui.setValue(displayVal);


return gui;
}
* 
テーブルを操作する場合は列のセルごとに 1 回ずつ getDataValue() が呼び出されるので、このメソッドでデータベース呼び出しを行わないでください。データベース呼び出しを行う必要がある場合、setModelData() を使用するようにします。このメソッドは、列ごとに 1 回ずつ呼び出されて結果がキャッシュされるので、データベースが必要以上に多くの回数呼び出されることはありません。
2. DataUtility インタフェースの setModelData() メソッドを実装します。
パフォーマンスの観点では、オブジェクトごとに別々の照会を行う代わりに、setModelData() の 1 回の呼び出しで表示されるすべてのオブジェクトを処理し、すべてのオブジェクトに対する必要なデータベース照会を 1 回で実行できます。
複数の行オブジェクトを呼び出す必要があるテーブルなど、複数のオブジェクトを呼び出す必要がある場合、setModelData() メソッドを使用することで、データユーティリティはレンダリングするすべての行オブジェクトのデータをプリフェッチできます。このメソッドは、すべての行/セルで getDataValue() が呼び出される前に呼び出され、処理されるすべてのオブジェクトのリストで指定されます。
この呼び出しを利用して、複数オブジェクトの照会をいくつか実行し、getDataValue() メソッドで後から使用できるように結果を保存できます。このメソッドを実装する場合、データユーティリティをステートフルに設定する必要があります。