2006年11月08日

DocumentDiffer クラス (6)

これまでご紹介した DocumentDifferクラス20061108_DocumentDiffer_v100.txt にまとめました。

おまけとして toStringWithLabel()関数 を追加しています。 toString()関数 ではフィールド名(アイテム名)をそのまま使うため、出力結果は開発者にしかわからないものでした。 こちらはフィールド名に対応した表示名を指定するラベルを渡すことにより、よりわかりやすい出力になっています。

更新ログをユーザーも参照することがある場合、こちらの使用をお勧めします。 またこちらは、ラベル登録したもの以外は出力しない仕様になっていますので、いちいち removeItem() しなくてすむので、その意味でも使いやすいです。

使い方の例はこちら。
Sub Postsave(Source As Notesuidocument)
Call aDocumentDiffer.process(Source.Document)

Dim targetList$ List
targetList$("Title") = "タイトル"
targetList$("Description") = "概要"

Msgbox aDocumentDiffer.toStringWithLabel(targetList$)
End Sub

続きを読む
posted by yamachan at 23:00| Comment(7) | TrackBack(0) | my設計パターン

2006年11月02日

DocumentDiffer クラス (5)

DocumentDiffer クラス (4) に引き続き、今回はお遊びコードをご紹介します。

ネタ元は LotusScript に対する不満?(2) Variant の名前でクラスを扱う、というあたり。カッコ良く言えば レイト・バインディング(late binding) を利用した実装ですね。 たぶんね。

DocumentDiffer クラスに、以下のような workWith() メソッドを追加します。 引数としては Variant を指定しています。 指定したオブジェクトと適切に連動する、という仕様書に書くと怒られるようなアバウトな仕様。

今回のコードでは、以前にご紹介した ログ生成用クラス との連携を実装してみます。 ログに変更点を書き出してくれるという目論見です。
Sub workWith(coWoker As Variant)
  If coWoker Isa "CoreLog" Then
    Call coWoker.logText(toString())
  End If
End Sub
が、このコードは僕の環境では動作しませんでした。 謎です。 なにせ、次のコードは動作するのですから...。
続きを読む
posted by yamachan at 01:16| Comment(0) | TrackBack(0) | my設計パターン