眺め読み #7 ModelManager

ModelManagerは、Diconファイルをパースした結果のDiconエレメントを保持します。

package org.seasar.kijimuna.core.dicon;
public class  ModelManager implements Serializable {
  private transient IProject project;
  private String projectName;

  // HashMap<String diconFilename, ContainerElement diconElement>
  private Map containerMap = new HashMap();

  // HashMap<String diconFilename, HashSet<String javaOrIncludeDiconFile>>
  private Map relatedMap = new HashMap();

  // Outlineが入る
  private Set listeners = new HashSet();

  private transient IFileProcessor builder;
  private transient IFileProcessor validator;

containerMapには、Diconファイル名とSAXパースした結果のDiconエレメントが入ります。
relatedMapには、Diconファイル名と、そのDiconファイルが参照しているjavaファイルのリストが入ります。また、IncludeしているDiconファイルも入ります。
Diconファイルの変更時には、containerMapとrelatedMapを更新します。
javaファイルまたはIncludeされているDiconファイルの変更時には、relatedMapから参照しているDiconファイルを見つけ出して、containerMapを更新します。
フルビルド時は、containerMapとrelatedMapを空にして、すべてのDiconファイルについて、containerMapとrelatedMapを更新します。
Kijimunaプラグインの終了時に、ModelManagerをシリアライズでファイルに書き出しています。Kijimunaプラグインの開始時に、ファイルからModelManagerを復元しています。