8Jun/060
Template Build Class 1.1.0
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( )<br> Public Function GetVersionField() As NotesDocument<br> Public Function getTemplateBuildName( ) As String<br> Public Function setTemplateBuildName( BuildName As String )<br> Public Function getTemplateBuild( ) As String<br> Public Function setTemplateBuild( Build As String )<br> Public Function getTemplateBuildNumber( ) As Double<br> Public Function setTemplateBuildNumber( BuildNumber As Double )<br> Public Function getTemplateBuildDate( ) As NotesDateTime<br> Public Function setTemplateBuildDate( BuildDate As NotesDateTime )<br> Public Function hasTemplateBuild( ) As Boolean<br> Public Sub Save( )<br> Public Sub delete( )<br>
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'?><!DOCTYPE sharedfield> <sharedfield name='$TemplateBuild' xmlns='http://www.lotus.com/dxl' language='en'> <field type='text' kind='editable' name='$TemplateBuild'/> <item name='$TemplateBuildName' sign='true'> <textlist> <text>Application Name</text> </textlist> </item> <item name='$TemplateBuild' sign='true'> <textlist> <text>0.0.0</text> </textlist> </item> <item name='$TemplateBuildNumber' sign='true'> <numberlist> <number>0</number> </numberlist> </item> <item name='$TemplateBuildDate' sign='true'> <datetimelist> <datetime dst='true'>20050815T000000,00-07</datetime> </datetimelist> </item> </sharedfield>| , 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