309 lines
18 KiB
VB.net
309 lines
18 KiB
VB.net
Imports System.IO
|
|
|
|
Public Class ClassImport_Windream
|
|
Public Shared Function Import_File(QuellDatei_Path As String, DOCTYPE_ID As Integer)
|
|
Try
|
|
Dim err As Boolean = False
|
|
CURRENT_FILENAME = QuellDatei_Path
|
|
Dim DT_DOCTYPE As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBDD_DOKUMENTART WHERE GUID = " & DOCTYPE_ID)
|
|
If Not IsNothing(DT_DOCTYPE) Then
|
|
Dim Targetpath As String = DT_DOCTYPE.Rows(0).Item("ZIEL_PFAD")
|
|
Dim Dokart As String = DT_DOCTYPE.Rows(0).Item("BEZEICHNUNG")
|
|
ClassWindream._WDObjekttyp = DT_DOCTYPE.Rows(0).Item("OBJEKTTYP")
|
|
|
|
'Den Namen der Dokumentart generieren
|
|
If ClassImport_Windream.Name_Generieren(DOCTYPE_ID) = False Then
|
|
err = True
|
|
Return False
|
|
End If
|
|
|
|
'Die Datei nach windream importieren
|
|
Dim streamresult = ClassWindream.Stream_File(QuellDatei_Path, Targetpath)
|
|
If streamresult = True Then
|
|
Dim sql = "SELECT * FROM TBDD_INDEX_AUTOM WHERE DOCTYPE_ID = " & DOCTYPE_ID
|
|
Dim dt As DataTable = ClassDatabase.Return_Datatable(sql)
|
|
Dim indexierung_erfolgreich As Boolean = False
|
|
If dt Is Nothing = False Then
|
|
If dt.Rows.Count > 0 Then
|
|
Dim Count As Integer = 0
|
|
For Each row As DataRow In dt.Rows
|
|
Dim indexname = row.Item("INDEXNAME").ToString
|
|
Dim idxvalue = row.Item("VALUE")
|
|
If idxvalue.ToString.StartsWith("@") Then
|
|
Select Case idxvalue.ToString.ToUpper
|
|
Case "@RECORD-ID"
|
|
idxvalue = idxvalue.ToString.Replace("@Record-ID", CURRENT_RECORD_ID)
|
|
Case "@DOKART"
|
|
idxvalue = idxvalue.ToString.Replace("@Dokart", Dokart)
|
|
End Select
|
|
End If
|
|
If LogErrorsOnly = False Then ClassLogger.Add(">> Indexvalue: " & idxvalue.ToString, False)
|
|
Count += 1
|
|
indexierung_erfolgreich = ClassWindream.DateiIndexieren(CURRENT_FILEIN_WD, indexname, idxvalue)
|
|
If indexierung_erfolgreich = False Then
|
|
MsgBox("Unexpected Error in indexing file - See log", MsgBoxStyle.Critical)
|
|
err = True
|
|
Exit For
|
|
End If
|
|
'ByVal WD_File As String, ByVal _Indexname As String, ByVal _Value As String
|
|
Next
|
|
If err = True Then
|
|
Return False
|
|
End If
|
|
'den Entity-Key auslesen
|
|
sql = "Select Top 1 * from TBPMO_WD_OBJECTTYPE where Upper(object_type) = Upper('" & ClassWindream._WDObjekttyp & "')"
|
|
dt = ClassDatabase.Return_Datatable(sql)
|
|
If Not dt Is Nothing Then
|
|
If dt.Rows.Count = 1 Then
|
|
Dim indexname = dt.Rows(0).Item("IDXNAME_ENTITYID").ToString
|
|
Dim idxvalue = CURRENT_FORM_ID
|
|
If LogErrorsOnly = False Then ClassLogger.Add(">> Entity-ID: " & idxvalue.ToString, False)
|
|
indexierung_erfolgreich = ClassWindream.DateiIndexieren(CURRENT_FILEIN_WD, indexname, idxvalue)
|
|
If indexierung_erfolgreich = False Then
|
|
err = True
|
|
MsgBox("Unexpected Error in indexing file Entity - See log", MsgBoxStyle.Critical)
|
|
Return False
|
|
End If
|
|
indexname = dt.Rows(0).Item("IDXNAME_PARENTID").ToString
|
|
idxvalue = CURRENT_PARENTID
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" - Parent-ID: " & idxvalue.ToString, False)
|
|
indexierung_erfolgreich = ClassWindream.DateiIndexieren(CURRENT_FILEIN_WD, indexname, idxvalue)
|
|
If indexierung_erfolgreich = False Then
|
|
err = True
|
|
MsgBox("Unexpected Error in indexing file Parent-ID - See log", MsgBoxStyle.Critical)
|
|
Return False
|
|
End If
|
|
End If
|
|
End If
|
|
If indexierung_erfolgreich = True Then
|
|
Return True
|
|
Else
|
|
MsgBox("Es gab ein Problem bei der Indexierung der Datei. Bitte prüfen sie das Log!", MsgBoxStyle.Exclamation, "Achtung:")
|
|
Return False
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
Else
|
|
Return False
|
|
End If
|
|
|
|
|
|
|
|
Catch ex As Exception
|
|
MsgBox("Unexpected error in Import_File ClassImport_windream: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
Return False
|
|
End Try
|
|
|
|
End Function
|
|
|
|
Public Shared Function Name_Generieren(DocTypeID As Integer)
|
|
Try
|
|
Dim FILE_DELIMITER, VERSION_DELIMITER, _WDOBJECTTYPE, _NewFileString As String
|
|
Dim sql As String = "select VERSION_DELIMITER, FILE_DELIMITER FROM TBDD_MODULES where UPPER(NAME) = UPPER('Global-Indexer')"
|
|
Dim DT1 As DataTable = ClassDatabase.Return_Datatable(sql)
|
|
FILE_DELIMITER = DT1.Rows(0).Item("FILE_DELIMITER")
|
|
VERSION_DELIMITER = DT1.Rows(0).Item("VERSION_DELIMITER")
|
|
|
|
Dim err As Boolean = False
|
|
Dim folder_Created As Boolean = False
|
|
Dim Zielordner As String
|
|
Dim extension As String = Path.GetExtension(CURRENT_FILENAME)
|
|
Dim DT As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBDD_DOKUMENTART WHERE GUID = " & DocTypeID)
|
|
'sql_history_INSERT_INTO = "INSERT INTO TBGI_HISTORY (FILENAME_ORIGINAL,FILENAME_NEW"
|
|
'sql_history_Index_Values = ""
|
|
Dim AnzahlIndexe As Integer = 1
|
|
_WDOBJECTTYPE = DT.Rows(0).Item("OBJEKTTYP")
|
|
If folder_Created = False Then
|
|
' Den Zielordner erstellen
|
|
Zielordner = DT.Rows(0).Item("ZIEL_PFAD")
|
|
If Directory.Exists(Zielordner) = False Then
|
|
'Try to create the directory.
|
|
Directory.CreateDirectory(Zielordner)
|
|
End If
|
|
folder_Created = True
|
|
End If
|
|
'####
|
|
' Regulären Ausdruck zum Auslesen der Indexe definieren
|
|
Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
|
|
'Namenkonvention laden
|
|
Dim NameConv = ClassDatabase.Execute_Scalar("SELECT TOP 1 NAME_CONVENTION FROM TBPMO_WD_FORMVIEW_DOKTYPES WHERE DOCTYPE_ID = " & DocTypeID & " AND FORMVIEW_ID = " & CURRENT_FORMVIEW_ID, True)
|
|
If IsDBNull(NameConv) Then
|
|
ClassLogger.Add(">> Achtung: Namenskonvention is DBNull", False)
|
|
NameConv = Path.GetFileNameWithoutExtension(CURRENT_FILENAME)
|
|
ElseIf NameConv = String.Empty Then
|
|
ClassLogger.Add(">> Achtung: Namenskonvention is String empty", False)
|
|
NameConv = Path.GetFileNameWithoutExtension(CURRENT_FILENAME)
|
|
End If
|
|
'schonmal den gesamten Pfad laden
|
|
Dim DATEINAME As String = Zielordner & "\" & NameConv
|
|
If LogErrorsOnly = False Then ClassLogger.Add(">> DATEINAME: " & DATEINAME, False)
|
|
|
|
' einen Regulären Ausdruck laden
|
|
Dim regulärerAusdruck As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(preg)
|
|
' die Vorkommen im SQL-String auslesen
|
|
Dim elemente As System.Text.RegularExpressions.MatchCollection = regulärerAusdruck.Matches(DATEINAME)
|
|
'####
|
|
' alle Vorkommen innerhalbd er Namenkonvention durchlaufen
|
|
For Each element As System.Text.RegularExpressions.Match In elemente
|
|
If LogErrorsOnly = False Then ClassLogger.Add(">> element in RegeX: " & element.Value, False)
|
|
Select Case element.Value.Substring(2, 1).ToUpper
|
|
'Nur automatische Indizes auswerten
|
|
Case "A"
|
|
Dim APattern = element.Value.Substring(3, element.Value.Length - 4)
|
|
Dim value As String
|
|
|
|
Select Case APattern
|
|
'Laufzeitvariable Record-ID
|
|
Case "RECORD_ID"
|
|
value = CURRENT_RECORD_ID
|
|
Case "DOKART"
|
|
'Laufzeitvariable Dokumentartstring
|
|
value = CURRENT_DOKARTSTRING
|
|
Case Else
|
|
'Ein Index der nur für die Namenkonvention herangezogen wird
|
|
If APattern.StartsWith("NC_") And APattern.Contains("#") Then
|
|
Dim split() As String = APattern.Split("#")
|
|
If split.Length = 2 Then
|
|
'Die GUID des AutoIndex auslesen
|
|
Dim INDEX_ID = split(1)
|
|
If IsNumeric(INDEX_ID) Then
|
|
Dim sql_AUTOindexresult = ClassDatabase.Execute_Scalar("SELECT SQL_RESULT FROM TBDD_INDEX_AUTOM WHERE GUID = " & INDEX_ID, True)
|
|
If IsNothing(sql_AUTOindexresult) Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(">> unexpected: sql_AUTOindexresult is nothing!!", False)
|
|
value = ""
|
|
Else
|
|
If IsDBNull(sql_AUTOindexresult) Then
|
|
value = ""
|
|
Else
|
|
sql_AUTOindexresult = sql_AUTOindexresult.ToString.ToUpper.Replace("@RECORD-ID", CURRENT_RECORD_ID)
|
|
Dim AUTOindexresult = ClassDatabase.Execute_Scalar(sql_AUTOindexresult, True)
|
|
If IsNothing(AUTOindexresult) Then
|
|
ClassLogger.Add(">> unexpected: AUTOindexresult is nothing!!", False)
|
|
ClassLogger.Add(">> " & sql_AUTOindexresult, False)
|
|
value = ""
|
|
Else
|
|
If IsDBNull(AUTOindexresult) Then
|
|
value = ""
|
|
Else
|
|
value = AUTOindexresult
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
End If
|
|
|
|
ElseIf APattern.Contains("#") Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(">> element filled with Record-Data.......: ", False)
|
|
Dim split() As String = APattern.Split("#")
|
|
If split.Length = 2 Then
|
|
Dim CONTROL_ID = split(1)
|
|
If IsNumeric(CONTROL_ID) Then
|
|
Dim CONTROLVALUE = ClassControlValues.Get_Control_Value_for_ID(CONTROL_ID, CURRENT_RECORD_ID)
|
|
If IsNothing(CONTROLVALUE) Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(">> unexpected: CONTROLVALUE is nothing!!", False)
|
|
value = ""
|
|
Else
|
|
If IsDBNull(CONTROLVALUE) Then
|
|
value = ""
|
|
Else
|
|
value = CONTROLVALUE
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
End Select
|
|
|
|
If value <> String.Empty Then
|
|
DATEINAME = DATEINAME.Replace(element.Value, value)
|
|
_NewFileString = DATEINAME
|
|
If LogErrorsOnly = False Then ClassLogger.Add(">> Actual NEWFILESTRING: " & _NewFileString, False)
|
|
' sql_history_INSERT_INTO = sql_history_INSERT_INTO & ", INDEX" & AnzahlIndexe.ToString
|
|
AnzahlIndexe += 1
|
|
' sql_history_Index_Values = sql_history_Index_Values & ", '" & value & "'"
|
|
Else
|
|
err = True
|
|
End If
|
|
Case "V"
|
|
Dim datetemp As String
|
|
Dim _Month As String = My.Computer.Clock.LocalTime.Month
|
|
If _Month.Length = 1 Then
|
|
_Month = "0" & _Month
|
|
End If
|
|
Dim _day As String = My.Computer.Clock.LocalTime.Day
|
|
If _day.Length = 1 Then
|
|
_day = "0" & _day
|
|
End If
|
|
Dim type = element.Value '.ToUpper.Replace("[v%", "")
|
|
type = type.Replace("[%v", "")
|
|
type = type.Replace("]", "")
|
|
Select Case type
|
|
Case "YY_MM_DD"
|
|
datetemp = My.Computer.Clock.LocalTime.Year.ToString.Substring(2) & "_" & _Month & "_" & _day
|
|
Case "YYYY_MM_DD"
|
|
datetemp = My.Computer.Clock.LocalTime.Year & "_" & _Month & "_" & _day
|
|
Case "DD_MM_YY"
|
|
datetemp = _day & "_" & _Month & "_" & My.Computer.Clock.LocalTime.Year.ToString.Substring(2)
|
|
Case "DD_MM_YYYY"
|
|
datetemp = _day & "_" & _Month & "_" & My.Computer.Clock.LocalTime.Year
|
|
Case "YYYY_MM"
|
|
datetemp = My.Computer.Clock.LocalTime.Year & "_" & _Month
|
|
Case "MM_YYYY"
|
|
datetemp = _Month & "_" & My.Computer.Clock.LocalTime.Year
|
|
Case "OFilename"
|
|
DATEINAME = DATEINAME.Replace(element.Value, Path.GetFileNameWithoutExtension(CURRENT_FILENAME))
|
|
|
|
End Select
|
|
If datetemp <> "" Then
|
|
DATEINAME = DATEINAME.Replace(element.Value, datetemp)
|
|
End If
|
|
_NewFileString = DATEINAME
|
|
Case Else
|
|
ClassLogger.Add(" - Achtung - in der Namenkonvention wurde ein Element gefunden welches nicht zugeordnet werden kann!" & vbNewLine & "Elementname: " & element.Value.ToUpper)
|
|
MsgBox("Achtung - in der Namenkonvention wurde ein Element gefunden welches nicht zugeordnet werden kann!" & vbNewLine & "Elementname: " & element.Value.ToUpper, MsgBoxStyle.Exclamation, "Fehler bei Name generieren:")
|
|
End Select
|
|
Next
|
|
Try
|
|
Dim version As Integer = 1
|
|
Dim Stammname As String = DATEINAME.Replace(VERSION_DELIMITER, "")
|
|
Dim _neuername As String = DATEINAME.Replace(VERSION_DELIMITER, "")
|
|
'Dim MoveFilename As String = DATEINAME.Replace(element.Value, "")
|
|
'Überprüfen ob File existiert
|
|
If File.Exists(_neuername & extension) = False Then
|
|
_NewFileString = _neuername
|
|
Else
|
|
Do While File.Exists(_neuername & extension)
|
|
version = version + 1
|
|
_neuername = Stammname & VERSION_DELIMITER & version
|
|
_NewFileString = _neuername
|
|
Loop
|
|
End If
|
|
Catch ex As Exception
|
|
ClassLogger.Add(" - Fehler bei Versionieren der Datei - Fehler: " & vbNewLine & ex.Message)
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei Umbenennnen der Datei:")
|
|
err = True
|
|
End Try
|
|
CURRENT_NEWFILENAME = _NewFileString & extension
|
|
'False oder True zurückgeben
|
|
If err = False Then
|
|
Return True
|
|
Else
|
|
MsgBox("Fehler während der Dateinamengenerierung. Bitte überprüfen Sie das Log", MsgBoxStyle.Exclamation)
|
|
Return False
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassLogger.Add(" - Unvorhergesehener Fehler bei Name_Generieren - Fehler: " & vbNewLine & ex.Message)
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Allgemeiner Fehler bei Name_Generieren:")
|
|
Return False
|
|
End Try
|
|
|
|
End Function
|
|
End Class
|