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 WMOBRWSLib
Imports WMOSRCHLib Imports WMOSRCHLib
Imports System.IO Imports System.IO
Imports System.Text.RegularExpressions
Public Class ClassWindream Public Class ClassWindream
@ -411,14 +412,22 @@ Public Class ClassWindream
Dim oWindreamFilename As String = NewFileName Dim oWindreamFilename As String = NewFileName
Dim oFileName As String = NewFileName Dim oFileName As String = NewFileName
Dim oWDriveRegex As New Regex("^\w{1}:")
If NewFileName.StartsWith("W:") Then If oWDriveRegex.IsMatch(NewFileName) Then
oFileName = NewFileName.Replace("W:", vWLaufwerk) oFileName = oWDriveRegex.Replace(NewFileName, vWLaufwerk)
oWindreamFilename = NewFileName.Replace("W:", String.Empty) oWindreamFilename = oWDriveRegex.Replace(NewFileName, String.Empty)
Else Else
oWindreamFilename = NewFileName.Replace(vWLaufwerk, String.Empty) oWindreamFilename = NewFileName.Replace(vWLaufwerk, String.Empty)
End If 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 oSourceFilename As String = Path.GetFileName(SourceFilePath)
Dim oDestination As String = Path.GetDirectoryName(oFileName) Dim oDestination As String = Path.GetDirectoryName(oFileName)
@ -434,16 +443,6 @@ Public Class ClassWindream
LOGGER.Info(" ...Quelldatei gelesen") 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 If My.Computer.FileSystem.DirectoryExists(oDestination) Then
LOGGER.Info(" ...targetPath existiert") LOGGER.Info(" ...targetPath existiert")
' Überprüfen ob der zu Kopieren notwendige Speicherplatz auf Ziellaufwerk vorhanden ist ' Ü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 oFileInfo As New FileInfo(SourceFilePath)
Dim oFileLength As Long = oFileInfo.Length 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 & "'.") LOGGER.Info(" ...Datei kopieren von '" & SourceFilePath & "' nach '" & NewFileName & "'.")
Dim Connect Dim Connect
Dim Session Dim Session
Dim WMObject Dim WMObject
Dim aFileIO Dim aFileIO
Dim aWMStream Dim aWMStream
Dim wmbrwsr Dim wmbrwsr
Dim dmsServer As String Dim dmsServer As String
LOGGER.Info(" ...Connect definieren: CreateObject('Windream.WMConnect')") LOGGER.Info(" ...Connect definieren: CreateObject('Windream.WMConnect')")
Connect = CreateObject("Windream.WMConnect") Connect = CreateObject("Windream.WMConnect")
aFileIO = New WMOTOOLLib.WMFileIO aFileIO = New WMOTOOLLib.WMFileIO
'If My.Settings.DLL_WMOTOOL = "" Then
' aFileIO = New WMOTOOLLib.WMFileIO wmbrwsr = CreateObject("WMOBrws.ServerBrowser")
' LOGGER.Info(" ...Direkter Verweis auf New WMOTOOLLib.WMFileIO") '==================================================================
'Else ' get the current DMS-server to log in
' aFileIO = CreateObject(My.Settings.DLL_WMOTOOL) 'WMOTool.WMFileIO oder WMOTOOLLib.WMFileIO '==================================================================
' LOGGER.Info(" ...Verwendeter Verweis aus Anwendungsstring: '" & My.Settings.DLL_WMOTOOL & "'") dmsServer = wmbrwsr.GetCurrentServer
'End If '==================================================================
' 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 WMObject = Session.GetNewWMObjectFS(WMEntityDocument, oWindreamFilename, WMObjectEditModeObject) 'WMEntityDocument, windreamFilename, WMObjectEditModeObject
'================================================================== If Err.Number > 0 Then
' create a session LOGGER.Info(" FEHLER: WMObject konnte nicht erzeugt werden - Error: '" & Err.Description & "'")
'================================================================== 'MsgBox(Err.Description)
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 End If
_session = Session ' MsgBox("Created file: " + windreamFilename)
Const WMCOMEventWMSessionNeedIndex = 1 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 Select Case CURRENT_DOKART_DUPLICATE_HANDLING
Case "New version" Case "New version"
LOGGER.Info("Creating new version of file [{0}]", NewFileName) LOGGER.Info("Creating new version of file [{0}]", NewFileName)
oWindreamFilename = ClassFilehandle.Versionierung_Datei(NewFileName).ToString.Substring(2) oWindreamFilename = ClassFilehandle.Versionierung_Datei(NewFileName).ToString.Substring(2)
@ -562,85 +542,85 @@ Public Class ClassWindream
End Select End Select
WMObject = Session.GetNewWMObjectFS(1, oWindreamFilename, 31) 'WMEntityDocument, windreamFilename, WMObjectEditModeObject WMObject = Session.GetNewWMObjectFS(1, oWindreamFilename, 31) 'WMEntityDocument, windreamFilename, WMObjectEditModeObject
If Err.Number > 0 Then If Err.Number > 0 Then
LOGGER.Info(" FEHLER: Neues WMObject (Kopie) konnte nicht erzeugt werden - Error: '" & Err.Description & "'") LOGGER.Info(" FEHLER: Neues WMObject (Kopie) konnte nicht erzeugt werden - Error: '" & Err.Description & "'")
'MsgBox(Err.Description) 'MsgBox(Err.Description)
End If
LOGGER.Info(" ...WMObject zugewiesen")
End If End If
LOGGER.Info(" ...ENDGÜLTIGER DATEINAME => " & oWindreamFilename) LOGGER.Info(" ...WMObject zugewiesen")
If WMObject IsNot Nothing Then End If
LOGGER.Info(" ...ENDGÜLTIGER DATEINAME => " & oWindreamFilename)
If WMObject IsNot Nothing Then
'NewFileName = vWLaufwerk & ":" & oWindreamFilename 'NewFileName = vWLaufwerk & ":" & oWindreamFilename
' lock object for file system access (to change the file itself) ' lock object for file system access (to change the file itself)
WMObject.lock() WMObject.lock()
' set fileIO the local source file ' set fileIO the local source file
aFileIO.bstrOriginalFileName = SourceFilePath aFileIO.bstrOriginalFileName = SourceFilePath
If Err.Number > 0 Then If Err.Number > 0 Then
LOGGER.Info(" FEHLER: fileIO konnte nicht gesetzt werden - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") 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)'") 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() WMObject.Unlock()
Delete_WDFile(oWindreamFilename) Delete_WDFile(oWindreamFilename)
Return False Return False
' MsgBox(Err.Description) ' MsgBox(Err.Description)
End If End If
' open the windream object's file stream for writing ' open the windream object's file stream for writing
aWMStream = WMObject.OpenStream(STREAM_BinaryObject, WMObjectStreamOpenModeReadWrite) aWMStream = WMObject.OpenStream(STREAM_BinaryObject, WMObjectStreamOpenModeReadWrite)
If Err.Number > 0 Then If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in OpenStream - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") LOGGER.Info(" Unexpected error in OpenStream - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock() WMObject.Unlock()
Delete_WDFile(oWindreamFilename) Delete_WDFile(oWindreamFilename)
Return False Return False
'MsgBox(Err.Description) 'MsgBox(Err.Description)
End If End If
LOGGER.Info(" ...oWMStream erzeugt") LOGGER.Info(" ...oWMStream erzeugt")
' give fileIO helper object the windream stream ' give fileIO helper object the windream stream
aFileIO.aWMStream = aWMStream aFileIO.aWMStream = aWMStream
If Err.Number > 0 Then If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in Zuweisen aWMStream zu aFileIO - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") LOGGER.Info(" Unexpected error in Zuweisen aWMStream zu aFileIO - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock() WMObject.Unlock()
Delete_WDFile(oWindreamFilename) Delete_WDFile(oWindreamFilename)
Return False Return False
'MsgBox(Err.Description) 'MsgBox(Err.Description)
End If End If
' let fileIO object import the original file into windream ' let fileIO object import the original file into windream
aFileIO.ImportOriginal(True) aFileIO.ImportOriginal(True)
If Err.Number > 0 Then If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in FileIO.ImportOriginal(True) - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") LOGGER.Info(" Unexpected error in FileIO.ImportOriginal(True) - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock() WMObject.Unlock()
Delete_WDFile(oWindreamFilename) Delete_WDFile(oWindreamFilename)
Return False Return False
' MsgBox(Err.Description) ' MsgBox(Err.Description)
End If End If
LOGGER.Info(" ...Inhalt der Datei konnte übertragen werden") LOGGER.Info(" ...Inhalt der Datei konnte übertragen werden")
' close the windream file stream ' close the windream file stream
aWMStream.Close() aWMStream.Close()
If Err.Number > 0 Then If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in aWMStream.Close() - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") LOGGER.Info(" Unexpected error in aWMStream.Close() - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock() WMObject.Unlock()
Delete_WDFile(oWindreamFilename) Delete_WDFile(oWindreamFilename)
Return False Return False
'MsgBox(Err.Description) 'MsgBox(Err.Description)
End If End If
' save new windream object ' save new windream object
WMObject.save() WMObject.save()
If Err.Number > 0 Then If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in WMObject.save - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") LOGGER.Info(" Unexpected error in WMObject.save - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock() WMObject.Unlock()
Delete_WDFile(oWindreamFilename) Delete_WDFile(oWindreamFilename)
Return False Return False
'MsgBox(Err.Description) 'MsgBox(Err.Description)
End If End If
LOGGER.Info(" ...Datei konnte gespeichert werden") LOGGER.Info(" ...Datei konnte gespeichert werden")
' unlock the windream object ' unlock the windream object
WMObject.unlock() WMObject.unlock()
If Err.Number > 0 Then If Err.Number > 0 Then
LOGGER.Info(" Unexpected error in WMObject.unlock - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") LOGGER.Info(" Unexpected error in WMObject.unlock - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock() WMObject.Unlock()
Delete_WDFile(oWindreamFilename) Delete_WDFile(oWindreamFilename)
Return False Return False
'MsgBox(Err.Description) 'MsgBox(Err.Description)
End If End If
'DATEI GRÖSSE ERMITTELN - MANCHMAL KOMMT ES VOR DAS DATEIGRÖße 0 ist 'DATEI GRÖSSE ERMITTELN - MANCHMAL KOMMT ES VOR DAS DATEIGRÖße 0 ist
Dim info2 As New FileInfo(oFileName) Dim info2 As New FileInfo(oFileName)
Dim length1 As Long = info2.Length Dim length1 As Long = info2.Length
@ -669,18 +649,18 @@ Public Class ClassWindream
LOGGER.Info("Error Number: [{0}]", Err.Number) LOGGER.Info("Error Number: [{0}]", Err.Number)
LOGGER.Info(" Unexpected error in Datei-Übertragen - FileLength ist 0, Übertragene Datei wurde gelöscht") LOGGER.Info(" Unexpected error in Datei-Übertragen - FileLength ist 0, Übertragene Datei wurde gelöscht")
Return False 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 End If
Else 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 Return False
End If End If