This commit is contained in:
SchreiberM
2016-07-18 14:29:33 +02:00
parent b9388d045a
commit b089c68613
37 changed files with 5975 additions and 2701 deletions

View File

@@ -21,7 +21,9 @@ Public Class ClassImport_Windream
'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 sql As String = String.Format("SELECT DocID FROM VWPMO_WD_DOC_SEARCH_SYNC WHERE UPPER(FULL_FILENAME) = UPPER('{0}') AND CONVERT(DATE,Change_DateTime) = CONVERT(DATE,GETDATE())", CURRENT_FILEIN_WD)
CURRENT_DOC_ID = ClassDatabase.Execute_Scalar(sql)
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
@@ -140,9 +142,35 @@ Public Class ClassImport_Windream
If folder_Created = False Then
' Den Zielordner erstellen
Zielordner = DT.Rows(0).Item("ZIEL_PFAD")
sql = "SELECT FOLDER_FOR_INDEX FROM TBDD_DOKUMENTART WHERE GUID = " & DocTypeID
Dim Folder_for_index = ClassDatabase.Execute_Scalar(sql)
If Not IsDBNull(Folder_for_index) Then
If Folder_for_index <> String.Empty Then
If CREATE_FOLDER_INDEX(Folder_for_index, DocTypeID) = True And CURRENT_VARIABLE_FOLDER <> "" Then
Zielordner = Zielordner & "\" & CURRENT_VARIABLE_FOLDER
Else
MsgBox("Unexpected Error in Creating Variable Folder - Check logfile!", MsgBoxStyle.Critical)
Return False
End If
End If
End If
'Unterordner ja oder nein
If CURRENT_CHECK_SUBFOLDER = True And CURRENT_SUBFOLDER <> "" Then
Zielordner = Zielordner & "\" & CURRENT_SUBFOLDER
End If
If Directory.Exists(Zielordner) = False Then
'Try to create the directory.
Directory.CreateDirectory(Zielordner)
Try
Directory.CreateDirectory(Zielordner)
Catch ex As Exception
ClassLogger.Add(" - Unexpected Error in Creating Target Folder: " & vbNewLine & ex.Message)
MsgBox("Unexpected Error in Creating Target Folder: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End If
folder_Created = True
End If
@@ -216,8 +244,13 @@ Public Class ClassImport_Windream
End If
End If
Else
ClassLogger.Add(">> INDEX_ID is not numeric: " & INDEX_ID.ToString & "- APattern: " & APattern, False)
value = ""
End If
Else
ClassLogger.Add(">> split.Length <> 2 - APattern: " & APattern, False)
value = ""
End If
ElseIf APattern.Contains("#") Then
@@ -228,9 +261,28 @@ Public Class ClassImport_Windream
If IsNumeric(CONTROL_ID) Then
Dim CONTROLVALUE = ClassControlValues.Get_Control_Value_for_ID(CONTROL_ID, CURRENT_RECORD_ID)
If IsNothing(CONTROLVALUE) Then
ClassLogger.Add(">> NameConvention should be filled with value of Control-ID '" & CONTROL_ID & "', but result was nothing.", False)
ClassLogger.Add(">> SQL-Command: " & CURRENT_LAST_SQL)
value = ""
Dim checktype = "SELECT CONTROL_TYPE_ID,SQL_COMMAND_1,CONNECTION_ID_1 FROM TBPMO_CONTROL WHERE GUID = " & CONTROL_ID
Dim DTtype As DataTable = ClassDatabase.Return_Datatable(checktype)
If DTtype.Rows.Count = 1 Then
Dim lblsql = DTtype.Rows(0).Item(1)
lblsql = lblsql.ToString.ToUpper.Replace("@RECORD_ID", CURRENT_RECORD_ID)
lblsql = lblsql.ToString.ToUpper.Replace("@RECORD-ID", CURRENT_RECORD_ID)
lblsql = lblsql.ToString.ToUpper.Replace("@ENTITY-ID", CURRENT_FORM_ID)
lblsql = lblsql.ToString.ToUpper.Replace("@ENTITY_ID", CURRENT_FORM_ID)
If LogErrorsOnly = False Then ClassLogger.Add(">> variable sql will be used for convention", False)
Dim result = ClassDatabase.Execute_ScalarWithConnection(DTtype.Rows(0).Item(2), lblsql)
If Not IsNothing(result) Then
value = result.ToString
Else
ClassLogger.Add(">> variable sqlresult is nothing - " & lblsql, False)
value = ""
End If
Else
ClassLogger.Add(">> NameConvention should be filled with value of Control-ID '" & CONTROL_ID & "', but result was nothing.", False)
ClassLogger.Add(">> SQL-Command: " & CURRENT_LAST_SQL)
value = ""
End If
Else
If IsDBNull(CONTROLVALUE) Then
ClassLogger.Add(">> NameConvention should be filled with value of Control-ID '" & CONTROL_ID & "', but result was DBNULL.", False)
@@ -300,7 +352,7 @@ Public Class ClassImport_Windream
type = type.Replace("[%v", "")
type = type.Replace("]", "")
Select Case type
Select Case type.ToUpper
Case "YY_MM_DD"
datetemp = My.Computer.Clock.LocalTime.Year.ToString.Substring(2) & "_" & _Month & "_" & _day
Case "YYMMDD"
@@ -329,9 +381,10 @@ Public Class ClassImport_Windream
datetemp = My.Computer.Clock.LocalTime.Year & "_" & _Month
Case "MM_YYYY"
datetemp = _Month & "_" & My.Computer.Clock.LocalTime.Year
Case "OFilename"
Case "OFilename".ToUpper
DATEINAME = DATEINAME.Replace(element.Value, Path.GetFileNameWithoutExtension(CURRENT_FILENAME))
Case "Username".ToUpper
DATEINAME = DATEINAME.Replace(element.Value, Environment.UserName)
End Select
If datetemp <> "" Then
DATEINAME = DATEINAME.Replace(element.Value, datetemp)
@@ -355,17 +408,34 @@ Public Class ClassImport_Windream
Dim Stammname As String = DATEINAME.Replace(VERSION_DELIMITER, "")
Dim _neuername As String = DATEINAME.Replace(VERSION_DELIMITER, "")
'Dim MoveFilename As String = DATEINAME.Replace(element.Value, "")
_NewFileString = _neuername
'Überprüfen ob File existiert
If File.Exists(_neuername & extension) = False Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> File is not existing", False)
_NewFileString = _neuername
Else
Do While File.Exists(_neuername & extension)
If LogErrorsOnly = False Then ClassLogger.Add(" >> Attention File '" & _neuername & extension & "' is existing!", False)
version = version + 1
_neuername = Stammname & VERSION_DELIMITER & version
_NewFileString = _neuername
Loop
Dim msg As String
msg = "Achtung: die Datei existiert bereits!" & vbNewLine & _neuername & extension & vbNewLine & "Wollen Sie die vorhandene Datei ersetzen?"
If USER_LANGUAGE <> "de-DE" Then
msg = "Attention: there is already a file with this name!" & vbNewLine & _neuername & extension & vbNewLine & "Would You like to replace this file with the actual one?"
End If
Dim result As MsgBoxResult
result = MessageBox.Show(msg, "Confirmation needed:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If result = MsgBoxResult.Yes Then
Try
File.Delete(_neuername & extension)
Catch ex As Exception
MsgBox("Unexpected Error in Replace file: " & ex.Message, MsgBoxStyle.Critical)
err = True
End Try
Else
Do While File.Exists(_neuername & extension)
If LogErrorsOnly = False Then ClassLogger.Add(" >> Attention File '" & _neuername & extension & "' is existing!", False)
version = version + 1
_neuername = Stammname & VERSION_DELIMITER & version
_NewFileString = _neuername
Loop
End If
End If
Catch ex As Exception
ClassLogger.Add(" - Error in Versioning file - Error: " & vbNewLine & ex.Message)
@@ -374,6 +444,7 @@ Public Class ClassImport_Windream
End Try
CURRENT_NEWFILENAME = _NewFileString & extension
'False oder True zurückgeben
If err = False Then
Return True
@@ -394,6 +465,184 @@ Public Class ClassImport_Windream
End Try
End Function
Private Shared Function CREATE_FOLDER_INDEX(FolderConvention As String, DocTypeID As Integer)
Try
'Dim RootFolder As String = Path.GetDirectoryName(CURRENT_NEWFILENAME)
CURRENT_VARIABLE_FOLDER = ""
'######
Dim p_reg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
' einen Regulären Ausdruck laden
Dim regularExpression As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(p_reg)
' die Vorkommen im Folder-String auslesen
Dim elemente As System.Text.RegularExpressions.MatchCollection = regularExpression.Matches(FolderConvention)
'####
' alle Vorkommen innerhalb des Ordnerstrings durchlaufen
For Each element As System.Text.RegularExpressions.Match In elemente
If LogErrorsOnly = False Then ClassLogger.Add(" >> Elementname in FolderString: '" & element.ToString & "'", False)
Dim EL_SUBSTRING = element.Value.Substring(2, 1).ToUpper
Select Case EL_SUBSTRING
'Manueller Indexwert
Case "A"
Dim split() As String = element.Value.Substring(3, element.Value.Length - 4).Split("#")
If split.Length = 2 Then
'Die GUID des AutoIndex auslesen
Dim INDEX_ID = split(1)
If IsNumeric(INDEX_ID) Then
Dim sql = "SELECT SQL_RESULT FROM TBDD_INDEX_AUTOM WHERE GUID = " & INDEX_ID
Dim sql_command = ClassDatabase.Execute_Scalar(sql, True)
If IsNothing(sql_command) Then
ClassLogger.Add(" >> unexpected: SQL_RESULT is nothing!!", False)
ClassLogger.Add(" >> " & sql, False)
Else
If IsDBNull(sql_command) Then
ClassLogger.Add(" >> unexpected: sql_command is DBNULL!!", False)
Else
sql_command = sql_command.ToString.ToUpper.Replace("@RECORD-ID", CURRENT_RECORD_ID)
sql_command = sql_command.ToString.ToUpper.Replace("@RECORD_ID", CURRENT_RECORD_ID)
sql_command = sql_command.ToString.ToUpper.Replace("@ENTITY-ID", CURRENT_FORM_ID)
sql_command = sql_command.ToString.ToUpper.Replace("@ENTITY_ID", CURRENT_FORM_ID)
Dim AUTOindexresult = ClassDatabase.Execute_Scalar(sql_command, True)
If IsNothing(AUTOindexresult) Then
ClassLogger.Add(">> unexpected: AUTOindexresult is nothing!!", False)
ClassLogger.Add(">> " & sql_command, False)
Else
If IsDBNull(AUTOindexresult) Then
ClassLogger.Add(">> unexpected: AUTOindexresult is DBNULL - " & sql_command, False)
Else
FolderConvention = FolderConvention.Replace(element.ToString, AUTOindexresult)
End If
End If
End If
End If
Else
ClassLogger.Add(">> INDEX_ID is not numeric: " & INDEX_ID.ToString & "- APattern: " & element.Value, False)
End If
Else
ClassLogger.Add(">> split.Length <> 2 - APattern: " & element.Value, False)
End If
Case "M"
Dim split() As String = element.Value.Substring(3, element.Value.Length - 4).Split("#")
If split.Length = 2 Then
'Die GUID des AutoIndex auslesen
Dim INDEX_ID = split(1)
If IsNumeric(INDEX_ID) Then
For Each row As DataRow In CURRENT_TBPMO_INDEX_MAN.Rows
If row.Item("GUID") = INDEX_ID Then
Dim manvalue = row.Item("MAN_VALUE")
FolderConvention = FolderConvention.Replace(element.ToString, manvalue)
End If
Next
Else
ClassLogger.Add(">> INDEX_ID is not numeric: " & INDEX_ID.ToString & "- APattern: " & element.Value, False)
End If
Else
ClassLogger.Add(">> split.Length <> 2 - APattern: " & element.Value, False)
End If
Case "V"
Dim folder_temp 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.Substring(3, element.Value.Length - 4)
If type.StartsWith("_") Then
type = type.Replace("_", "")
End If
Select Case type
Case "YYYY/MM/DD"
folder_temp = My.Computer.Clock.LocalTime.Year & "\" & _Month & "\" & _day
Case "YYYY/MM"
folder_temp = My.Computer.Clock.LocalTime.Year & "\" & _Month
Case "YYYY"
folder_temp = My.Computer.Clock.LocalTime.Year
Case "YYYY-MM"
folder_temp = My.Computer.Clock.LocalTime.Year & "-" & _Month
End Select
FolderConvention = FolderConvention.Replace(element.ToString, folder_temp)
Case "C"
Dim elmt = element.Value.Substring(3, element.Value.Length - 4).Split("#")
Dim APattern = element.Value.Substring(3, element.Value.Length - 4)
Dim split() As String = elmt
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
Dim checktype = "SELECT CONTROL_TYPE_ID,SQL_COMMAND_1,CONNECTION_ID_1 FROM TBPMO_CONTROL WHERE SQL_COMMAND_1 is not null and SQL_COMMAND_1 <> '' AND GUID = " & CONTROL_ID
Dim DTtype As DataTable = ClassDatabase.Return_Datatable(checktype)
If DTtype.Rows.Count = 1 Then
Dim lblsql = DTtype.Rows(0).Item(1)
lblsql = lblsql.ToString.ToUpper.Replace("@RECORD_ID", CURRENT_RECORD_ID)
lblsql = lblsql.ToString.ToUpper.Replace("@RECORD-ID", CURRENT_RECORD_ID)
lblsql = lblsql.ToString.ToUpper.Replace("@ENTITY-ID", CURRENT_FORM_ID)
lblsql = lblsql.ToString.ToUpper.Replace("@ENTITY_ID", CURRENT_FORM_ID)
If LogErrorsOnly = False Then ClassLogger.Add(">> variable sql will be used for convention", False)
Dim result = ClassDatabase.Execute_ScalarWithConnection(DTtype.Rows(0).Item(2), lblsql)
If Not IsNothing(result) Then
FolderConvention = FolderConvention.Replace(element.ToString, result.ToString)
Else
ClassLogger.Add(">> variable sqlresult is nothing - " & lblsql, False)
End If
Else
ClassLogger.Add(">> Variable folder should be filled with value of Control-ID '" & CONTROL_ID & "', but result was nothing.", False)
ClassLogger.Add(">> SQL-Command: " & checktype)
End If
Else
If IsDBNull(CONTROLVALUE) Then
ClassLogger.Add(">> Variable folder should be filled with value of Control-ID '" & CONTROL_ID & "', but result was DBNULL.", False)
ClassLogger.Add(">> SQL-Command: " & CURRENT_LAST_SQL)
Else
Dim sql1 = "SELECT * FROM TBPMO_WD_NAMECONVENTION_FORMAT WHERE ID = (SELECT TOP 1 GUID FROM TBPMO_WD_FORMVIEW_DOKTYPES WHERE DOCTYPE_ID = " & DocTypeID & " AND FORMVIEW_ID = " & CURRENT_FORMVIEW_ID & ")"
Dim DT_FORMAT As DataTable = ClassDatabase.Return_Datatable(sql1)
If Not IsNothing(DT_FORMAT) Then
If DT_FORMAT.Rows.Count > 0 Then
Dim result
result = (From FormatRow In DT_FORMAT.AsEnumerable
Select FormatRow Where FormatRow.Item("PATTERN") = APattern).Single()
If Not IsNothing(result) Then
Dim _rule = result.Item("FORMAT_RULE")
If Not IsNothing(_rule) Then
If IsDate(CONTROLVALUE) Then
Dim _date As Date = CDate(CONTROLVALUE)
'Dim _date = CDate(Format(CONTROLVALUE, "dd-MM-yyyy"))
_rule = _rule.ToString.Replace("Y", "y")
_rule = _rule.ToString.Replace("D", "d")
_rule = _rule.ToString.Replace("m", "M")
Dim convertedvalue = _date.ToString(_rule, CultureInfo.InvariantCulture)
CONTROLVALUE = convertedvalue
End If
End If
End If
End If
End If
FolderConvention = FolderConvention.Replace(element.ToString, CONTROLVALUE.ToString)
End If
End If
End If
End If
Case Else
ClassLogger.Add(" -Undefined pattern found in folderconvention" & 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, "Unexpected error in Name generieren:")
End Select
Next
CURRENT_VARIABLE_FOLDER = FolderConvention
Return True
Catch ex As Exception
MsgBox("Unexpected Error in CreateFolderforIndex-Method:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
ClassLogger.Add(" >> Fehler in CrFolderForIndex: " & ex.Message, True)
Return False
End Try
End Function
Public Shared Function Version_Ueberprüfen(Dateiname As String)
Dim extension
Dim _NewFileString