add missing validation for datetime picker, generalize validation massages, fix file deletion check

This commit is contained in:
Jonathan Jenne 2020-05-25 12:01:40 +02:00
parent d4b4c2078b
commit 9e27a8e8eb

View File

@ -32,6 +32,8 @@ Public Class frmIndex
Private Property ViewerString As String Private Property ViewerString As String
Private Const TEXT_MISSING_INPUT = "Bitte vervollständigen Sie die Eingaben!"
#End Region #End Region
Public Sub DisposeViewer() Public Sub DisposeViewer()
@ -285,7 +287,7 @@ Public Class frmIndex
If box.Text = "" Then If box.Text = "" Then
Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & dokartid & " AND NAME = '" & Replace(box.Name, "txt", "") & "'", MyConnectionString, True) Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & dokartid & " AND NAME = '" & Replace(box.Name, "txt", "") & "'", MyConnectionString, True)
If optional_index = False Then If optional_index = False Then
MsgBox("Bitte geben Sie einen Indexwert ein!", MsgBoxStyle.Exclamation, "Fehlende Eingabe:") MsgBox(TEXT_MISSING_INPUT, MsgBoxStyle.Exclamation, "Fehlende Eingabe:")
box.Focus() box.Focus()
Return False Return False
Else Else
@ -313,7 +315,7 @@ Public Class frmIndex
Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & dokartid & " AND NAME = '" & Replace(oLookup.Name, "cmbMulti", "") & "'", MyConnectionString, True) Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & dokartid & " AND NAME = '" & Replace(oLookup.Name, "cmbMulti", "") & "'", MyConnectionString, True)
If optional_index = False Then If optional_index = False Then
MsgBox("Bitte wählen Sie einen Wert aus der Combobox.", MsgBoxStyle.Exclamation) MsgBox(TEXT_MISSING_INPUT, MsgBoxStyle.Exclamation, Text)
oLookup.Focus() oLookup.Focus()
Return False Return False
Else Else
@ -332,7 +334,7 @@ Public Class frmIndex
Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & dokartid & " AND NAME = '" & Replace(cmbSingle.Name, "cmbSingle", "") & "'", MyConnectionString, True) Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & dokartid & " AND NAME = '" & Replace(cmbSingle.Name, "cmbSingle", "") & "'", MyConnectionString, True)
If optional_index = False Then If optional_index = False Then
MsgBox("Bitte wählen Sie einen Wert aus der Combobox.", MsgBoxStyle.Exclamation) MsgBox(TEXT_MISSING_INPUT, MsgBoxStyle.Exclamation, Text)
cmbSingle.Focus() cmbSingle.Focus()
Return False Return False
Else Else
@ -348,7 +350,7 @@ Public Class frmIndex
If cmb.Text = "" Then If cmb.Text = "" Then
Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & dokartid & " AND NAME = '" & Replace(cmb.Name, "cmb", "") & "'", MyConnectionString, True) Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & dokartid & " AND NAME = '" & Replace(cmb.Name, "cmb", "") & "'", MyConnectionString, True)
If optional_index = False Then If optional_index = False Then
MsgBox("Bitte wählen Sie einen Wert aus der Combobox.", MsgBoxStyle.Exclamation) MsgBox(TEXT_MISSING_INPUT, MsgBoxStyle.Exclamation, Text)
cmb.Focus() cmb.Focus()
Return False Return False
Else Else
@ -362,8 +364,23 @@ Public Class frmIndex
End If End If
If oControl.Name.StartsWith("dtp") Then If oControl.Name.StartsWith("dtp") Then
Dim dtp As DevExpress.XtraEditors.DateEdit = oControl Dim dtp As DevExpress.XtraEditors.DateEdit = oControl
Indexwert_Postprocessing(Replace(dtp.Name, "dtp", ""), dtp.Text) Dim oIndexName As String = Replace(dtp.Name, "dtp", "")
result = True
If dtp.Text = String.Empty Then
Dim optional_index As Boolean = ClassDatabase.Execute_Scalar($"SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = {dokartid} AND NAME = '{oIndexName}'", MyConnectionString, True)
If optional_index = False Then
MsgBox(TEXT_MISSING_INPUT, MsgBoxStyle.Exclamation, Text)
dtp.Focus()
Return False
Else
Indexwert_Postprocessing(oIndexName, "")
result = True
End If
Else
Indexwert_Postprocessing(Replace(dtp.Name, "dtp", ""), dtp.Text)
result = True
End If
End If End If
If oControl.Name.StartsWith("chk") Then If oControl.Name.StartsWith("chk") Then
Dim chk As CheckBox = oControl Dim chk As CheckBox = oControl
@ -1190,7 +1207,7 @@ Public Class frmIndex
End Function End Function
Private Function SINGLEFILE_2_WINDREAM(_Objekttyp As String) Private Function SINGLEFILE_2_WINDREAM(_Objekttyp As String) As Boolean
Try Try
CURR_DOKART_OBJECTTYPE = _Objekttyp CURR_DOKART_OBJECTTYPE = _Objekttyp
Dim oWMCheckPath = WINDREAM.VersionWMFilename(CURRENT_NEWFILENAME, System.IO.Path.GetExtension(CURRENT_NEWFILENAME)) Dim oWMCheckPath = WINDREAM.VersionWMFilename(CURRENT_NEWFILENAME, System.IO.Path.GetExtension(CURRENT_NEWFILENAME))
@ -1198,9 +1215,11 @@ Public Class frmIndex
LOGGER.Info($"Target [{CURRENT_NEWFILENAME}] already existed!! - NewWMFilename [{oWMCheckPath}]") LOGGER.Info($"Target [{CURRENT_NEWFILENAME}] already existed!! - NewWMFilename [{oWMCheckPath}]")
CURRENT_NEWFILENAME = oWMCheckPath CURRENT_NEWFILENAME = oWMCheckPath
End If End If
Dim streamresult = WINDREAM.NewFileStream(CURRENT_WORKFILE, CURRENT_NEWFILENAME)
If File.Exists(CURRENT_NEWFILENAME) And streamresult = True Then Dim oStreamSuccessful = WINDREAM.NewFileStream(CURRENT_WORKFILE, CURRENT_NEWFILENAME)
Dim oAbsFilename = $"\\windream\objects{CURRENT_NEWFILENAME}"
If File.Exists(oAbsFilename) And oStreamSuccessful Then
If CONFIG.Config.DeleteOriginalFile = True Then If CONFIG.Config.DeleteOriginalFile = True Then
Try Try
My.Computer.FileSystem.DeleteFile(CURRENT_WORKFILE) My.Computer.FileSystem.DeleteFile(CURRENT_WORKFILE)
@ -1210,7 +1229,7 @@ Public Class frmIndex
End If End If
End If End If
Return streamresult Return oStreamSuccessful
Catch ex As Exception Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in SINGLEFILE_2_WINDREAM:") MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in SINGLEFILE_2_WINDREAM:")
Return False Return False
@ -1864,10 +1883,6 @@ Public Class frmIndex
oAutoIndexRow.Item("Indexwert") = oResult oAutoIndexRow.Item("Indexwert") = oResult
End If End If
Next Next
Return True Return True
@ -1875,167 +1890,6 @@ Public Class frmIndex
MsgBox(ex.Message) MsgBox(ex.Message)
Return False Return False
End Try End Try
' 3. Schritt: SQL ausführen
' 4. Schritt: Resultat in Datatable schreiben
'Try
' Me.VWINDEX_AUTOMTableAdapter.Fill(Me.MyDataset.VWDDINDEX_AUTOM, CURRENT_DOKART_ID)
' Dim DT_INDEXAUTOM As DataTable = MyDataset.VWDDINDEX_AUTOM
' If DT_INDEXAUTOM.Rows.Count > 0 Then
' ' MsgBox(DT.Rows.Count.ToString)
' For Each DR_AUTOINDEX As DataRow In DT_INDEXAUTOM.Rows
' Dim optionalIndex As Boolean
' Dim indexname As String = DR_AUTOINDEX.Item("INDEXNAME")
' LOGGER.Info("Build Automatischer Index '" & indexname & "'")
' If DR_AUTOINDEX.Item("SQL_RESULT").ToString <> String.Empty And CBool(DR_AUTOINDEX.Item("SQL_ACTIVE")) = True Then
' ' Regulären Ausdruck zum Auslesen der windream-Indexe definieren
' Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
' ' SQL-String für aktuellen INdex laden
' Dim SqlString As String = DR_AUTOINDEX.Item("SQL_RESULT")
' ' 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(SqlString)
' ' alle Vorkommen der Indexe im SQL-String durchlaufen
' For Each element As System.Text.RegularExpressions.Match In elemente
' ' MsgBox(element.Value.ToUpper)
' LOGGER.Info("Element: '" & element.Value & "'")
' '' wenn es sich nicht um dedizeirte Werte handelt (es sollen ja nur die Indexe ausgelesen werden)
' 'If Not element.Value.ToUpper = "[%SPALTE]" And Not element.Value.ToUpper = "[%VIEW]" Then
' 'die Zeichen [% und ] entfernen (liefert den wirklichen windream-Index)
' Dim elementOhneSonderzeichen As String = element.Value.Substring(2, element.Value.Length - 3)
' LOGGER.Info("elementOhneSonderzeichen: '" & elementOhneSonderzeichen & "'")
' optionalIndex = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & CURRENT_DOKART_ID & " AND UPPER(NAME) = UPPER('" & elementOhneSonderzeichen & "')", MyConnectionString, True)
' If elementOhneSonderzeichen.StartsWith("$") Then 'windowsParameter
' Dim result = ""
' Try
' Select Case elementOhneSonderzeichen.ToString.ToUpper
' Case "$filename_ext".ToUpper
' result = Path.GetFileName(CURRENT_WORKFILE)
' Case "$filename".ToUpper
' result = Path.GetFileNameWithoutExtension(CURRENT_WORKFILE)
' Case "$extension".ToUpper
' result = Path.GetExtension(CURRENT_WORKFILE)
' result = result.Replace(".", "")
' Case "$FileCreateDate".ToUpper
' Dim FI As New FileInfo(CURRENT_WORKFILE)
' Dim CreationDate As Date = FI.CreationTime
' result = CreationDate.ToShortDateString
' Case "$FileCreatedWho".ToUpper
' Dim fs As FileSecurity = File.GetAccessControl(CURRENT_WORKFILE)
' Dim sid As IdentityReference = fs.GetOwner(GetType(SecurityIdentifier))
' Dim ntaccount As IdentityReference = sid.Translate(GetType(NTAccount))
' Dim owner As String = ntaccount.ToString()
' result = owner
' Case "$DateDDMMYYY".ToUpper
' result = System.DateTime.Now.ToShortDateString
' Case "$Username"
' result = Environment.UserName
' Case "$Usercode"
' result = USER_SHORT_NAME
' End Select
' Catch ex As Exception
' result = "XXX"
' LOGGER.Info(" - Unexpected error in FillIndexe_Autom - WindowsFilePatterns - Fehler: " & vbNewLine & ex.Message)
' MsgBox("Unexpected error in Replacement WindowsFilePatterns: " & vbNewLine & ex.Message & vbNewLine & vbNewLine & "Routine will continue - Please check logfile", MsgBoxStyle.Exclamation, )
' End Try
' If result <> "" Then
' LOGGER.Info("file-related parameter found: '" & elementOhneSonderzeichen & "' - Result: '" & result & "'")
' SqlString = SqlString.Replace(element.Value, result)
' Else
' LOGGER.Info(">> Attention: file-related parameter '" & elementOhneSonderzeichen & "' returned an empty string!")
' End If
' Else 'ganz normaler manueller Index
' 'den Platzhalter im SQL-String durch den Wert ersetzen
' Dim manIndexwert = GetManIndex_Value(elementOhneSonderzeichen, "IDX_AUTO", optionalIndex)
' If Not IsNothing(manIndexwert) Then
' SqlString = SqlString.Replace(element.Value, manIndexwert)
' Else
' LOGGER.Info(">> Attention: manIndexwert is NOTHING - Funktion: FillIndexe_Autom")
' ' Return False
' End If
' End If
' Next
' LOGGER.Info("Replaced and complete SQL-result: " & SqlString)
' LOGGER.Info("Ausführen SQL....")
' Dim automatischerValue As String = ""
' automatischerValue = GetAutomaticIndexSQLValue(SqlString, DR_AUTOINDEX.Item("CONNECTION_ID"), DR_AUTOINDEX.Item("SQL_PROVIDER"))
' LOGGER.Info("Ergebnis SQL: '" & automatischerValue & "'")
' If automatischerValue <> String.Empty Then
' DR_AUTOINDEX.Item("Indexiert") = True
' DR_AUTOINDEX.Item("Indexwert") = automatischerValue
' Else
' If optionalIndex = True Then
' DR_AUTOINDEX.Item("Indexiert") = True
' DR_AUTOINDEX.Item("Indexwert") = "EMPTY_OI"
' ' Return True
' Else
' LOGGER.Info(" - ACHTUNG: automatischerValue = String.Empty - Funktion: FillIndexe_Autom")
' LOGGER.Info(" - SqlString: " & SqlString)
' ' Return False
' End If
' End If
' Else
' If Not IsDBNull(DR_AUTOINDEX.Item("VALUE")) Then
' If DR_AUTOINDEX.Item("VALUE") <> "" Then
' Dim DEFAULTVALUE As String = DR_AUTOINDEX.Item("VALUE")
' 'Indexierung mit WindowsVariable
' If DEFAULTVALUE.StartsWith("$") Then
' LOGGER.Info("Indexierung mit einer Windowsvariable: '" & DEFAULTVALUE & "'")
' Select Case DEFAULTVALUE.ToUpper
' Case "$filename_ext".ToUpper
' DEFAULTVALUE = Path.GetFileName(CURRENT_WORKFILE)
' Case "$filename".ToUpper
' DEFAULTVALUE = Path.GetFileNameWithoutExtension(CURRENT_WORKFILE)
' Case "$extension".ToUpper
' DEFAULTVALUE = Path.GetExtension(CURRENT_WORKFILE)
' Case "$FileCreateDate".ToUpper
' Dim FI As New FileInfo(CURRENT_WORKFILE)
' Dim CreationDate As Date = FI.CreationTime
' DEFAULTVALUE = CreationDate.ToShortDateString
' Case "$FileCreatedWho".ToUpper
' Dim fs As FileSecurity = File.GetAccessControl(CURRENT_WORKFILE)
' Dim sid As IdentityReference = fs.GetOwner(GetType(SecurityIdentifier))
' Dim ntaccount As IdentityReference = sid.Translate(GetType(NTAccount))
' Dim owner As String = ntaccount.ToString()
' DEFAULTVALUE = owner
' Case "$DateDDMMYYY".ToUpper
' DEFAULTVALUE = System.DateTime.Now.ToShortDateString
' Case "$Username"
' DEFAULTVALUE = Environment.UserName
' Case "$Usercode"
' DEFAULTVALUE = USER_SHORT_NAME
' End Select
' LOGGER.Info("Ergebnis der Windowsvariable: '" & DEFAULTVALUE & "'")
' Else
' LOGGER.Info("Indexierung mit einem Festen Wert: '" & DEFAULTVALUE & "'")
' End If
' 'Den Wert in der Zwischentabelle speichern
' DR_AUTOINDEX.Item("Indexiert") = True
' DR_AUTOINDEX.Item("Indexwert") = DEFAULTVALUE
' End If
' End If
' End If
' Next
' 'MsgBox("Noch kein automatischer Index-SQL-String hinterlegt, dennoch wird das Dokument abgelegt!")
' Return True
' Else
' Return True
' End If
'Catch ex As System.Exception
' LOGGER.Info(" - Unexpected error in FillIndexe_Autom - Fehler: " & vbNewLine & ex.Message)
' MsgBox(ex.Message, MsgBoxStyle.Critical, "Unexpected error in FillIndexe_Autom")
' Return False
'End Try
End Function End Function
Private Sub btnVorschau_Click(sender As System.Object, e As System.EventArgs) Private Sub btnVorschau_Click(sender As System.Object, e As System.EventArgs)
PreviewFile() PreviewFile()
@ -2665,8 +2519,4 @@ Public Class frmIndex
CONFIG.Config.ProfilePreselection = checkItemPreselection.Checked CONFIG.Config.ProfilePreselection = checkItemPreselection.Checked
CONFIG.Save() CONFIG.Save()
End Sub End Sub
Private Sub frmIndex_RightToLeftChanged(sender As Object, e As EventArgs) Handles Me.RightToLeftChanged
End Sub
End Class End Class