This commit is contained in:
SchreiberM
2016-10-25 14:32:55 +02:00
parent 11ec67a434
commit 7e9ca7611c
5 changed files with 1461 additions and 1005 deletions

View File

@@ -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