Add correct duplicate handling for indexed files

This commit is contained in:
Jonathan Jenne 2020-03-20 10:32:34 +01:00
parent 6f273fbea8
commit a8e6d2acd9
2 changed files with 123 additions and 96 deletions

View File

@ -38,12 +38,12 @@ Public Class ClassWindream
#Region "+++++ Variablen +++++" #Region "+++++ Variablen +++++"
Public Shared oConnect ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht) Public Shared oConnect ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht)
Public Shared oSession 'As WINDREAMLib.WMSession ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht) Public Shared _session 'As WINDREAMLib.WMSession ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht)
Public Shared oBrowser As New WMOBRWSLib.ServerBrowser Public Shared oBrowser As New WMOBRWSLib.ServerBrowser
Public Shared oDokumentTypen As WINDREAMLib.WMObjects Public Shared _DocumentTypes As WINDREAMLib.WMObjects
Private oController As New WMOSearchController Private _SearchController As New WMOSearchController
Public Shared _WDObjekttyp As String Public Shared _WDObjekttyp As String
Private Shared aktWMObject As WINDREAMLib.WMObject Private Shared _currentWMObject As WINDREAMLib.WMObject
#End Region #End Region
@ -71,13 +71,13 @@ Public Class ClassWindream
Dim ProfileName = wdfLocation.Substring(wdfLocation.LastIndexOf("\") + 1) Dim ProfileName = wdfLocation.Substring(wdfLocation.LastIndexOf("\") + 1)
Dim ProfilePath = wdfLocation.Substring(0, wdfLocation.Length - ProfileName.Length) Dim ProfilePath = wdfLocation.Substring(0, wdfLocation.Length - ProfileName.Length)
oController = New WMOSearchController _SearchController = New WMOSearchController
Me.oController.CheckSearchProfile(wdfLocation.ToLower) Me._SearchController.CheckSearchProfile(wdfLocation.ToLower)
Dim suchTyp = Me.oController.SearchProfileTargetProgID Dim suchTyp = Me._SearchController.SearchProfileTargetProgID
Dim ExSettings As Object Dim ExSettings As Object
Dim oSearch As Object Dim oSearch As Object
ExSettings = Me.oController.SearchProfileExSettings ExSettings = Me._SearchController.SearchProfileExSettings
If ExSettings = 0 Then ExSettings = 7 If ExSettings = 0 Then ExSettings = 7
Dim srchQuick As WMOSRCHLib.WMQuickSearch = CreateObject("WMOSrch.WMQuickSearch") Dim srchQuick As WMOSRCHLib.WMQuickSearch = CreateObject("WMOSrch.WMQuickSearch")
@ -195,7 +195,7 @@ Public Class ClassWindream
Try Try
Try Try
' Session-Objekt instanziieren und mit dem im Client ausgewählten Server belegen ' Session-Objekt instanziieren und mit dem im Client ausgewählten Server belegen
oSession = CreateObject("Windream.WMSession", GetCurrentServer) _session = CreateObject("Windream.WMSession", GetCurrentServer)
LOGGER.Info(" ...windream-Server: '" & GetCurrentServer() & "'") LOGGER.Info(" ...windream-Server: '" & GetCurrentServer() & "'")
' Connection-Objekt instanziieren ' Connection-Objekt instanziieren
oConnect = CreateObject("Windream.WMConnect") oConnect = CreateObject("Windream.WMConnect")
@ -224,8 +224,8 @@ Public Class ClassWindream
' oConnect.Password "windream" ' oConnect.Password "windream"
' Verbindung mit Session-Objekt (und dem ausgewählten Server) aufbauen ' Verbindung mit Session-Objekt (und dem ausgewählten Server) aufbauen
oConnect.LoginSession(oSession) oConnect.LoginSession(_session)
If oSession.aLoggedin = False Then If _session.aLoggedin = False Then
MsgBox("Es konnte keine Verbindung mit dem windream-Server hergestellt werden", MsgBoxStyle.Exclamation, "Verbindung konnte nicht hergestellt werden") MsgBox("Es konnte keine Verbindung mit dem windream-Server hergestellt werden", MsgBoxStyle.Exclamation, "Verbindung konnte nicht hergestellt werden")
Return False Return False
End If End If
@ -251,10 +251,10 @@ Public Class ClassWindream
'MsgBox(WMCtrl.WMServerName) 'MsgBox(WMCtrl.WMServerName)
Try Try
oSession.SwitchEvents(WMCOMEventWMSessionNeedIndex, False) _session.SwitchEvents(WMCOMEventWMSessionNeedIndex, False)
' der Parameter WMEntityDocument definiert, dass nur Dokumenttypen und keine ' der Parameter WMEntityDocument definiert, dass nur Dokumenttypen und keine
' Ordnertypen ausgelesen werden ' Ordnertypen ausgelesen werden
oDokumentTypen = oSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument) _DocumentTypes = _session.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument)
Catch ex As Exception Catch ex As Exception
Return False Return False
End Try End Try
@ -288,7 +288,7 @@ Public Class ClassWindream
''' <remarks></remarks> ''' <remarks></remarks>
Public Shared Function GetObjecttypesAsObjects() As WMObjects Public Shared Function GetObjecttypesAsObjects() As WMObjects
Try Try
Return oDokumentTypen Return _DocumentTypes
Catch ex As Exception Catch ex As Exception
MsgBox("Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Unexpected error inm Auslesen der Objekttypen") MsgBox("Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Unexpected error inm Auslesen der Objekttypen")
Return Nothing Return Nothing
@ -303,10 +303,10 @@ Public Class ClassWindream
Public Function GetObjecttypesAsStrings() As String() Public Function GetObjecttypesAsStrings() As String()
Try Try
Dim objektTypenStr(Me.oDokumentTypen.Count) As String Dim objektTypenStr(_DocumentTypes.Count) As String
For i As Integer = 0 To Me.oDokumentTypen.Count For i As Integer = 0 To _DocumentTypes.Count
objektTypenStr(i) = Me.oDokumentTypen.Item(i).aName objektTypenStr(i) = _DocumentTypes.Item(i).aName
Next Next
Return objektTypenStr Return objektTypenStr
@ -319,7 +319,7 @@ Public Class ClassWindream
End Function End Function
Public Function GetTypeOfIndex(ByVal indexname As String) As Integer Public Function GetTypeOfIndex(ByVal indexname As String) As Integer
Try Try
Dim oAttribute = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname) Dim oAttribute = _session.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname)
Dim vType = oAttribute.getVariableValue("dwAttrType") Dim vType = oAttribute.getVariableValue("dwAttrType")
Return vType Return vType
Catch ex As Exception Catch ex As Exception
@ -329,7 +329,7 @@ Public Class ClassWindream
Public Shared Function GetSystemIndices(ByVal name As String) Public Shared Function GetSystemIndices(ByVal name As String)
Dim oObjectType As WMObject Dim oObjectType As WMObject
' den Objekttyp laden ' den Objekttyp laden
oObjectType = oSession.GetWMObjectByName(WMEntityObjectType, name) oObjectType = _session.GetWMObjectByName(WMEntityObjectType, name)
Dim msg As String Dim msg As String
@ -345,7 +345,7 @@ Public Class ClassWindream
Public Shared Function GetTypIndexNames(ByVal name As String) Public Shared Function GetTypIndexNames(ByVal name As String)
Dim oObjectType As WMObject Dim oObjectType As WMObject
' den Objekttyp laden ' den Objekttyp laden
oObjectType = oSession.GetWMObjectByName(WMEntityObjectType, name) oObjectType = _session.GetWMObjectByName(WMEntityObjectType, name)
Dim msg As String Dim msg As String
@ -361,7 +361,7 @@ Public Class ClassWindream
''' <summary> ''' <summary>
''' Liefert alle Indexe eines Objekttypen. ''' Liefert alle Indexe eines Objekttypen.
''' </summary> ''' </summary>
''' <param name="name">Name des Objekttyps</param> ''' <param name="Objecttype_name">Name des Objekttyps</param>
''' <returns>Array mit allen Objekttyp zugeordneten Indexen als String</returns> ''' <returns>Array mit allen Objekttyp zugeordneten Indexen als String</returns>
''' <remarks></remarks> ''' <remarks></remarks>
Public Shared Function GetIndicesByObjecttype(ByVal Objecttype_name As String) As String() Public Shared Function GetIndicesByObjecttype(ByVal Objecttype_name As String) As String()
@ -373,7 +373,7 @@ Public Class ClassWindream
Dim oRelProperties As WMObjectRelationClass Dim oRelProperties As WMObjectRelationClass
' den Objekttyp laden ' den Objekttyp laden
oObjectType = oSession.GetWMObjectByName(WMEntityObjectType, Objecttype_name) oObjectType = _session.GetWMObjectByName(WMEntityObjectType, Objecttype_name)
' Beziehung zu Indizes des Objekttyp auslesen ' Beziehung zu Indizes des Objekttyp auslesen
oIndexAttributes = oObjectType.GetWMObjectRelationByName("TypeAttributes") oIndexAttributes = oObjectType.GetWMObjectRelationByName("TypeAttributes")
@ -415,7 +415,7 @@ Public Class ClassWindream
Public Function GetObjecttypeByName(ByVal objekttypName As String) As WMObject Public Function GetObjecttypeByName(ByVal objekttypName As String) As WMObject
Try Try
' alle Objekttypen auslesen ' alle Objekttypen auslesen
Dim oObjectTypes As WMObjects = Me.oSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument) Dim oObjectTypes As WMObjects = _session.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument)
' alle Objekttypen durchlaufen und nach dem mit dem angegebenen Namen suchen ' alle Objekttypen durchlaufen und nach dem mit dem angegebenen Namen suchen
For Each oObjectType As WMObject In oObjectTypes For Each oObjectType As WMObject In oObjectTypes
@ -467,7 +467,7 @@ Public Class ClassWindream
''' <remarks></remarks> ''' <remarks></remarks>
Public Shared Function IsLoggedIn() As Boolean Public Shared Function IsLoggedIn() As Boolean
Try Try
Return oSession.aLoggedin Return _session.aLoggedin
Catch ex As Exception Catch ex As Exception
MsgBox("Es konnte nicht erfolgreich geprüft werden, ob das Programm am windream-Server angemeldted ist." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Unexpected error in Loggedin-Prüfung") MsgBox("Es konnte nicht erfolgreich geprüft werden, ob das Programm am windream-Server angemeldted ist." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Unexpected error in Loggedin-Prüfung")
End Try End Try
@ -527,7 +527,7 @@ Public Class ClassWindream
'Dim oAttribute = Me.oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname) 'Dim oAttribute = Me.oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname)
'Dim vType = oAttribute.getVariableValue("vItems") 'Dim vType = oAttribute.getVariableValue("vItems")
'Return vType 'Return vType
Dim oChoiceList = oSession.GetWMObjectByName(WMEntityChoiceList, _auswahlliste) Dim oChoiceList = _session.GetWMObjectByName(WMEntityChoiceList, _auswahlliste)
If Err.Number = 0 And TypeName(oChoiceList) <> "Nothing" Then If Err.Number = 0 And TypeName(oChoiceList) <> "Nothing" Then
Dim Values = oChoiceList Dim Values = oChoiceList
Values = oChoiceList.GetVariableValue("vItems") Values = oChoiceList.GetVariableValue("vItems")
@ -558,41 +558,41 @@ Public Class ClassWindream
End Try End Try
End Function End Function
#End Region #End Region
Public Shared Function Stream_File(ByVal filenameQuelle As String, ByVal newfilename As String) Public Shared Function Stream_File(ByVal SourceFilePath As String, ByVal NewFileName As String)
On Error Resume Next On Error Resume Next
aktWMObject = Nothing _currentWMObject = Nothing
Dim Zielverzeichnis As String = Path.GetDirectoryName(newfilename) Dim oDestination As String = Path.GetDirectoryName(NewFileName)
If My.Computer.FileSystem.DirectoryExists(Zielverzeichnis) = False Then If My.Computer.FileSystem.DirectoryExists(oDestination) = False Then
My.Computer.FileSystem.CreateDirectory(Zielverzeichnis) My.Computer.FileSystem.CreateDirectory(oDestination)
LOGGER.Info(" - Zielverzeichnis neu erzeugt!") LOGGER.Info(" - Zielverzeichnis neu erzeugt!")
End If End If
Const STREAM_BinaryObject = "BinaryObject" Const STREAM_BinaryObject = "BinaryObject"
LOGGER.Info(" ...Stream_File wurde gestartet") LOGGER.Info(" ...Stream_File wurde gestartet")
Dim windreamFilename As String = "" Dim oWindreamFilename As String = ""
' Objekt für Datei und Zielverzeichnis anlegen ' Objekt für Datei und Zielverzeichnis anlegen
Dim Quelldatei_Name As String = Path.GetFileName(filenameQuelle) Dim oSourceFilename As String = Path.GetFileName(SourceFilePath)
LOGGER.Info(" ...Quelldatei gelesen") LOGGER.Info(" ...Quelldatei gelesen")
'"Version-KZ entfernen '"Version-KZ entfernen
newfilename = newfilename.Replace("\\", "\") NewFileName = NewFileName.Replace("\\", "\")
windreamFilename = newfilename.Substring(2) oWindreamFilename = NewFileName.Substring(2)
If windreamFilename.Contains("[%Version]") Then If oWindreamFilename.Contains("[%Version]") Then
windreamFilename = windreamFilename.Replace("[%Version]", "") oWindreamFilename = oWindreamFilename.Replace("[%Version]", "")
newfilename = windreamFilename NewFileName = oWindreamFilename
End If End If
If My.Computer.FileSystem.DirectoryExists(Zielverzeichnis) 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
Dim dvr As New DriveInfo(vWLaufwerk & ":") Dim oDriveInfo As New DriveInfo(vWLaufwerk & ":")
Dim freeSpace = dvr.TotalFreeSpace Dim oFreeSpace = oDriveInfo.TotalFreeSpace
Dim info As New FileInfo(filenameQuelle) Dim oFileInfo As New FileInfo(SourceFilePath)
' Get length of the file. ' Get length of the file.
Dim length As Long = info.Length Dim oFileLength As Long = oFileInfo.Length
If freeSpace < length Then If oFreeSpace < oFileLength Then
If USER_LANGUAGE = "de-DE" Then If USER_LANGUAGE = "de-DE" Then
MsgBox("Auf dem Zielverzeichnis ist nicht genug Speicherplatz zum Übertragen frei.", MsgBoxStyle.Exclamation, "Nicht genug Speicherplatz") MsgBox("Auf dem Zielverzeichnis ist nicht genug Speicherplatz zum Übertragen frei.", MsgBoxStyle.Exclamation, "Nicht genug Speicherplatz")
Else Else
@ -602,7 +602,7 @@ Public Class ClassWindream
Return -10 Return -10
End If End If
LOGGER.Info(" ...Datei kopieren von '" & filenameQuelle & "' nach '" & newfilename & "'.") LOGGER.Info(" ...Datei kopieren von '" & SourceFilePath & "' nach '" & NewFileName & "'.")
Dim Connect Dim Connect
Dim Session Dim Session
Dim WMObject Dim WMObject
@ -642,7 +642,7 @@ Public Class ClassWindream
LOGGER.Info(" >> Login on dms-Server failed") LOGGER.Info(" >> Login on dms-Server failed")
' MsgBox("Login failed. ") ' MsgBox("Login failed. ")
End If End If
oSession = Session _session = Session
Const WMCOMEventWMSessionNeedIndex = 1 Const WMCOMEventWMSessionNeedIndex = 1
'windream Objekte erstellen ohne Indexierungs-Event 'windream Objekte erstellen ohne Indexierungs-Event
@ -650,10 +650,10 @@ Public Class ClassWindream
'================================================================== '==================================================================
' check if files exist ' check if files exist
'================================================================== '==================================================================
LOGGER.Info(" ...ÜBERPRÜFTER DATEINAME => " & windreamFilename) LOGGER.Info(" ...ÜBERPRÜFTER DATEINAME => " & oWindreamFilename)
Dim wdFilexists As Boolean Dim wdFilexists As Boolean
LOGGER.Info(" ...Versuch auf die Datei in W: zuzugreifen und zu sperren...") LOGGER.Info(" ...Versuch auf die Datei in W: zuzugreifen und zu sperren...")
wdFilexists = Session.WMObjectExists(WMEntityDocument, windreamFilename, 0, 0) wdFilexists = Session.WMObjectExists(WMEntityDocument, oWindreamFilename, 0, 0)
Err.Clear() Err.Clear()
If wdFilexists = False Then If wdFilexists = False Then
LOGGER.Info(" ...Datei ist NICHT vorhanden, kann also einfach neu angelegt werden") LOGGER.Info(" ...Datei ist NICHT vorhanden, kann also einfach neu angelegt werden")
@ -661,7 +661,7 @@ Public Class ClassWindream
'================================================================== '==================================================================
' create an object ' create an object
'================================================================== '==================================================================
WMObject = Session.GetNewWMObjectFS(WMEntityDocument, windreamFilename, WMObjectEditModeObject) 'WMEntityDocument, windreamFilename, WMObjectEditModeObject WMObject = Session.GetNewWMObjectFS(WMEntityDocument, oWindreamFilename, WMObjectEditModeObject) 'WMEntityDocument, windreamFilename, WMObjectEditModeObject
If Err.Number > 0 Then If Err.Number > 0 Then
LOGGER.Info(" FEHLER: WMObject konnte nicht erzeugt werden - Error: '" & Err.Description & "'") LOGGER.Info(" FEHLER: WMObject konnte nicht erzeugt werden - Error: '" & Err.Description & "'")
'MsgBox(Err.Description) 'MsgBox(Err.Description)
@ -670,43 +670,70 @@ Public Class ClassWindream
Else Else
' wenn auf die Datei zugeriffen werden konnte ist sie bereits vorhanden -> Datum anhängen ' wenn auf die Datei zugeriffen werden konnte ist sie bereits vorhanden -> Datum anhängen
LOGGER.Info(" ...Es konnte zugegriffen werden -> DATEI IST BEREITS VORHANDEN") LOGGER.Info(" ...Es konnte zugegriffen werden -> DATEI IST BEREITS VORHANDEN")
If CURRENT_DOKART_DUPLICATE_HANDLING = "Default" Or CURRENT_DOKART_DUPLICATE_HANDLING = "Question" Then
''########## Select Case CURRENT_DOKART_DUPLICATE_HANDLING
Dim msg = String.Format("Eine Datei mit identischem Namen " & vbNewLine & "'{0}'" & vbNewLine & "existiert bereits!" & vbNewLine & "Wollen Sie die bestehende Datei ersetzen?", newfilename) Case "New version"
LOGGER.Info("Creating new version of file [{0}]", NewFileName)
oWindreamFilename = ClassFilehandle.Versionierung_Datei(NewFileName).ToString.Substring(2)
Case "Question"
Dim oMessage = $"Eine Datei mit identischem Namen {vbNewLine}'{NewFileName}'{vbNewLine}existiert bereits!{vbNewLine}Wollen Sie die bestehende Datei ersetzen?"
If USER_LANGUAGE <> "de-DE" Then If USER_LANGUAGE <> "de-DE" Then
msg = "There is already a file with the same name! Would You like to replace the file?" oMessage = $"There is already a file with the name {NewFileName}!{vbNewLine}Would You like to replace the file?"
End If End If
Dim result As MsgBoxResult
result = MessageBox.Show(msg, "File alredy exists:", MessageBoxButtons.YesNo, MessageBoxIcon.Question) Dim oResult = MessageBox.Show(oMessage, "File exists", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If result = MsgBoxResult.No Then
windreamFilename = ClassFilehandle.Versionierung_Datei(newfilename).ToString.Substring(2) If oResult = DialogResult.No Then
oWindreamFilename = ClassFilehandle.Versionierung_Datei(NewFileName).ToString.Substring(2)
Else Else
If Delete_WDFile(windreamFilename) = False Then If Delete_WDFile(oWindreamFilename) = False Then
Return False Return False
End If End If
End If End If
ElseIf CURRENT_DOKART_DUPLICATE_HANDLING = "New version" Then Case Else
windreamFilename = ClassFilehandle.Versionierung_Datei(newfilename).ToString.Substring(2) If Delete_WDFile(oWindreamFilename) = False Then
Return False
End If End If
WMObject = Session.GetNewWMObjectFS(1, windreamFilename, 31) 'WMEntityDocument, windreamFilename, WMObjectEditModeObject End Select
'If CURRENT_DOKART_DUPLICATE_HANDLING = "Default" Or CURRENT_DOKART_DUPLICATE_HANDLING = "Question" Then
' ''##########
' Dim msg = String.Format("Eine Datei mit identischem Namen " & vbNewLine & "'{0}'" & vbNewLine & "existiert bereits!" & vbNewLine & "Wollen Sie die bestehende Datei ersetzen?", newfilename)
' If USER_LANGUAGE <> "de-DE" Then
' msg = "There is already a file with the same name! Would You like to replace the file?"
' End If
' Dim result As MsgBoxResult
' result = MessageBox.Show(msg, "File alredy exists:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
' If result = MsgBoxResult.No Then
' windreamFilename = ClassFilehandle.Versionierung_Datei(newfilename).ToString.Substring(2)
' Else
' If Delete_WDFile(windreamFilename) = False Then
' Return False
' End If
' End If
'ElseIf CURRENT_DOKART_DUPLICATE_HANDLING = "New version" Then
' windreamFilename = ClassFilehandle.Versionierung_Datei(newfilename).ToString.Substring(2)
'End If
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 End If
LOGGER.Info(" ...WMObject zugewiesen") LOGGER.Info(" ...WMObject zugewiesen")
End If End If
LOGGER.Info(" ...ENDGÜLTIGER DATEINAME => " & windreamFilename) LOGGER.Info(" ...ENDGÜLTIGER DATEINAME => " & oWindreamFilename)
If WMObject IsNot Nothing Then If WMObject IsNot Nothing Then
newfilename = vWLaufwerk & ":" & windreamFilename 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 = filenameQuelle 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(windreamFilename) Delete_WDFile(oWindreamFilename)
Return False Return False
' MsgBox(Err.Description) ' MsgBox(Err.Description)
@ -716,7 +743,7 @@ Public Class ClassWindream
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(windreamFilename) Delete_WDFile(oWindreamFilename)
Return False Return False
'MsgBox(Err.Description) 'MsgBox(Err.Description)
End If End If
@ -726,7 +753,7 @@ Public Class ClassWindream
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(windreamFilename) Delete_WDFile(oWindreamFilename)
Return False Return False
'MsgBox(Err.Description) 'MsgBox(Err.Description)
End If End If
@ -735,7 +762,7 @@ Public Class ClassWindream
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(windreamFilename) Delete_WDFile(oWindreamFilename)
Return False Return False
' MsgBox(Err.Description) ' MsgBox(Err.Description)
End If End If
@ -745,7 +772,7 @@ Public Class ClassWindream
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(windreamFilename) Delete_WDFile(oWindreamFilename)
Return False Return False
'MsgBox(Err.Description) 'MsgBox(Err.Description)
End If End If
@ -754,7 +781,7 @@ Public Class ClassWindream
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(windreamFilename) Delete_WDFile(oWindreamFilename)
Return False Return False
'MsgBox(Err.Description) 'MsgBox(Err.Description)
End If End If
@ -764,37 +791,37 @@ Public Class ClassWindream
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(windreamFilename) 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(newfilename) Dim info2 As New FileInfo(NewFileName)
Dim length1 As Long = info2.Length Dim length1 As Long = info2.Length
LOGGER.Info(" ...Length der Zieldatei: " & length1.ToString) LOGGER.Info(" ...Length der Zieldatei: " & length1.ToString)
If length > 0 And Err.Number = 0 Then If oFileLength > 0 And Err.Number = 0 Then
Dim p As String Dim p As String
If windreamFilename.StartsWith("\") Then If oWindreamFilename.StartsWith("\") Then
If windreamFilename.StartsWith("\\") Then If oWindreamFilename.StartsWith("\\") Then
p = windreamFilename.Replace("\\", "\") p = oWindreamFilename.Replace("\\", "\")
Else Else
p = windreamFilename p = oWindreamFilename
End If End If
Else Else
p = "\" & windreamFilename p = "\" & oWindreamFilename
End If End If
CURRENT_NEWFILENAME = vWLaufwerk & ":" & p CURRENT_NEWFILENAME = vWLaufwerk & ":" & p
LOGGER.Info(" >> Datei '" & CURRENT_NEWFILENAME & "' wurde erfolgreich importiert!") LOGGER.Info(" >> Datei '" & CURRENT_NEWFILENAME & "' wurde erfolgreich importiert!")
aktWMObject = WMObject _currentWMObject = WMObject
Return True Return True
Else Else
Delete_WDFile(windreamFilename) Delete_WDFile(oWindreamFilename)
Console.WriteLine(Err.Number.ToString) Console.WriteLine(Err.Number.ToString)
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 End If
Else Else
LOGGER.Info(" Could not create a WMObject for file:'" & windreamFilename) LOGGER.Info(" Could not create a WMObject for file:'" & oWindreamFilename)
If Not Err() Is Nothing Then If Not Err() Is Nothing Then
If Not Err.Description Is Nothing Then If Not Err.Description Is Nothing Then
LOGGER.Info(Err.Description) LOGGER.Info(Err.Description)
@ -815,7 +842,7 @@ Public Class ClassWindream
End If End If
Dim WMObject As WINDREAMLib.WMObject '= CreateObject("WINDREAMLib.WMObject") 'New WINDREAMLib.WMObject Dim WMObject As WINDREAMLib.WMObject '= CreateObject("WINDREAMLib.WMObject") 'New WINDREAMLib.WMObject
Try Try
WMObject = oSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, WD_File) 'WINDREAMLib.WMEntity.WMEntityDocument WMObject = _session.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, WD_File) 'WINDREAMLib.WMEntity.WMEntityDocument
Catch ex As Exception Catch ex As Exception
LOGGER.Info(">> Could not create WMObject for file '" & WD_File & "' - so it is not existing") LOGGER.Info(">> Could not create WMObject for file '" & WD_File & "' - so it is not existing")
LOGGER.Error(ex.Message) LOGGER.Error(ex.Message)
@ -848,7 +875,7 @@ Public Class ClassWindream
' den Dokumenttyp schreiben ' den Dokumenttyp schreiben
LOGGER.Info(" ## Indexieren wird gestartet ##") LOGGER.Info(" ## Indexieren wird gestartet ##")
' ein windream-Objekt der Datei anlegen ' ein windream-Objekt der Datei anlegen
WMObject = aktWMObject 'oSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, WD_File) WMObject = _currentWMObject 'oSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, WD_File)
Try Try
LOGGER.Info(" ...Datei wird gesperrt") LOGGER.Info(" ...Datei wird gesperrt")
' die Datei sperren ' die Datei sperren
@ -873,7 +900,7 @@ Public Class ClassWindream
If WMObject.aObjectType.aName = "Standard" Then If WMObject.aObjectType.aName = "Standard" Then
' ihr den entsprechenden Dokumenttyp zuweisen ' ihr den entsprechenden Dokumenttyp zuweisen
WMObject.aObjectType = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityObjectType, _WDObjekttyp) WMObject.aObjectType = _session.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityObjectType, _WDObjekttyp)
' WMObject.aObjectType = Me.selectedProfile.Dokumenttyp ' WMObject.aObjectType = Me.selectedProfile.Dokumenttyp
LOGGER.Info(" ...Objekttyp wurde gesetzt") LOGGER.Info(" ...Objekttyp wurde gesetzt")
Else Else
@ -963,7 +990,7 @@ Public Class ClassWindream
' wenn der Datei noch kein Dokumenttyp zugewiesen wurde ' wenn der Datei noch kein Dokumenttyp zugewiesen wurde
If oDocument.aObjectType.aName <> _WDObjekttyp Then If oDocument.aObjectType.aName <> _WDObjekttyp Then
' ihr den entsprechenden Dokumenttyp zuweisen ' ihr den entsprechenden Dokumenttyp zuweisen
oDocument.aObjectType = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityObjectType, _WDObjekttyp) oDocument.aObjectType = _session.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityObjectType, _WDObjekttyp)
' WMObject.aObjectType = Me.selectedProfile.Dokumenttyp ' WMObject.aObjectType = Me.selectedProfile.Dokumenttyp
LOGGER.Info(" ...Objekttyp '" & oDocument.aObjectType.aName & "' wurde in '" & _WDObjekttyp & "' geändert.") LOGGER.Info(" ...Objekttyp '" & oDocument.aObjectType.aName & "' wurde in '" & _WDObjekttyp & "' geändert.")
Else Else
@ -986,7 +1013,7 @@ Public Class ClassWindream
LOGGER.Info(" >> Indexierung von Index '" & indexname & "'") LOGGER.Info(" >> Indexierung von Index '" & indexname & "'")
End If End If
' das entsprechende Attribut aus windream auslesen ' das entsprechende Attribut aus windream auslesen
Dim oAttribute = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, Indizes(i)) Dim oAttribute = _session.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, Indizes(i))
' den Variablentyp (String, Integer, ...) auslesen ' den Variablentyp (String, Integer, ...) auslesen
Dim vType = oAttribute.getVariableValue("dwAttrType") Dim vType = oAttribute.getVariableValue("dwAttrType")
' wenn in aValues an Position i ein Wert steht ' wenn in aValues an Position i ein Wert steht
@ -1461,7 +1488,7 @@ Public Class ClassWindream
Loop Loop
' wenn die Datei existiert ' wenn die Datei existiert
If fileExists Then If fileExists Then
WMObject = oSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, filenameZiel) WMObject = _session.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, filenameZiel)
' eine Variable für den umgewandelten Indexwert anlegen (kein Typ, da noch unklar ist was reingeschrieben wird) ' eine Variable für den umgewandelten Indexwert anlegen (kein Typ, da noch unklar ist was reingeschrieben wird)
'Dim convertValue = Nothing 'Dim convertValue = Nothing
@ -1472,7 +1499,7 @@ Public Class ClassWindream
Try Try
' ein windream-Objekt der Datei anlegen ' ein windream-Objekt der Datei anlegen
WMObject = oSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, filenameZiel) WMObject = _session.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, filenameZiel)
If LogErrorsOnly = False Then If LogErrorsOnly = False Then
LOGGER.Info(" - windream-Objekt der Datei erzeugt") LOGGER.Info(" - windream-Objekt der Datei erzeugt")
LOGGER.Info(" - Ziel: W:\" & filenameZiel) LOGGER.Info(" - Ziel: W:\" & filenameZiel)
@ -1492,7 +1519,7 @@ Public Class ClassWindream
' wenn der Datei noch kein Dokumenttyp zugewiesen wurde ' wenn der Datei noch kein Dokumenttyp zugewiesen wurde
If WMObject.aObjectType.aName = "Standard" Then If WMObject.aObjectType.aName = "Standard" Then
' ihr den entsprechenden Dokumenttyp zuweisen ' ihr den entsprechenden Dokumenttyp zuweisen
WMObject.aObjectType = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityObjectType, _WDObjekttyp) WMObject.aObjectType = _session.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityObjectType, _WDObjekttyp)
' WMObject.aObjectType = Me.selectedProfile.Dokumenttyp ' WMObject.aObjectType = Me.selectedProfile.Dokumenttyp
End If End If
@ -1873,7 +1900,7 @@ Public Class ClassWindream
''' <remarks></remarks> ''' <remarks></remarks>
Public Shared Function GetTypeOfIndexAsIntByName(ByVal indexname As String) As Integer Public Shared Function GetTypeOfIndexAsIntByName(ByVal indexname As String) As Integer
Try Try
Dim oAttribute = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname) Dim oAttribute = _session.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname)
Dim vType = oAttribute.getVariableValue("dwAttrType") Dim vType = oAttribute.getVariableValue("dwAttrType")
Return vType Return vType
Catch ex As Exception Catch ex As Exception
@ -1895,7 +1922,7 @@ Public Class ClassWindream
Return input Return input
Catch ex As Exception Catch ex As Exception
LOGGER.Info("Fehler in CheckIndexValue: " & ex.Message) LOGGER.Info("Fehler in CheckIndexValue: " & ex.Message)
LOGGER.Error(ex.message) LOGGER.Error(ex.Message)
Return Nothing Return Nothing
End Try End Try

View File

@ -2209,7 +2209,7 @@ Public Class frmIndex
End If End If
If exp2WD = True Then If exp2WD = True Then
'Prüfen ob Session da ist - wenn nicht nochmal neu initiieren 'Prüfen ob Session da ist - wenn nicht nochmal neu initiieren
If ClassWindream.oSession Is Nothing Then If ClassWindream._session Is Nothing Then
ClassWindream.Init() ClassWindream.Init()
End If End If
'Kein Fehler in Export2windream 'Kein Fehler in Export2windream