Irenka仮想ファイルシステム

id:ashigeru:20070815:1187182109 でファイラの最低限の機能を実装してみましたけど、やっぱり仮想ファイルシステムが欲しいなと。

ファイルシステム内のリソース

  • 仮想ファイルシステム内の各リソース(CtResouce)は次の2種類
    1. ファイル(CtFile extends CtResouce)
    2. フォルダ(CtFolder extends CtResource)
  • CtResouceは単純名(#name)を持つ
  • CtFileは子要素にバイナリデータを保持し、該データの入出力ストリームを取得できる(.openInputStream(), openOutputStream())
  • CtFolderは子要素にCtResouceのリストを保持し、それぞれの単純名で各CtResourceを取得できる(.getFile(String), .getFolder(String))
  • ファイルシステムは単一のCtFolderをそのルートに持つ

ファントムリソース

  • CtFolderは存在しない子要素を取得することができ、それらはファントムリソースとして利用できる
  • ファントムリソースは実在するリソースへと変更することができる
  • ファントムリソースに対して子要素を生成した場合、そのファントムリソースもまた生成される

リソースメタデータ

  • CtResourceから該リソースのメタデータを取得できる(#info)
    • CtFile, CtFolderはそれぞれ別種のメタデータを保持してよい
  • CtFile, CtFolderは、それぞれリソースのメタデータを変更できる
  • リソースメタデータの変更は、各子要素の情報に影響を与えない
    • ただのメタデータで、情報の解釈に関するヒントを持つ

ワーキングコピーとしての振る舞い

  • 仮想ファイルシステムは、あるデータ構造のミラーまたはワーキングコピーとして生成することができる
  • 仮想ファイルシステムの部分に対する変更は、任意のタイミングで元となるデータ構造に反映させることができる


これくらいあれば十分かな。
この抽象度なら、Irenka以外からも使えそうなイメージ。