まず、既存のビジネス・データの特性および要件に応じて、
model
パッケージのどのクラスが適切であるかを決定する必要があります。
データ・モデルの実装には、5 つのレベルがあり、それぞれが特定の状態に適しています。
- 既存データを使用しません。可能性のある状況が 3 つあります。
- 表示する既存データがなく、ダイアグラムを最初から作成する場合。
- 既存データはあるが、それを表示する前に複写したい場合で、メモリー内でどのようにデータが表されるかは問題ではない場合。
- データを XML ファイルにエクスポート済みで、その XML データを読み込みたい場合。
このような場合は、デフォルトの SDM モデル、 IlvDefaultSDMModel の実装を使用します。デフォルト・モデルのノードおよびリンクは、クラス IlvDefaultSDMNode および IlvDefaultSDMLink のインスタンスです。これらのオブジェクトには任意のユーザー定義プロパティーのセットがあるので、デフォルト・モデルはあらゆる種類のオブジェクトを表すことができます。 - データベース内の既存データを表示します。データがデータベースに保管されていて、それを表示したいが、ダイアグラム・コンポーネント内では直接変更したくない場合。
model
パッケージには、この場合の特定の SDM モデル、 IlvJDBCSDMModel が用意されています。このモデルは、JDBC™ API を使用してデータベースにアクセスします。 必要なのは、データベース URL、ノードとリンクを含む表の名前、その他いくつかのパラメーターを使用してモデルを構成することだけです。 - 既存の JavaBeans™ 。JavaBeans 標準に準拠するクラスに既存のデータを保管している場合。 すなわち、それぞれの Bean プロパティー について、accessor メソッド (
get
およびset
) がある場合です。この場合、クラス IlvJavaBeanSDMModel を使用します。 このモデルは JavaBeans をグラフ のノードおよびリンクとして使用するので、複写も追加のメモリー消費もありません。 ノードとリンクのプロパティーは、JavaBeans API を使用して読み込みと書き込みが行われます。 必要なのは、グラフを作成する JavaBeans のセットを指定することだけです。 例については、「JavaBeans の例」を参照してください。 - JavaBeans ではない既存の Java™ クラス、または Java クラスのない既存データの場合。例えば、データを表す Swing JTree モデルの実装が既にあり、ツリー のコンテンツを、データの複写なしに表示したいとします。次のいずれかのケースが当てはまります。
- JavaBeans ではない Java クラスで表される既存データがある場合。
- まだ Java クラスによってメモリー内に表されていないデータを表示したい場合。
このような場合には、2 つの方法が考えられます。- クラス IlvAbstractSDMModel を使用して、 ご使用のオブジェクトをラップし、 IlvSDMNode および IlvSDMLink インターフェースを実装する新しいオブジェクトに入れます。これには、間接的方法のために余分なオブジェクト割り振りが必要になりますが、ノードとリンク用の事前定義インターフェースを利用することができます。 例については、「JavaBeans 以外の例: 抽象モデルのバリアント」を参照してください。
- 基本モデル IlvBasicSDMModel をサブクラス化し、オブジェクトをリストして各オブジェクトのプロパティーを取得するメソッドを実装します。 これは、追加作業を必要としますが、拡張可能性があります。すべてのオブジェクトが既に存在する場合は望ましい方法です。 例については、「JavaBeans 以外の例: 基本モデルのバリアント」を参照してください。
以下の表に、このセクションで説明した戦略を要約します。
データ特性 |
推奨クラス |
---|---|
新規または XML 由来 |
|
データベース (表示のみ) |
|
JavaBeans |
|
Java クラスまたはその他の既存オブジェクト (例、Swing など)
|
|
グラフィック・オブジェクトがインタラクティブに移動される場合は、SDM がオブジェクトの新しい位置を x,y プロパティーとしてモデルに保管しようと試みます。
しかし、モデルが x,y プロパティーの設定を拒否する場合があります。例えば、読み取り専用モデルの場合などです。
そうしたケースを処理するために、SDM ライブラリーには、新しいプロパティーをあたかも実際のモデルに保管されているかのように管理できるメタデータ・システムがあります。
メタデータを使用可能にするには、
ilog.views.sdm.IlvSDMEngine.setMetadataEnabled(true)
を呼び出します。
メタデータは、XML ファイルにのみ保存されます。他のパーシスタント・メカニズムで、メタデータを保存する必要がある場合には、そのメカニズムによって行われる必要があります。
デフォルトのモデルは、メタデータを必要としません。