account for other windream drive letters than W
This commit is contained in:
parent
89c6ddaeed
commit
3f084d17a1
@ -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
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user