MS
This commit is contained in:
@@ -34,6 +34,18 @@ Public Class ClassWindream
|
||||
Const WMObjectVariableValueTypeVector = &H1000
|
||||
Const WMObjectVariableValueTypeFulltext = &H2000
|
||||
Const WMObjectVariableValueTypeDefaultValue = &H4000
|
||||
|
||||
Const REL_Document_AccessRight = "AccessRight"
|
||||
Const COL_AccessRight_AccessRightID = "dwAccessRightID"
|
||||
Const COL_AccessRight_AccessRight = "dwAccessRight"
|
||||
Const REL_AccessRight_UserOrGroup = "AccessRightUserOrGroup"
|
||||
|
||||
Const WMAccessRightUndefined = 0
|
||||
Const WMAccessRightRead = 1
|
||||
Const WMAccessRightWrite = 2
|
||||
Const WMAccessRightAdmin = 4
|
||||
Const WMAccessRightAllRights = 7
|
||||
|
||||
#End Region
|
||||
|
||||
#Region "+++++ Variablen +++++"
|
||||
@@ -45,8 +57,10 @@ Public Class ClassWindream
|
||||
Private Shared oController As New WMOSearchController
|
||||
Public Shared _WDObjekttyp As String
|
||||
Private Shared aktWMObject As WINDREAMLib.WMObject
|
||||
Public Shared STREAM_OBJECT As WINDREAMLib.WMObject
|
||||
Public Shared WD_SERVER
|
||||
Public Shared CURRENT_WMObject As WMObject
|
||||
Private Shared dwAccessRight
|
||||
#End Region
|
||||
|
||||
|
||||
@@ -590,102 +604,130 @@ Public Class ClassWindream
|
||||
End Try
|
||||
|
||||
End Function
|
||||
Public Shared Function Stream_File(ByVal filenameQuelle As String, ByVal zielpfad As String, Optional ImportAll As Boolean = False)
|
||||
Public Shared Function Create_Session()
|
||||
Try
|
||||
aktWMObject = Nothing
|
||||
If My.Computer.FileSystem.DirectoryExists(zielpfad) = False Then
|
||||
My.Computer.FileSystem.CreateDirectory(zielpfad)
|
||||
ClassLogger.Add(">> Zielverzeichnis neu erzeugt!", False)
|
||||
End If
|
||||
|
||||
Const STREAM_BinaryObject = "BinaryObject"
|
||||
|
||||
Dim Session
|
||||
Dim dmsServer As String
|
||||
Dim wmbrwsr
|
||||
Dim Connect
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Stream_File wurde gestartet", False)
|
||||
Dim endgültigerDateiname As String = ""
|
||||
' Objekt für Datei und Zielverzeichnis anlegen
|
||||
' Dim Quelldatei_Name As String = Path.GetFileName(filenameQuelle)
|
||||
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Quelldatei gelesen", False)
|
||||
|
||||
'########
|
||||
Dim Zielverzeichnis As String = zielpfad
|
||||
endgültigerDateiname = CURRENT_NEWFILENAME.Substring(2)
|
||||
If My.Computer.FileSystem.DirectoryExists(Zielverzeichnis) Then
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> targetPath exisitiert", False)
|
||||
' Überprüfen ob der zu Kopieren notwendige Speicherplatz auf Ziellaufwerk vorhanden ist
|
||||
Dim dvr As New DriveInfo(vWLaufwerk & ":")
|
||||
Dim freeSpace = dvr.TotalFreeSpace
|
||||
|
||||
Dim info As New FileInfo(filenameQuelle)
|
||||
' Get length of the file.
|
||||
Dim length As Long = info.Length
|
||||
If freeSpace < length Then
|
||||
MsgBox(" Auf dem Zielverzeichnis ist nicht genug Speicherplatz zum Übertragen frei.", MsgBoxStyle.Exclamation, "Nicht genug Speicherplatz")
|
||||
Return -10
|
||||
End If
|
||||
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Datei kopieren von " & filenameQuelle & " nach " & endgültigerDateiname & ".", False)
|
||||
Dim Connect
|
||||
Dim Session
|
||||
Dim WMObject
|
||||
Dim aFileIO
|
||||
Dim aWMStream
|
||||
Dim wmbrwsr
|
||||
Dim dmsServer As String
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Connect definieren: CreateObject('Windream.WMConnect')", False)
|
||||
wmbrwsr = CreateObject("WMOBrws.ServerBrowser")
|
||||
'==================================================================
|
||||
' get the current DMS-server to log in
|
||||
'==================================================================
|
||||
dmsServer = wmbrwsr.GetCurrentServer
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Connect definieren: CreateObject('Windream.WMConnect')", False)
|
||||
Try
|
||||
Connect = CreateObject("Windream.WMConnect")
|
||||
aFileIO = New WMOTOOLLib.WMFileIO
|
||||
'If My.Settings.DLL_WMOTOOL = "" Then
|
||||
' aFileIO = New WMOTOOLLib.WMFileIO
|
||||
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Direkter Verweis auf New WMOTOOLLib.WMFileIO", False)
|
||||
'Else
|
||||
' aFileIO = CreateObject(My.Settings.DLL_WMOTOOL) 'WMOTool.WMFileIO oder WMOTOOLLib.WMFileIO
|
||||
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Verwendeter Verweis aus Anwendungsstring: '" & My.Settings.DLL_WMOTOOL & "'", False)
|
||||
'End If
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add("Error in Create windreamConnect: " & ex.Message, True)
|
||||
Return False
|
||||
End Try
|
||||
|
||||
wmbrwsr = CreateObject("WMOBrws.ServerBrowser")
|
||||
'==================================================================
|
||||
' get the current DMS-server to log in
|
||||
'==================================================================
|
||||
dmsServer = wmbrwsr.GetCurrentServer
|
||||
'==================================================================
|
||||
' create a session
|
||||
'==================================================================
|
||||
'Prüfen ob sich personifiziert angemeldet werden muss?
|
||||
'==================================================================
|
||||
' create a session
|
||||
'==================================================================
|
||||
'Prüfen ob sich personifiziert angemeldet werden muss?
|
||||
Try
|
||||
If FAU_AD_USER <> "" Then
|
||||
Session = GetWMSessionAsUser(FAU_AD_DOMAIN, FAU_AD_SERVER, FAU_AD_USER, FAU_AD_USER_PW)
|
||||
Else
|
||||
Session = CreateObject("Windream.WMSession", dmsServer)
|
||||
End If
|
||||
'==================================================================
|
||||
' login session
|
||||
'==================================================================
|
||||
Try
|
||||
Connect.LoginSession(Session)
|
||||
Dim LoggedIn = Session.aLoggedin
|
||||
If LoggedIn Then
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Login ok. You are logged in as '" & Connect.UserName & "' on Server '" & dmsServer, False)
|
||||
'MsgBox("Login ok. You are logged in as '" + Connect.UserName + "' on Server '" + dmsServer + "'")
|
||||
Else
|
||||
ClassLogger.Add(">> Login on dms-Server failed", False)
|
||||
' MsgBox("Login failed. ")
|
||||
End If
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add(">> Persionalized session - User is already logged in!'" & Err.Description & "'")
|
||||
End Try
|
||||
|
||||
Const WMCOMEventWMSessionNeedIndex = 1
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add("Error in Create windream Session: " & ex.Message, True)
|
||||
Return False
|
||||
End Try
|
||||
|
||||
'windream Objekte erstellen ohne Indexierungs-Event
|
||||
Session.SwitchEvents(WMCOMEventWMSessionNeedIndex, False)
|
||||
oSession = Session
|
||||
'==================================================================
|
||||
' check if files exist
|
||||
'==================================================================
|
||||
'==================================================================
|
||||
' login session
|
||||
'==================================================================
|
||||
Try
|
||||
Connect.LoginSession(Session)
|
||||
Dim LoggedIn = Session.aLoggedin
|
||||
If LoggedIn Then
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Login ok. You are logged in as '" & Connect.UserName & "' on Server '" & dmsServer, False)
|
||||
oSession = Session
|
||||
Return True
|
||||
'MsgBox("Login ok. You are logged in as '" + Connect.UserName + "' on Server '" + dmsServer + "'")
|
||||
Else
|
||||
ClassLogger.Add(">> Login on dms-Server failed", False)
|
||||
Return False
|
||||
' MsgBox("Login failed. ")
|
||||
End If
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add(">> Persionalized session - User is already logged in!'" & Err.Description & "'")
|
||||
If Not IsNothing(oSession) Then
|
||||
Return True
|
||||
End If
|
||||
End Try
|
||||
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add("Unexpected Error in Create Session: " & ex.Message, True)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
Public Shared Function Stream_File(ByVal filenameQuelle As String, ByVal zielpfad As String, Optional ImportAll As Boolean = False)
|
||||
Try
|
||||
aktWMObject = Nothing
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Stream_File wurde gestartet", False)
|
||||
If IsNothing(oSession) Then
|
||||
If Create_Session() = False Then
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
|
||||
Dim sdsd = WMEntityFolder
|
||||
|
||||
|
||||
Const STREAM_BinaryObject = "BinaryObject"
|
||||
|
||||
|
||||
Dim endgültigerDateiname As String = ""
|
||||
' Objekt für Datei und Zielverzeichnis anlegen
|
||||
' Dim Quelldatei_Name As String = Path.GetFileName(filenameQuelle)
|
||||
|
||||
'########
|
||||
Dim Zielverzeichnis As String = zielpfad
|
||||
endgültigerDateiname = CURRENT_NEWFILENAME.Substring(2)
|
||||
|
||||
'' Überprüfen ob der zu Kopieren notwendige Speicherplatz auf Ziellaufwerk vorhanden ist
|
||||
'Dim dvr As New DriveInfo(vWLaufwerk & ":")
|
||||
'Dim freeSpace = dvr.TotalFreeSpace
|
||||
|
||||
'Dim info As New FileInfo(filenameQuelle)
|
||||
'' Get length of the file.
|
||||
Dim length As Long '= info.Length
|
||||
'If freeSpace < length Then
|
||||
' MsgBox(" Auf dem Zielverzeichnis ist nicht genug Speicherplatz zum Übertragen frei.", MsgBoxStyle.Exclamation, "Nicht genug Speicherplatz")
|
||||
' Return -10
|
||||
'End If
|
||||
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Datei kopieren von " & filenameQuelle & " nach " & endgültigerDateiname & ".", False)
|
||||
|
||||
Dim WMObject
|
||||
Dim aFileIO
|
||||
Dim aWMStream
|
||||
|
||||
aFileIO = New WMOTOOLLib.WMFileIO
|
||||
'If My.Settings.DLL_WMOTOOL = "" Then
|
||||
' aFileIO = New WMOTOOLLib.WMFileIO
|
||||
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Direkter Verweis auf New WMOTOOLLib.WMFileIO", False)
|
||||
'Else
|
||||
' aFileIO = CreateObject(My.Settings.DLL_WMOTOOL) 'WMOTool.WMFileIO oder WMOTOOLLib.WMFileIO
|
||||
' If LogErrorsOnly = False Then ClassLogger.Add(" >> Verwendeter Verweis aus Anwendungsstring: '" & My.Settings.DLL_WMOTOOL & "'", False)
|
||||
'End If
|
||||
|
||||
'==================================================================
|
||||
' check if files exist
|
||||
'==================================================================
|
||||
If Not IsNothing(STREAM_OBJECT) Then
|
||||
WMObject = STREAM_OBJECT
|
||||
Else
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> ÜBERPRÜFTER DATEINAME => " & endgültigerDateiname, False)
|
||||
Dim wdFilexists As Boolean
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Versuch auf die Datei in W: zuzugreifen und zu sperren...", False)
|
||||
wdFilexists = Session.WMObjectExists(WMEntityDocument, endgültigerDateiname, 0, 0)
|
||||
wdFilexists = oSession.WMObjectExists(WMEntityDocument, endgültigerDateiname, 0, 0)
|
||||
|
||||
If wdFilexists = False Then
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Datei ist NICHT vorhanden, kann also einfach neu angelegt werden", False)
|
||||
@@ -693,7 +735,7 @@ Public Class ClassWindream
|
||||
'==================================================================
|
||||
' create an object
|
||||
'==================================================================
|
||||
WMObject = Session.GetNewWMObjectFS(WMEntityDocument, endgültigerDateiname, WMObjectEditModeObject)
|
||||
WMObject = oSession.GetNewWMObjectFS(WMEntityDocument, endgültigerDateiname, WMObjectEditModeObject)
|
||||
If Err.Number > 0 Then
|
||||
ClassLogger.Add(" FEHLER: WMObject konnte nicht erzeugt werden - Error: '" & Err.Description & "'")
|
||||
'MsgBox(Err.Description)
|
||||
@@ -704,142 +746,140 @@ Public Class ClassWindream
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Es konnte zugegriffen werden -> DATEI IST BEREITS VORHANDEN", False)
|
||||
Err.Clear()
|
||||
|
||||
WMObject = Session.GetNewWMObjectFS(WMEntityDocument, endgültigerDateiname, WMObjectEditModeObject)
|
||||
WMObject = oSession.GetNewWMObjectFS(WMEntityDocument, endgültigerDateiname, WMObjectEditModeObject)
|
||||
If Err.Number > 0 Then
|
||||
ClassLogger.Add(" FEHLER: Neues WMObject (Kopie) konnte nicht erzeugt werden - Error: '" & Err.Description & "'")
|
||||
'MsgBox(Err.Description)
|
||||
End If
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> WMObject zugewiesen", False)
|
||||
End If
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> ENDGÜLTIGER DATEINAME => " & endgültigerDateiname, False)
|
||||
If WMObject IsNot Nothing Then
|
||||
' lock object for file system access (to change the file itself)
|
||||
WMObject.lock()
|
||||
' set fileIO the local source file
|
||||
aFileIO.bstrOriginalFileName = filenameQuelle
|
||||
If Err.Number > 0 Then
|
||||
'MsgBox(Err.Number.ToString)
|
||||
ClassLogger.Add(" FEHLER: fileIO konnte nicht gesetzt werden - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
|
||||
ClassLogger.Add(" HINWEIS: Überprüfen Sie den Verweis auf die Bibliotheken 'WMOTool.WMFileIO' UND 'WMOTOOLLib.WMFileIO' und ändern diese in den Anwendungseinstellungen (DLL_WMOTOOL)'", False)
|
||||
WMObject.Unlock()
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
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
|
||||
ClassLogger.Add(" FEHLER bei OpenStream - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
|
||||
WMObject.Unlock()
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
Return False
|
||||
'MsgBox(Err.Description)
|
||||
End If
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> oWMStream erzeugt", False)
|
||||
' give fileIO helper object the windream stream
|
||||
aFileIO.aWMStream = aWMStream
|
||||
If Err.Number > 0 Then
|
||||
ClassLogger.Add(" FEHLER bei Zuweisen aWMStream zu aFileIO - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
|
||||
WMObject.Unlock()
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
Return False
|
||||
'MsgBox(Err.Description)
|
||||
End If
|
||||
' let fileIO object import the original file into windream
|
||||
aFileIO.ImportOriginal(True)
|
||||
If Err.Number > 0 Then
|
||||
ClassLogger.Add(" FEHLER bei FileIO.ImportOriginal(True) - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
|
||||
WMObject.Unlock()
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
Return False
|
||||
' MsgBox(Err.Description)
|
||||
End If
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Inhalt der Datei konnte übertragen werden", False)
|
||||
' close the windream file stream
|
||||
aWMStream.Close()
|
||||
If Err.Number > 0 Then
|
||||
ClassLogger.Add(" FEHLER bei aWMStream.Close() - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
|
||||
WMObject.Unlock()
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
Return False
|
||||
'MsgBox(Err.Description)
|
||||
End If
|
||||
' save new windream object
|
||||
WMObject.save()
|
||||
If Err.Number > 0 Then
|
||||
ClassLogger.Add(" FEHLER bei WMObject.save - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
|
||||
WMObject.Unlock()
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
Return Err.Number
|
||||
'MsgBox(Err.Description)
|
||||
End If
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Datei konnte gespeichert werden", False)
|
||||
' unlock the windream object
|
||||
WMObject.unlock()
|
||||
If Err.Number > 0 Then
|
||||
ClassLogger.Add(" FEHLER bei WMObject.unlock - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
|
||||
WMObject.Unlock()
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
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(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
Dim length1 As Long = info2.Length
|
||||
If length1 > 0 And Err.Number = 0 Then
|
||||
If endgültigerDateiname.StartsWith("\") Then
|
||||
If endgültigerDateiname.StartsWith("\\") Then
|
||||
endgültigerDateiname = endgültigerDateiname.Replace("\\", "\")
|
||||
Else
|
||||
endgültigerDateiname = endgültigerDateiname
|
||||
End If
|
||||
Else
|
||||
endgültigerDateiname = "\" & endgültigerDateiname
|
||||
End If
|
||||
CURRENT_FILEIN_WD = vWLaufwerk & ":" & endgültigerDateiname
|
||||
CURRENT_FILEIN_WD = CURRENT_FILEIN_WD.Replace("\\", "\")
|
||||
ClassLogger.Add(">> File '" & CURRENT_FILEIN_WD & "' was imported.", False)
|
||||
|
||||
|
||||
aktWMObject = WMObject
|
||||
Return True
|
||||
Else
|
||||
If length = 0 Then
|
||||
If ImportAll = False Then
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
ClassLogger.Add(" Error in Stream File - FileLength = 0, File " & CURRENT_FILEIN_WD & " was deleted")
|
||||
Return False
|
||||
Else
|
||||
If endgültigerDateiname.StartsWith("\") Then
|
||||
If endgültigerDateiname.StartsWith("\\") Then
|
||||
endgültigerDateiname = endgültigerDateiname.Replace("\\", "\")
|
||||
Else
|
||||
endgültigerDateiname = endgültigerDateiname
|
||||
End If
|
||||
Else
|
||||
endgültigerDateiname = "\" & endgültigerDateiname
|
||||
End If
|
||||
ClassLogger.Add(">> ATTENTION in Stream File - FileLength = 0, File " & CURRENT_FILEIN_WD & " will be imported")
|
||||
CURRENT_FILEIN_WD = vWLaufwerk & ":" & endgültigerDateiname
|
||||
CURRENT_FILEIN_WD = CURRENT_FILEIN_WD.Replace("\\", "\")
|
||||
|
||||
'###
|
||||
ClassLogger.Add(">> File '" & CURRENT_FILEIN_WD & "' was imported.", False)
|
||||
aktWMObject = WMObject
|
||||
Return True
|
||||
End If
|
||||
|
||||
Else
|
||||
ClassLogger.Add("Error in Stream File - Error <> 0")
|
||||
Return False
|
||||
End If
|
||||
|
||||
End If
|
||||
Else
|
||||
End If
|
||||
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> ENDGÜLTIGER DATEINAME => " & endgültigerDateiname, False)
|
||||
If WMObject IsNot Nothing Then
|
||||
' lock object for file system access (to change the file itself)
|
||||
WMObject.lock()
|
||||
' set fileIO the local source file
|
||||
aFileIO.bstrOriginalFileName = filenameQuelle
|
||||
If Err.Number > 0 Then
|
||||
'MsgBox(Err.Number.ToString)
|
||||
ClassLogger.Add(" FEHLER: fileIO konnte nicht gesetzt werden - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
|
||||
ClassLogger.Add(" HINWEIS: Überprüfen Sie den Verweis auf die Bibliotheken 'WMOTool.WMFileIO' UND 'WMOTOOLLib.WMFileIO' und ändern diese in den Anwendungseinstellungen (DLL_WMOTOOL)'", False)
|
||||
WMObject.Unlock()
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
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
|
||||
ClassLogger.Add(" FEHLER bei OpenStream - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
|
||||
WMObject.Unlock()
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
Return False
|
||||
'MsgBox(Err.Description)
|
||||
End If
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> oWMStream erzeugt", False)
|
||||
' give fileIO helper object the windream stream
|
||||
aFileIO.aWMStream = aWMStream
|
||||
If Err.Number > 0 Then
|
||||
ClassLogger.Add(" FEHLER bei Zuweisen aWMStream zu aFileIO - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
|
||||
WMObject.Unlock()
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
Return False
|
||||
'MsgBox(Err.Description)
|
||||
End If
|
||||
' let fileIO object import the original file into windream
|
||||
aFileIO.ImportOriginal(True)
|
||||
If Err.Number > 0 Then
|
||||
ClassLogger.Add(" FEHLER bei FileIO.ImportOriginal(True) - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
|
||||
WMObject.Unlock()
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
Return False
|
||||
' MsgBox(Err.Description)
|
||||
End If
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Inhalt der Datei konnte übertragen werden", False)
|
||||
' close the windream file stream
|
||||
aWMStream.Close()
|
||||
If Err.Number > 0 Then
|
||||
ClassLogger.Add(" FEHLER bei aWMStream.Close() - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
|
||||
WMObject.Unlock()
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
Return False
|
||||
'MsgBox(Err.Description)
|
||||
End If
|
||||
' save new windream object
|
||||
WMObject.save()
|
||||
If Err.Number > 0 Then
|
||||
ClassLogger.Add(" FEHLER bei WMObject.save - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
|
||||
WMObject.Unlock()
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
Return Err.Number
|
||||
'MsgBox(Err.Description)
|
||||
End If
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> Datei konnte gespeichert werden", False)
|
||||
' unlock the windream object
|
||||
WMObject.unlock()
|
||||
If Err.Number > 0 Then
|
||||
ClassLogger.Add(" FEHLER bei WMObject.unlock - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
|
||||
WMObject.Unlock()
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
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(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
Dim length1 As Long = info2.Length
|
||||
If length1 > 0 And Err.Number = 0 Then
|
||||
If endgültigerDateiname.StartsWith("\") Then
|
||||
If endgültigerDateiname.StartsWith("\\") Then
|
||||
endgültigerDateiname = endgültigerDateiname.Replace("\\", "\")
|
||||
Else
|
||||
endgültigerDateiname = endgültigerDateiname
|
||||
End If
|
||||
Else
|
||||
endgültigerDateiname = "\" & endgültigerDateiname
|
||||
End If
|
||||
CURRENT_FILEIN_WD = vWLaufwerk & ":" & endgültigerDateiname
|
||||
CURRENT_FILEIN_WD = CURRENT_FILEIN_WD.Replace("\\", "\")
|
||||
ClassLogger.Add(">> File '" & CURRENT_FILEIN_WD & "' was imported.", False)
|
||||
|
||||
|
||||
aktWMObject = WMObject
|
||||
Return True
|
||||
Else
|
||||
If length = 0 Then
|
||||
If ImportAll = False Then
|
||||
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
|
||||
ClassLogger.Add(" Error in Stream File - FileLength = 0, File " & CURRENT_FILEIN_WD & " was deleted")
|
||||
Return False
|
||||
Else
|
||||
If endgültigerDateiname.StartsWith("\") Then
|
||||
If endgültigerDateiname.StartsWith("\\") Then
|
||||
endgültigerDateiname = endgültigerDateiname.Replace("\\", "\")
|
||||
Else
|
||||
endgültigerDateiname = endgültigerDateiname
|
||||
End If
|
||||
Else
|
||||
endgültigerDateiname = "\" & endgültigerDateiname
|
||||
End If
|
||||
ClassLogger.Add(">> ATTENTION in Stream File - FileLength = 0, File " & CURRENT_FILEIN_WD & " will be imported")
|
||||
CURRENT_FILEIN_WD = vWLaufwerk & ":" & endgültigerDateiname
|
||||
CURRENT_FILEIN_WD = CURRENT_FILEIN_WD.Replace("\\", "\")
|
||||
|
||||
'###
|
||||
ClassLogger.Add(">> File '" & CURRENT_FILEIN_WD & "' was imported.", False)
|
||||
aktWMObject = WMObject
|
||||
Return True
|
||||
End If
|
||||
|
||||
Else
|
||||
ClassLogger.Add("Error in Stream File - Error <> 0")
|
||||
Return False
|
||||
End If
|
||||
|
||||
End If
|
||||
Else
|
||||
If LogErrorsOnly = False Then ClassLogger.Add(" >> targetPath exisitiert NICHT", False)
|
||||
Return False
|
||||
End If
|
||||
Catch ex As Exception
|
||||
@@ -848,6 +888,15 @@ Public Class ClassWindream
|
||||
End Try
|
||||
|
||||
|
||||
End Function
|
||||
Public Shared Function WD_PATH_EXISTS(substring_path As String)
|
||||
Try
|
||||
Dim folder_exists = oSession.WMObjectExists(WMEntityFolder, substring_path, 0, 0)
|
||||
Return folder_exists
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add(String.Format("Unexpected error in WD_PATH_EXISTS ({0}): {1} ", substring_path, ex.Message), True)
|
||||
Return -10
|
||||
End Try
|
||||
End Function
|
||||
Public Shared Function Delete_WDFile(ByVal WD_File As String)
|
||||
Try
|
||||
@@ -2092,4 +2141,42 @@ Public Class ClassWindream
|
||||
End Try
|
||||
|
||||
End Function
|
||||
Public Shared Function Get_File_Rights(filepath As String)
|
||||
Try
|
||||
If IsNothing(oSession) Then
|
||||
If Init() = False Then
|
||||
MsgBox("Error in Init windream - check the log for further information!", MsgBoxStyle.Exclamation)
|
||||
Return Nothing
|
||||
End If
|
||||
End If
|
||||
|
||||
Dim oWMObject As WINDREAMLib.WMObject
|
||||
oWMObject = oSession.GetWMObjectByPath(WMEntityDocumentAndMap, filepath.Substring(2))
|
||||
Dim AccessRightsObject
|
||||
AccessRightsObject = oWMObject.GetWMObjectRelationByName(REL_Document_AccessRight)
|
||||
Dim _msg As String
|
||||
For Each aRightRelation In AccessRightsObject
|
||||
dwAccessRight = aRightRelation.GetVariableValue(COL_AccessRight_AccessRight) 'COL_AccessRight_AccessRight)
|
||||
Dim UserGroupRelation = aRightRelation.GetWMObjectRelationByName(REL_AccessRight_UserOrGroup)
|
||||
Dim UserOrGroup = UserGroupRelation.item(0).aName
|
||||
If UserOrGroup.ToString.ToLower.Contains(Environment.UserName.ToLower) Then
|
||||
If dwAccessRight And WMAccessRightRead Then
|
||||
_msg = "R"
|
||||
End If
|
||||
If dwAccessRight And WMAccessRightWrite Then
|
||||
_msg = _msg & "W"
|
||||
End If
|
||||
If dwAccessRight And WMAccessRightAdmin Then
|
||||
_msg = _msg & "A"
|
||||
End If
|
||||
End If
|
||||
|
||||
Next
|
||||
Return _msg
|
||||
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add("Unexpected Error in Get_File_Rights: " & ex.Message)
|
||||
Return Nothing
|
||||
End Try
|
||||
End Function
|
||||
End Class
|
||||
|
||||
Reference in New Issue
Block a user