Updated the
Template Build Class to include a
build number that will be different the build version. The build version is text which could have 1.1.0, 1.0.0 beta 1, etc. The build number is an actual number and would be 40, 100, etc.
Here are the methods available:
Public Sub new( )Public Function GetVersionField() As NotesDocument
Public Function getTemplateBuildName( ) As String
Public Function setTemplateBuildName( BuildName As String )
Public Function getTemplateBuild( ) As String
Public Function setTemplateBuild( Build As String )
Public Function getTemplateBuildNumber( ) As Double
Public Function setTemplateBuildNumber( BuildNumber As Double )
Public Function getTemplateBuildDate( ) As NotesDateTime
Public Function setTemplateBuildDate( BuildDate As NotesDateTime )
Public Function hasTemplateBuild( ) As Boolean
Public Sub Save( )
Public Sub delete( )
Template Build Class
Option Public
Option Declare
'/**
' * Notes/Domino uses a shared field called $TemplateBuild to store the current
' * build number, build name and build date this class will allow access to the shared field
' * both to read and update.
' *
' * History
' *14 Apr 2005 Christopher J Doig Initial version
' *30 May 2006 Chad Schelfhout ( http://www.chadsmiley.com )
' * Converted function to class
' * Setters and getters for Build information
' * Allow the creation of the shared field if it does not exist
' *8 June 2006 Chad Schelfhout ( http://www.chadsmiley.com )
' * Added TemplateBuildNumber which is a number not text. This will allow the comparison to see if a new version is available.
' */
Class TemplateBuild
SharedFieldTitleName As String
SharedFieldName As String
TemplateBuildNameField As String
TemplateBuildNumberField As String
TemplateBuildField As String
TemplateBuildDateField As String
docTemplateBuild As NotesDocument
session As NotesSession
saveDocTemplateBuild As Boolean
Public Sub New ()
SharedFieldTitleName = "$Title"
SharedFieldName = "$TemplateBuild"
TemplateBuildNameField = "$TemplateBuildName"
TemplateBuildNumberField = "$TemplateBuildNumber"
TemplateBuildField = "$TemplateBuild"
TemplateBuildDateField = "$TemplateBuildDate"
Set session = New NotesSession
saveDocTemplateBuild = False
Call GetVersionField()
End Sub
'/*
' * Attempt to load the Build information if it is not there then import the DXL to create
' * the shared field then try and load the Build information again.
' */
Public Function GetVersionField () As NotesDocument
Call attemptLoad()
If docTemplateBuild Is Nothing Then
Call createBuildTemplateField()
Call attemptLoad()
End If
Set GetVersionField = docTemplateBuild
End Function
'/*
' * Search for the shared field called $TemplateBuild
' */
Private Sub attemptLoad()
Dim doc As NotesDocument
Dim nc As NotesNoteCollection
Dim item As NotesItem
Dim strID As String
Set nc = session.CurrentDatabase.CreateNoteCollection ( False )
nc.SelectSharedFields = True
Call nc.BuildCollection
strID = nc.GetFirstNoteId
Set docTemplateBuild = Nothing
Do Until strID = ""
Set doc = session.CurrentDatabase.GetDocumentByID ( strID )
Set item = doc.GetFirstItem ( SharedFieldTitleName )
If item.Text = SharedFieldName Then
Set docTemplateBuild = doc
Exit Do
End If
strID = nc.GetNextNoteId ( strID )
Loop
End Sub
'/*
' * Import a shared field called $TemplateBuild
' */
Private Sub createBuildTemplateField()
Dim importer As NotesDXLImporter
Set importer = session.CreateDXLImporter
importer.DesignImportOption = DXLIMPORTOPTION_CREATE
Call importer.Import( |<!--?xml version='1.0' encoding='utf-8'?-->
Application Name
0.0.0
0
20050815T000000,00-07
| , Session.CurrentDatabase )
saveDocTemplateBuild = True
End Sub
'/*
' * Get, Set Template Build Name
' */
Public Function getTemplateBuildName As String
getTemplateBuildName = ""
If hasTemplateBuild Then
If docTemplateBuild.HasItem( TemplateBuildNameField ) Then
getTemplateBuildName = docTemplateBuild.getFirstItem( TemplateBuildNameField ).text
End If
End If
End Function
Public Sub setTemplateBuildName ( BuildName As String )
If hasTemplateBuild Then
Call docTemplateBuild.ReplaceItemValue( TemplateBuildNameField , BuildName )
saveDocTemplateBuild = True
End If
End Sub
'/*
' * Get, Set Template Build
' */
Public Function getTemplateBuild As String
getTemplateBuild = ""
If hasTemplateBuild Then
If docTemplateBuild.HasItem( TemplateBuildField ) Then
getTemplateBuild = docTemplateBuild.getFirstItem( TemplateBuildField ).text
End If
End If
End Function
Public Sub setTemplateBuild ( Build As String )
If hasTemplateBuild Then
Call docTemplateBuild.ReplaceItemValue( TemplateBuildField , Build )
saveDocTemplateBuild = True
End If
End Sub
'/*
' * Get, Set Template Build Number
' */
Public Function getTemplateBuildNumber As Double
getTemplateBuildNumber = 0
If hasTemplateBuild Then
If docTemplateBuild.HasItem( TemplateBuildNumberField ) Then
If ( Isnumeric( docTemplateBuild.getFirstItem( TemplateBuildNumberField ).text ) ) Then
getTemplateBuildNumber = Cdbl( docTemplateBuild.getFirstItem( TemplateBuildNumberField ).text )
End If
End If
End If
End Function
Public Sub setTemplateBuildNumber ( BuildNumber As Double )
If hasTemplateBuild Then
Call docTemplateBuild.ReplaceItemValue( TemplateBuildNumberField , BuildNumber )
saveDocTemplateBuild = True
End If
End Sub
'/*
' * Get, Set Template Build Date
' */
Public Function getTemplateBuildDate As NotesDateTime
Set getTemplateBuildDate = New NotesDateTime( "0/0/0" )
If hasTemplateBuild Then
If ( docTemplateBuild.HasItem( TemplateBuildDateField ) ) Then
Set getTemplateBuildDate = docTemplateBuild.getFirstItem( TemplateBuildDateField ).dateTimeValue
End If
End If
End Function
Public Sub setTemplateBuildDate ( BuildDate As NotesDateTime )
If hasTemplateBuild Then
Call docTemplateBuild.ReplaceItemValue( TemplateBuildDateField , BuildDate )
saveDocTemplateBuild = True
End If
End Sub
Public Function hasTemplateBuild As Boolean
hasTemplateBuild = Not ( docTemplateBuild Is Nothing)
End Function
Public Sub Save()
If saveDocTemplateBuild Then
Call docTemplateBuild.Save( True , False )
saveDocTemplateBuild = False
End If
End Sub
Public Sub delete
Call save
End Sub
End Class
Pingback: DXL & Downloading Updates « ChadSmiley Blog