Skip to end of metadata
Go to start of metadata

情報古いです。v0.2系の話。

目次

今までのステップで、ワークスペースにはJiemamy関連の複数のプロジェクトがチェックアウトされている状態だと思います。通常、この時点でエラーは起こっていないはずです。もしエラーが発生していた場合、ご相談ください。

コンポーネント構成

プロジェクト名は、基本的にコンポーネントのルートパッケージ名となっています。が、長いので「org.jiemamy」の部分を「J-」と省略して表現します。ex) org.jiemamy.core → J-core

  • Jiemamy仕様コンポーネント群 Jiemamy仕様の定義コンポーネント群。主に、仕様を記述したインターフェイスを含む。
    • J-coreSpec (org.jiemamy.spec.core)
      • Jiemamyのコア仕様(基本的なモデルと簡単なロジック)コンポーネント。
    • J-eventSpec
      • Jiemamyモデルの変更をイベントとして通知するメカニズムに関する使用コンポーネント。
    • J-viewSpec
      • ERダイアグラムとして表現するための情報(位置・サイズなど)を扱うための仕様コンポーネント。
    • J-diffSpec
      • 差分モデルコンポーネント。
      • まだ何も仕様定義をしていない。
  • Jiemamy参照実装(RI)コンポーネント群 Jiemamy仕様の実装コンポーネント群。仕様で定義されたコアモデル+コアロジックが記述されている。EclipseやMavenに対して完全非依存。
    • J-core
      • J-specの実装コンポーネント。
      • コアモデル(model package)やコアロジック(util package等)の実装を含む。
      • DBのスキーマ情報がオブジェクトになっている、つまり「情報保持オブジェクト群」があり、それをモデルと呼ぶ。
      • 拡張ロジックとはImporter, Exporter, Dialectを指す(後述)。
    • J-serializer
      • データファイル(拡張子 .jer)とモデル間の変換機。
      • モデルをXML(String)に変換したり、XML(String)をモデルに復元したりする。
    • J-composer
      • composer = importer + exporter
      • 何かから、モデルに情報を取り込むのが improter。J-coreにある org.jiemamy.core.extension.importer.Importer インターフェイスの実装。
      • モデルを何かの形式に変換して出力するのが exporter。J-coreにある org.jiemamy.core.extension.exporter.Exporter インターフェイスの実装。
      • 標準で提供するいくつかのcomposerを提供する役割を果たす。
      • ユーザが、もっと特殊なcomposerが欲しいのならば、J-spec内の上記インターフェイスを実装すればいいように出来ている。
    • J-dialect
      • dialectは、日本語で「方言」。
      • DB毎に、出したいSQLが異なるので、その差分を実装するコンポーネント。
      • モデルをSQLに変換する時に「ここ、どうやって出力したらいいー?」っていう問い合わせ先。
      • 各DB実装ごとに、プロジェクトを分けてある。
        • J-dialect.postgresql
        • J-dialect.mysql
        • など
    • J-event
    • J-view
    • J-diff
  • JEPコンポーネント群?(EclipseAPI依存) モデルの操作をEclipseのGUIから行えるようにするためのコンポーネント群。群っつってもまだ一個w
    • J-eclipse
      • Jiemamyモデルのエディタ&ロジックのトリガ。後にも先にも、それでしかない。
      • J-coreのモデルに対して、ビューとコントローラが実装されている。これが揃ってMVCパターンで動く。
      • EclipseのGEF(Graphical Editing Framework)というフレームワーク上に構成されている。
  • MJPコンポーネント群?(MavenAPI依存) モデルの操作(といってもSQLに変換するだけだが)をMavenから呼び出せる様にするためのコンポーネント群。やはり一個しか無いが。
    • まだありません

データモデルの把握

Jiemamyのコードを理解するのに、まず必要なのはJiemamyのデータモデル(以下、Jiemamyモデル)の把握です。J-core内、org.jiemamy.core.modelパッケージ以下を把握しましょう。ポイントは以下の通り。

  • 全てのJiemamyモデルは、JiemamyModelインターフェイスを持つ。
  • Jiemamyモデル構造の根元にあたるクラスはRootModel。言い換えれば、有効な全てのモデルはRootModelから辿ることができる。
  • 上記以外の主要モデルクラスは下記5種に分類され、下位パッケージに分類される。
    • node (ダイアグラム上の四角(Table等)にあたるものを表現するモデル)
    • connection (ダイアグラム上の接続線(外部キー等)にあたるものを表現するモデル)
    • typedef (テーブルのカラムやデータ型など、データ定義に関するモデル)
    • presentation (モデルがダイアグラム上でどのように表示されるのか、座標, サイズ, 色などを表現するモデル)
    • dataset (INSERT文用のデータを表現するモデル)
  • 基本的にJavaBeansとして作られている。フィールドとアクセサ(getter/setter)が整然と並んでいるだけなので、モデル同士の包含(has-a)関係を主に把握(ColumnModelはTableModelに包含されている、など)。

理解が難しいと思われるポイント

  • AbstractModel#process() メソッド
    • ATDK
  • DataTypeAdapter
    • ATDK
  • DataTypeMapping (これはモデル外に出すべきか…?)
    • ATDK

続きはComing soon...


null
Labels
  • None