account for other windream drive letters than W

This commit is contained in:
Jonathan Jenne 2020-04-06 13:59:08 +02:00
parent 89c6ddaeed
commit 3f084d17a1

View File

@ -8,6 +8,7 @@ Imports WINDREAMLib.WMSearchRelation
Imports WMOBRWSLib
Imports WMOSRCHLib
Imports System.IO
Imports System.Text.RegularExpressions
Public Class ClassWindream
@ -411,14 +412,22 @@ Public Class ClassWindream
Dim oWindreamFilename As String = NewFileName
Dim oFileName As String = NewFileName
Dim oWDriveRegex As New Regex("^\w{1}:")
If NewFileName.StartsWith("W:") Then
oFileName = NewFileName.Replace("W:", vWLaufwerk)
oWindreamFilename = NewFileName.Replace("W:", String.Empty)
If oWDriveRegex.IsMatch(NewFileName) Then
oFileName = oWDriveRegex.Replace(NewFileName, vWLaufwerk)
oWindreamFilename = oWDriveRegex.Replace(NewFileName, String.Empty)
Else
oWindreamFilename = NewFileName.Replace(vWLaufwerk, String.Empty)
End If
'If NewFileName.StartsWith("W:") Then
' oFileName = NewFileName.Replace("W:", vWLaufwerk)
' oWindreamFilename = NewFileName.Replace("W:", String.Empty)
'Else
' oWindreamFilename = NewFileName.Replace(vWLaufwerk, String.Empty)
'End If
Dim oSourceFilename As String = Path.GetFileName(SourceFilePath)
Dim oDestination As String = Path.GetDirectoryName(oFileName)
@ -434,16 +443,6 @@ Public Class ClassWindream
LOGGER.Info(" ...Quelldatei gelesen")
'If oWindreamFilename.Contains("[%Version]") Then
' oWindreamFilename = oWindreamFilename.Replace("[%Version]", "")
' NewFileName = oWindreamFilename
'End If
'If NewFileName.StartsWith("W:") Then
' NewFileName = NewFileName.Replace("W:", vWLaufwerk)
' oWindreamFilename = NewFileName.Replace(vWLaufwerk, String.Empty)
'End If
If My.Computer.FileSystem.DirectoryExists(oDestination) Then
LOGGER.Info(" ...targetPath existiert")
' Überprüfen ob der zu Kopieren notwendige Speicherplatz auf Ziellaufwerk vorhanden ist
@ -451,91 +450,72 @@ Public Class ClassWindream
Dim oFileInfo As New FileInfo(SourceFilePath)
Dim oFileLength As Long = oFileInfo.Length
'If vWLaufwerk.Count = 1 Then
' Dim oDriveInfo As New DriveInfo(vWLaufwerk & ":")
' Dim oFreeSpace = oDriveInfo.TotalFreeSpace
' If oFreeSpace < oFileLength Then
' If USER_LANGUAGE = "de-DE" Then
' MsgBox("Auf dem Zielverzeichnis ist nicht genug Speicherplatz zum Übertragen frei.", MsgBoxStyle.Exclamation, "Nicht genug Speicherplatz")
' Else
' MsgBox("Not enough diskspace in Target-Directory.", MsgBoxStyle.Exclamation, "Not enough diskspace")
' End If
' Return -10
' End If
'End If
LOGGER.Info(" ...Datei kopieren von '" & SourceFilePath & "' nach '" & NewFileName & "'.")
Dim Connect
Dim Session
Dim WMObject
Dim aFileIO
Dim aWMStream
Dim wmbrwsr
Dim dmsServer As String
LOGGER.Info(" ...Connect definieren: CreateObject('Windream.WMConnect')")
Connect = CreateObject("Windream.WMConnect")
aFileIO = New WMOTOOLLib.WMFileIO
'If My.Settings.DLL_WMOTOOL = "" Then
' aFileIO = New WMOTOOLLib.WMFileIO
' LOGGER.Info(" ...Direkter Verweis auf New WMOTOOLLib.WMFileIO")
'Else
' aFileIO = CreateObject(My.Settings.DLL_WMOTOOL) 'WMOTool.WMFileIO oder WMOTOOLLib.WMFileIO
' LOGGER.Info(" ...Verwendeter Verweis aus Anwendungsstring: '" & My.Settings.DLL_WMOTOOL & "'")
'End If
Dim Connect
Dim Session
Dim WMObject
Dim aFileIO
Dim aWMStream
Dim wmbrwsr
Dim dmsServer As String
LOGGER.Info(" ...Connect definieren: CreateObject('Windream.WMConnect')")
Connect = CreateObject("Windream.WMConnect")
aFileIO = New WMOTOOLLib.WMFileIO
wmbrwsr = CreateObject("WMOBrws.ServerBrowser")
'==================================================================
' get the current DMS-server to log in
'==================================================================
dmsServer = wmbrwsr.GetCurrentServer
'==================================================================
' create a session
'==================================================================
Session = CreateObject("Windream.WMSession", dmsServer)
'==================================================================
' login session
'==================================================================
Connect.LoginSession(Session)
Dim LoggedIn = Session.aLoggedin
If LoggedIn Then
LOGGER.Info(" ...Login ok. You are logged in as '" & Connect.UserName & "' on Server '" & dmsServer)
'MsgBox("Login ok. You are logged in as '" + Connect.UserName + "' on Server '" + dmsServer + "'")
Else
LOGGER.Info(" >> Login on dms-Server failed")
' MsgBox("Login failed. ")
End If
_session = Session
Const WMCOMEventWMSessionNeedIndex = 1
'windream Objekte erstellen ohne Indexierungs-Event
Session.SwitchEvents(WMCOMEventWMSessionNeedIndex, False)
'==================================================================
' check if files exist
'==================================================================
LOGGER.Info(" ...ÜBERPRÜFTER DATEINAME => " & oWindreamFilename)
Dim wdFilexists As Boolean
LOGGER.Info(" ...Versuch auf die Datei in W: zuzugreifen und zu sperren...")
wdFilexists = Session.WMObjectExists(WMEntityDocument, oWindreamFilename, 0, 0)
Err.Clear()
If wdFilexists = False Then
LOGGER.Info(" ...Datei ist NICHT vorhanden, kann also einfach neu angelegt werden")
wmbrwsr = CreateObject("WMOBrws.ServerBrowser")
'==================================================================
' get the current DMS-server to log in
' create an object
'==================================================================
dmsServer = wmbrwsr.GetCurrentServer
'==================================================================
' create a session
'==================================================================
Session = CreateObject("Windream.WMSession", dmsServer)
'==================================================================
' login session
'==================================================================
Connect.LoginSession(Session)
Dim LoggedIn = Session.aLoggedin
If LoggedIn Then
LOGGER.Info(" ...Login ok. You are logged in as '" & Connect.UserName & "' on Server '" & dmsServer)
'MsgBox("Login ok. You are logged in as '" + Connect.UserName + "' on Server '" + dmsServer + "'")
Else
LOGGER.Info(" >> Login on dms-Server failed")
' MsgBox("Login failed. ")
WMObject = Session.GetNewWMObjectFS(WMEntityDocument, oWindreamFilename, WMObjectEditModeObject) 'WMEntityDocument, windreamFilename, WMObjectEditModeObject
If Err.Number > 0 Then
LOGGER.Info(" FEHLER: WMObject konnte nicht erzeugt werden - Error: '" & Err.Description & "'")
'MsgBox(Err.Description)
End If
_session = Session
Const WMCOMEventWMSessionNeedIndex = 1
' MsgBox("Created file: " + windreamFilename)
Else
' wenn auf die Datei zugeriffen werden konnte ist sie bereits vorhanden -> Datum anhängen
LOGGER.Info(" ...Es konnte zugegriffen werden -> DATEI IST BEREITS VORHANDEN")
'windream Objekte erstellen ohne Indexierungs-Event
Session.SwitchEvents(WMCOMEventWMSessionNeedIndex, False)
'==================================================================
' check if files exist
'==================================================================
LOGGER.Info(" ...ÜBERPRÜFTER DATEINAME => " & oWindreamFilename)
Dim wdFilexists As Boolean
LOGGER.Info(" ...Versuch auf die Datei in W: zuzugreifen und zu sperren...")
wdFilexists = Session.WMObjectExists(WMEntityDocument, oWindreamFilename, 0, 0)
Err.Clear()
If wdFilexists = False Then
LOGGER.Info(" ...Datei ist NICHT vorhanden, kann also einfach neu angelegt werden")
'==================================================================
' create an object
'==================================================================
WMObject = Session.GetNewWMObjectFS(WMEntityDocument, oWindreamFilename, WMObjectEditModeObject) 'WMEntityDocument, windreamFilename, WMObjectEditModeObject
If Err.Number > 0 Then
LOGGER.Info(" FEHLER: WMObject konnte nicht erzeugt werden - Error: '" & Err.Description & "'")
'MsgBox(Err.Description)
End If
' MsgBox("Created file: " + windreamFilename)
Else
' wenn auf die Datei zugeriffen werden konnte ist sie bereits vorhanden -> Datum anhängen
LOGGER.Info(" ...Es konnte zugegriffen werden -> DATEI IST BEREITS VORHANDEN")
Select Case CURRENT_DOKART_DUPLICATE_HANDLING
Case "New version"
LOGGER.Info("Creating new version of file [{0}]", NewFileName)
oWindreamFilename = ClassFilehandle.Versionierung_Datei(NewFileName).ToString.Substring(2)
@ -562,85 +542,85 @@ Public Class ClassWindream
End Select
WMObject = Session.GetNewWMObjectFS(1, oWindreamFilename, 31) 'WMEntityDocument, windreamFilename, WMObjectEditModeObject
If Err.Number > 0 Then
LOGGER.Info(" FEHLER: Neues WMObject (Kopie) konnte nicht erzeugt werden - Error: '" & Err.Description & "'")
'MsgBox(Err.Description)
End If
LOGGER.Info(" ...WMObject zugewiesen")
If Err.Number > 0 Then
LOGGER.Info(" FEHLER: Neues WMObject (Kopie) konnte nicht erzeugt werden - Error: '" & Err.Description & "'")
'MsgBox(Err.Description)
End If
LOGGER.Info(" ...ENDGÜLTIGER DATEINAME => " & oWindreamFilename)
If WMObject IsNot Nothing Then
LOGGER.Info(" ...WMObject zugewiesen")
End If
LOGGER.Info(" ...ENDGÜLTIGER DATEINAME => " & oWindreamFilename)
If WMObject IsNot Nothing Then
'NewFileName = vWLaufwerk & ":" & oWindreamFilename
' lock object for file system access (to change the file itself)
WMObject.lock()
' set fileIO the local source file
aFileIO.bstrOriginalFileName = SourceFilePath
If Err.Number > 0 Then
LOGGER.Info(" FEHLER: fileIO konnte nicht gesetzt werden - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
LOGGER.Info(" HINWEIS: Überprüfen Sie den Verweis auf die Bibliotheken 'WMOTool.WMFileIO' UND 'WMOTOOLLib.WMFileIO' und ändern diese in den Anwendungseinstellungen (DLL_WMOTOOL)'")
WMObject.Unlock()
Delete_WDFile(oWindreamFilename)
' set fileIO the local source file
aFileIO.bstrOriginalFileName = SourceFilePath
If Err.Number > 0 Then
LOGGER.Info(" FEHLER: fileIO konnte nicht gesetzt werden - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
LOGGER.Info(" HINWEIS: Überprüfen Sie den Verweis auf die Bibliotheken 'WMOTool.WMFileIO' UND 'WMOTOOLLib.WMFileIO' und ändern diese in den Anwendungseinstellungen (DLL_WMOTOOL)'")
WMObject.Unlock()
Delete_WDFile(oWindreamFilename)
Return False
' MsgBox(Err.Description)
End If
' open the windream object's file stream for writing
aWMStream = WMObject.OpenStream(STREAM_BinaryObject, WMObjectStreamOpenModeReadWrite)
If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in OpenStream - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
Delete_WDFile(oWindreamFilename)
Return False
'MsgBox(Err.Description)
End If
LOGGER.Info(" ...oWMStream erzeugt")
' give fileIO helper object the windream stream
aFileIO.aWMStream = aWMStream
If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in Zuweisen aWMStream zu aFileIO - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
Delete_WDFile(oWindreamFilename)
Return False
'MsgBox(Err.Description)
End If
' let fileIO object import the original file into windream
aFileIO.ImportOriginal(True)
If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in FileIO.ImportOriginal(True) - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
Delete_WDFile(oWindreamFilename)
Return False
' MsgBox(Err.Description)
End If
LOGGER.Info(" ...Inhalt der Datei konnte übertragen werden")
' close the windream file stream
aWMStream.Close()
If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in aWMStream.Close() - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
Delete_WDFile(oWindreamFilename)
Return False
'MsgBox(Err.Description)
End If
' save new windream object
WMObject.save()
If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in WMObject.save - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
Delete_WDFile(oWindreamFilename)
Return False
'MsgBox(Err.Description)
End If
LOGGER.Info(" ...Datei konnte gespeichert werden")
' unlock the windream object
WMObject.unlock()
If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in WMObject.unlock - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
Delete_WDFile(oWindreamFilename)
Return False
'MsgBox(Err.Description)
End If
Return False
' MsgBox(Err.Description)
End If
' open the windream object's file stream for writing
aWMStream = WMObject.OpenStream(STREAM_BinaryObject, WMObjectStreamOpenModeReadWrite)
If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in OpenStream - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
Delete_WDFile(oWindreamFilename)
Return False
'MsgBox(Err.Description)
End If
LOGGER.Info(" ...oWMStream erzeugt")
' give fileIO helper object the windream stream
aFileIO.aWMStream = aWMStream
If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in Zuweisen aWMStream zu aFileIO - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
Delete_WDFile(oWindreamFilename)
Return False
'MsgBox(Err.Description)
End If
' let fileIO object import the original file into windream
aFileIO.ImportOriginal(True)
If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in FileIO.ImportOriginal(True) - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
Delete_WDFile(oWindreamFilename)
Return False
' MsgBox(Err.Description)
End If
LOGGER.Info(" ...Inhalt der Datei konnte übertragen werden")
' close the windream file stream
aWMStream.Close()
If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in aWMStream.Close() - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
Delete_WDFile(oWindreamFilename)
Return False
'MsgBox(Err.Description)
End If
' save new windream object
WMObject.save()
If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in WMObject.save - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
Delete_WDFile(oWindreamFilename)
Return False
'MsgBox(Err.Description)
End If
LOGGER.Info(" ...Datei konnte gespeichert werden")
' unlock the windream object
WMObject.unlock()
If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in WMObject.unlock - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
Delete_WDFile(oWindreamFilename)
Return False
'MsgBox(Err.Description)
End If
'DATEI GRÖSSE ERMITTELN - MANCHMAL KOMMT ES VOR DAS DATEIGRÖße 0 ist
Dim info2 As New FileInfo(oFileName)
Dim length1 As Long = info2.Length
@ -669,18 +649,18 @@ Public Class ClassWindream
LOGGER.Info("Error Number: [{0}]", Err.Number)
LOGGER.Info(" Unexpected error in Datei-Übertragen - FileLength ist 0, Übertragene Datei wurde gelöscht")
Return False
End If
Else
LOGGER.Info(" Could not create a WMObject for file:'" & oWindreamFilename)
If Not Err() Is Nothing Then
If Not Err.Description Is Nothing Then
LOGGER.Info(Err.Description)
End If
End If
Return False
End If
Else
LOGGER.Info("...targetPath existiert NICHT")
LOGGER.Info(" Could not create a WMObject for file:'" & oWindreamFilename)
If Not Err() Is Nothing Then
If Not Err.Description Is Nothing Then
LOGGER.Info(Err.Description)
End If
End If
Return False
End If
Else
LOGGER.Info("...targetPath existiert NICHT")
Return False
End If