LocationDocument LotusScript class updated

I updated my LocationDocument LotusScript class again for Location type (Local Area Network, No connection etc.) and for mail server name. It makes it really easy to quickly get at location document information from script.

See the original post for usage.

'/**
' * LotusScript class for interacting with location documents
' * in the personal name and address book.
' */
Public Class LocationDocument
   'declarations
   Private pSession As NotesSession
   Private pDb As NotesDatabase
   Private pDoc As NotesDocument

   '/**
   ' * Constructor
   ' */
   Public Sub New(get_location As String)
      'declarations
      Dim viewNab As NotesView
      Dim nn As NotesName
      Dim ini_location As String
      Dim location As String
      Dim comma As Integer

      'get session
      Set Me.pSession = New NotesSession()

      If get_location = "" Then
         'get the location from notes.ini
         ini_location = Me.pSession.GetEnvironmentString("Location", True)

         'parse out the location name if none specifed in the constructor
         comma = Instr(1, ini_location, ",")
         location = Mid$(ini_location, 1, comma-1)
      Else
         'use supplied location name
         location = get_location
      End If

      'abbreviate the name
      Set nn = New NotesName(location)
      location = nn.Abbreviated

      'get database and view
      Set Me.pDb = Me.pSession.GetDatabase("", "names.nsf")
      Set viewNab = Me.pDb.GetView("Locations")

      'lookup location document
      Set Me.pDoc = viewNab.GetDocumentByKey(location, True)
      If Me.pDoc Is Nothing Then
         Error 9999, "Location document not found in names.nsf"
      End If
   End Sub

   '/**
   ' * Saves.
   ' */
   Public Sub Save()
      Call Me.pDoc.Save(False, False)
   End Sub

   '/**
   ' * Property to get the backend document.
   ' */
   Public Property Get Document As NotesDocument
      Set Document = Me.pDoc
   End Property

   '/**
   ' * Property to get the e-mail address.
   ' */
   Public Property Get EmailAddress As String
      EmailAddress = Me.pDoc.GetItemValue("ImailAddress")(0)
   End Property

   '/**
   ' * Returns the name of the directory server.
   ' */
   Public Property Get DirectoryServer As NotesName
      If Me.LocationType = "3" Then
         Set DirectoryServer = Nothing
      Else
         Dim nn As New NotesName(Me.pDoc.GetItemValue("DirectoryServer")(0))
         Set DirectoryServer = nn
      End If
   End Property

   '/**
   ' * Sets the name of the directory server.
   ' */
   Public Property Set DirectoryServer As NotesName
      Call Me.pDoc.ReplaceItemValue("DirectoryServer", DirectoryServer.Canonical)
   End Property

   '/**
   ' * Returns the name of the Sametime server.
   ' */
   Public Property Get SametimeServer As NotesName
      If Me.LocationType = "3" Then
         Set SametimeServer = Nothing
      Else
         Set SametimeServer = New NotesName(Me.pDoc.GetItemValue("SametimeServer")(0))
      End If
   End Property

   '/**
   ' * Sets the name of the Sametime server.
   ' */
   Public Property Set SametimeServer As NotesName
      Call Me.pDoc.ReplaceItemValue("SametimeServer", SametimeServer.Canonical)
   End Property

   '/**
   ' * Returns the name of the mail server.
   ' */
   Public Property Get MailServer As NotesName
      If Me.LocationType = "3" Then
         Set MailServer = Nothing
      Else
         Set MailServer = New NotesName(Me.pDoc.GetItemValue("MailServer")(0))
      End If
   End Property

   '/**
   ' * Sets the name of the mail server.
   ' */
   Public Property Set MailServer As NotesName
      Call Me.pDoc.ReplaceItemValue("MailServer", MailServer.Canonical)
   End Property

   '/**
   ' * Returns the location type.
   ' * 
' * Local Area Network = "0" ' * Notes Direct Dialup = "1" ' * Network Dialup = "4" ' * Custom = "2" ' * No connection = "3" ' */ Public Property Get LocationType As String LocationType = Me.pDoc.GetItemValue("LocationType")(0) End Property End Class