This commit is contained in:
SchreiberM
2017-01-25 10:16:40 +01:00
parent 042f24e231
commit 64c99f80b9
43 changed files with 5067 additions and 2448 deletions

View File

@@ -42,7 +42,6 @@ Public Class ClassWindream
Public Shared oBrowser As New WMOBRWSLib.ServerBrowser
Public Shared oDokumentTypen As WINDREAMLib.WMObjects
Private oController As New WMOSearchController
Public Shared _DateiinWindream As String
Public Shared _WDObjekttyp As String
Private Shared aktWMObject As WINDREAMLib.WMObject
#End Region
@@ -573,17 +572,17 @@ Public Class ClassWindream
Const STREAM_BinaryObject = "BinaryObject"
If LogErrorsOnly = False Then ClassLogger.Add(" ...Stream_File wurde gestartet", False)
Dim endgültigerDateiname As String = ""
Dim windreamFilename 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)
'"Version-KZ entfernen
newfilename = newfilename.Replace("\\", "\")
endgültigerDateiname = newfilename.Substring(2)
If endgültigerDateiname.Contains("[%Version]") Then
endgültigerDateiname = endgültigerDateiname.Replace("[%Version]", "")
newfilename = endgültigerDateiname
windreamFilename = newfilename.Substring(2)
If windreamFilename.Contains("[%Version]") Then
windreamFilename = windreamFilename.Replace("[%Version]", "")
newfilename = windreamFilename
End If
If My.Computer.FileSystem.DirectoryExists(Zielverzeichnis) Then
@@ -640,6 +639,7 @@ Public Class ClassWindream
ClassLogger.Add(" >> Login on dms-Server failed", False)
' MsgBox("Login failed. ")
End If
oSession = Session
Const WMCOMEventWMSessionNeedIndex = 1
'windream Objekte erstellen ohne Indexierungs-Event
@@ -647,10 +647,10 @@ Public Class ClassWindream
'==================================================================
' check if files exist
'==================================================================
If LogErrorsOnly = False Then ClassLogger.Add(" ...ÜBERPRÜFTER DATEINAME => " & endgültigerDateiname, False)
If LogErrorsOnly = False Then ClassLogger.Add(" ...ÜBERPRÜFTER DATEINAME => " & windreamFilename, 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 = Session.WMObjectExists(WMEntityDocument, windreamFilename, 0, 0)
Err.Clear()
If wdFilexists = False Then
If LogErrorsOnly = False Then ClassLogger.Add(" ...Datei ist NICHT vorhanden, kann also einfach neu angelegt werden", False)
@@ -658,47 +658,53 @@ Public Class ClassWindream
'==================================================================
' create an object
'==================================================================
WMObject = Session.GetNewWMObjectFS(WMEntityDocument, endgültigerDateiname, WMObjectEditModeObject)
WMObject = Session.GetNewWMObjectFS(WMEntityDocument, windreamFilename, WMObjectEditModeObject)
If Err.Number > 0 Then
ClassLogger.Add(" FEHLER: WMObject konnte nicht erzeugt werden - Error: '" & Err.Description & "'")
'MsgBox(Err.Description)
End If
' MsgBox("Created file: " + endgültigerDateiname)
' MsgBox("Created file: " + windreamFilename)
Else
'endgültigerDateiname = \Brainpool - Geschäftsprozess\GI\DAGI_Digital Data[%Version].jpg
' wenn auf die Datei zugeriffen werden konnte ist sie bereits vorhanden -> Datum anhängen
If LogErrorsOnly = False Then ClassLogger.Add(" ...Es konnte zugegriffen werden -> DATEI IST BEREITS VORHANDEN", False)
'### Automatische Versionierung ###
Dim version As Integer = 2
Dim extension As String = Path.GetExtension(newfilename)
Dim Stammname As String = newfilename.Substring(0, newfilename.LastIndexOf(".")).Substring(3)
Dim neuername As String = newfilename.Substring(0, newfilename.LastIndexOf(".")).Substring(3)
Do While File.Exists(vWLaufwerk & ":\" & neuername & extension) = True
ClassLogger.Add(" >> Datei " & vWLaufwerk & ":\" & neuername & extension & " ist vorhanden - Versionieren....", False)
neuername = Stammname & VERSION_DELIMITER & version
endgültigerDateiname = "\" & neuername & extension
version = version + 1
Loop
WMObject = Session.GetNewWMObjectFS(WMEntityDocument, endgültigerDateiname, WMObjectEditModeObject)
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(WMEntityDocument, windreamFilename, 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 LogErrorsOnly = False Then ClassLogger.Add(" ...ENDGÜLTIGER DATEINAME => " & windreamFilename, False)
If WMObject IsNot Nothing Then
newfilename = vWLaufwerk & ":" & windreamFilename
' 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)
Delete_WDFile(windreamFilename)
Return False
' MsgBox(Err.Description)
End If
@@ -707,7 +713,7 @@ Public Class ClassWindream
If Err.Number > 0 Then
ClassLogger.Add(" Unexpected error in OpenStream - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Delete_WDFile(windreamFilename)
Return False
'MsgBox(Err.Description)
End If
@@ -717,7 +723,7 @@ Public Class ClassWindream
If Err.Number > 0 Then
ClassLogger.Add(" Unexpected error in Zuweisen aWMStream zu aFileIO - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Delete_WDFile(windreamFilename)
Return False
'MsgBox(Err.Description)
End If
@@ -726,7 +732,7 @@ Public Class ClassWindream
If Err.Number > 0 Then
ClassLogger.Add(" Unexpected error in FileIO.ImportOriginal(True) - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Delete_WDFile(windreamFilename)
Return False
' MsgBox(Err.Description)
End If
@@ -736,7 +742,7 @@ Public Class ClassWindream
If Err.Number > 0 Then
ClassLogger.Add(" Unexpected error in aWMStream.Close() - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Delete_WDFile(windreamFilename)
Return False
'MsgBox(Err.Description)
End If
@@ -745,7 +751,7 @@ Public Class ClassWindream
If Err.Number > 0 Then
ClassLogger.Add(" Unexpected error in WMObject.save - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Delete_WDFile(windreamFilename)
Return False
'MsgBox(Err.Description)
End If
@@ -755,37 +761,37 @@ Public Class ClassWindream
If Err.Number > 0 Then
ClassLogger.Add(" Unexpected error in WMObject.unlock - Datei wird wieder gelöscht - Error: '" & Err.Description & "'")
WMObject.Unlock()
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Delete_WDFile(windreamFilename)
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 info2 As New FileInfo(newfilename)
Dim length1 As Long = info2.Length
If LogErrorsOnly = False Then ClassLogger.Add(" ...Length der Zieldatei: " & length1.ToString, False)
If length1 > 0 And Err.Number = 0 Then
If length > 0 And Err.Number = 0 Then
Dim p As String
If endgültigerDateiname.StartsWith("\") Then
If endgültigerDateiname.StartsWith("\\") Then
p = endgültigerDateiname.Replace("\\", "\")
If windreamFilename.StartsWith("\") Then
If windreamFilename.StartsWith("\\") Then
p = windreamFilename.Replace("\\", "\")
Else
p = endgültigerDateiname
p = windreamFilename
End If
Else
p = "\" & endgültigerDateiname
p = "\" & windreamFilename
End If
_DateiinWindream = vWLaufwerk & ":" & p
ClassLogger.Add(" >> Datei '" & _DateiinWindream & "' wurde erfolgreich importiert!", False)
CURRENT_NEWFILENAME = vWLaufwerk & ":" & p
ClassLogger.Add(" >> Datei '" & CURRENT_NEWFILENAME & "' wurde erfolgreich importiert!", False)
aktWMObject = WMObject
CURRENT_NEWFILENAME = _DateiinWindream
Return True
Else
System.IO.File.Delete(vWLaufwerk & ":\" & endgültigerDateiname)
Delete_WDFile(windreamFilename)
Console.WriteLine(Err.Number.ToString)
ClassLogger.Add(" Unexpected error in Datei-Übertragen - FileLength ist 0, Übertragene Datei wurde gelöscht")
Return False
End If
Else
ClassLogger.Add(" Could not create a WMObject for file:'" & windreamFilename & "'")
Return False
End If
Else
@@ -794,6 +800,28 @@ Public Class ClassWindream
End If
End Function
Public Shared Function Delete_WDFile(ByVal WD_File As String)
Try
If Not WD_File.StartsWith("\") Then
WD_File = WD_File.Substring(2)
End If
Dim WMObject As WINDREAMLib.WMObject '= CreateObject("WINDREAMLib.WMObject") 'New WINDREAMLib.WMObject
Try
WMObject = oSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, WD_File) 'WINDREAMLib.WMEntity.WMEntityDocument
Catch ex As Exception
ClassLogger.Add(">> Could not create WMObject for file '" & WD_File & "' - so it is not existing", False)
Return False
End Try
If LogErrorsOnly = False Then ClassLogger.Add(" >> Deleting started - Object created", False)
WMObject.Delete()
Return True
Catch ex As Exception
MsgBox("Unexpected Error in Delete_WDFile: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
ClassLogger.Add("Unexpected Error in Delete_WDFile: " & ex.Message, False)
Return False
End Try
End Function
''' <summary>
''' Übergibt einer in windream gespeicherten Datei Indexwerte
''' </summary>