今回はコンストラクタ部分です。 コンストラクタは、対象のNotes文書を引数にします。
DocumentDiffer はインスタンス生成の際、後の差分作成(process 関数)の実行に備え、必要なフィールドを全て保持しようとします。 具体的には、内部にテンポラリ文書を作成し、必要なフィールド(NotesItem)をコピーしておきます。
保持しておくフィールドは、とりあえず 日付・名前・数値・テキストに限定しています。 また '$' 文字で始まるフィールドは、システムで利用するフィールドが多いので、保持する対象からはずしています。
さて、実際のコードをみてみましょう。
Public Class DocumentDiffer
Private oldDoc As NotesDocument
Private diffDoc As NotesDocument
' ---- Constractor/Destractor methods ----
Sub New(doc As NotesDocument)
Dim session As New NotesSession
Set Me.oldDoc = session.CurrentDatabase.CreateDocument
Forall item In doc.Items
If item.Type = DATETIMES Or item.Type = NAMES Or
item.Type = NUMBERS Or item.Type = TEXT Then
If Left$(item.Name, 1) <> "$" Then
Call item.CopyItemToDocument(Me.oldDoc, item.Name)
End If
End If
End Forall
End Sub
Sub Delete
Delete Me.oldDoc
If Not(Me.diffDoc Is Nothing) Then
Delete Me.diffDoc
End If
End Sub
End Class
New の部分をみますと、条件に合うフィールドをコピーするだけの、わりあい単純な仕組みであることがわかるとおもいます。
Delete はいつもながら、生成したインスタンスを削除するだけの最低限のものです。
さて次回は、実際に差分を作成する process() 関数の定義をみていきましょう〜