119 lines
4.9 KiB
VB.net
119 lines
4.9 KiB
VB.net
Imports NLog
|
|
Imports DigitalData.Modules.Logging
|
|
Imports DigitalData.Modules.Windream
|
|
Imports DigitalData.Modules.Language
|
|
|
|
Public Class ConnectionBuilder
|
|
Implements IConnectionBuilder
|
|
|
|
Private ReadOnly LogConfig As LogConfig
|
|
Private SessionReconnect As Boolean = False
|
|
Private DriveLetter As String = "W"
|
|
Private BasePath As String = BASE_PATH
|
|
Private Support64Bit As Boolean = False
|
|
Private ServerName As String = Nothing
|
|
Private UserName As String = Nothing
|
|
Private Password As String = Nothing
|
|
Private Domain As String = Nothing
|
|
|
|
Private Const BASE_PATH As String = "\\windream\objects"
|
|
|
|
Public Sub New(LogConfig As LogConfig)
|
|
Me.LogConfig = LogConfig
|
|
End Sub
|
|
|
|
''' <summary>
|
|
''' Sets flag in Windream class to reconnect on lost connection
|
|
''' </summary>
|
|
''' <returns>A IConnectionBuilder instance to allow for chaining</returns>
|
|
Public Function WithSessionReconnect() As IConnectionBuilder Implements IConnectionBuilder.WithSessionReconnect
|
|
SessionReconnect = True
|
|
Return Me
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Sets the drive letter of windream drive, default is "W"
|
|
''' </summary>
|
|
''' <param name="driveLetter">The drive letter to use</param>
|
|
''' <returns>A IConnectionBuilder instance to allow for chaining</returns>
|
|
Public Function WithDriveLetter(driveLetter As String) As IConnectionBuilder Implements IConnectionBuilder.WithDriveLetter
|
|
Me.DriveLetter = driveLetter
|
|
BasePath = String.Empty
|
|
Return Me
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Sets the drive letter to String.Empty, use \\windream\objects as Windream base path
|
|
''' </summary>
|
|
''' <param name="BasePath">The windream base path, eg. \\windream\objects</param>
|
|
''' <returns>A IConnectionBuilder instance to allow for chaining</returns>
|
|
Public Function WithWindreamObjects(BasePath As String) As IConnectionBuilder Implements IConnectionBuilder.WithWindreamObjects
|
|
BasePath = BasePath
|
|
DriveLetter = String.Empty
|
|
Return Me
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Sets the drive letter to String.Empty, use \\windream\objects as Windream base path
|
|
''' </summary>
|
|
''' <returns>A IConnectionBuilder instance to allow for chaining</returns>
|
|
Public Function WithWindreamObjects() As IConnectionBuilder Implements IConnectionBuilder.WithWindreamObjects
|
|
BasePath = BASE_PATH
|
|
DriveLetter = String.Empty
|
|
Return Me
|
|
End Function
|
|
|
|
Public Function WithWindreamObjectsOrDriveLetter(BasePath As String, DriveLetter As String) As IConnectionBuilder Implements IConnectionBuilder.WithWindreamObjectsOrDriveLetter
|
|
If Utils.NotNull(BasePath, Nothing) IsNot Nothing Then
|
|
Return WithWindreamObjects(BasePath)
|
|
ElseIf Utils.NotNull(DriveLetter, Nothing) IsNot Nothing Then
|
|
Return WithDriveLetter(DriveLetter)
|
|
Else
|
|
Return WithWindreamObjects()
|
|
End If
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Sets flag in Windream class to indicate 64-bit support
|
|
''' </summary>
|
|
''' <returns>A IConnectionBuilder instance to allow for chaining</returns>
|
|
Public Function With64BitSupport() As IConnectionBuilder Implements IConnectionBuilder.With64BitSupport
|
|
Support64Bit = True
|
|
Return Me
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Sets the servername in Windream class, overriding the client setting
|
|
''' </summary>
|
|
''' <param name="serverName"></param>
|
|
''' <returns>A IConnectionBuilder instance to allow for chaining</returns>
|
|
Public Function WithServerName(serverName As String) As IConnectionBuilder Implements IConnectionBuilder.WithServerName
|
|
Me.ServerName = serverName
|
|
Return Me
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Sets the username, password and domain in Windream class, overriding the client settings
|
|
''' </summary>
|
|
''' <param name="userName">The username used for the connection</param>
|
|
''' <param name="password">The password used for the connection</param>
|
|
''' <param name="domain">The domain used for the connection</param>
|
|
''' <returns>A IConnectionBuilder instance to allow for chaining</returns>
|
|
Public Function WithImpersonation(userName As String, password As String, domain As String) As IConnectionBuilder Implements IConnectionBuilder.WithImpersonation
|
|
Me.UserName = userName
|
|
Me.Password = password
|
|
Me.Domain = domain
|
|
Return Me
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Creates a connection.
|
|
''' </summary>
|
|
''' <exception cref="Exceptions.SessionException">If there was an error while establishing the connection</exception>
|
|
''' <returns>A Windream Object</returns>
|
|
Public Function Connect() As Windream Implements IConnectionBuilder.Connect
|
|
Return New Windream(LogConfig, SessionReconnect, DriveLetter, BasePath, Support64Bit, ServerName, UserName, Password, Domain)
|
|
End Function
|
|
|
|
End Class
|