From 9b10bc80e10c1a248803483e339a3e8eda4fe4c3 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 22 Dec 2020 14:41:58 +0100 Subject: [PATCH] EDMIService: catch single table failing to be fetched --- Service.EDMIService/Scheduler/DatatableJob.vb | 73 ++++++++++--------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/Service.EDMIService/Scheduler/DatatableJob.vb b/Service.EDMIService/Scheduler/DatatableJob.vb index b705daf5..e327fad0 100644 --- a/Service.EDMIService/Scheduler/DatatableJob.vb +++ b/Service.EDMIService/Scheduler/DatatableJob.vb @@ -28,43 +28,48 @@ Public Class DatatableJob Dim oCronDetails As DataTable = oMSSQL.GetDatatable(oCronSQL) For Each oRow As DataRow In oCronDetails.Rows + Dim oDatatableName As String = NotNull(oRow.Item("DT_NAME"), String.Empty) + Dim oParentColumn As String = NotNull(oRow.Item("DT_COLUMN"), String.Empty) + Dim oChildColumn As String = NotNull(oRow.Item("CHILD_DT_COLUMN"), String.Empty) Dim oConnectionId As Integer = NotNull(oRow.Item("CON_ID"), String.Empty) Dim oTitle As String = NotNull(oRow.Item("TITLE"), String.Empty) Dim oSQL As String = NotNull(oRow.Item("COMMAND"), String.Empty) - Dim oDatatableName As String = NotNull(oRow.Item("DT_NAME"), String.Empty) - - oLogger.Debug("Running Command-Job [{0}]", oTitle) - oLogger.Debug("Datatable Name: {0}", oDatatableName) - oLogger.Debug("Connection Id: {0}", oConnectionId) - - Dim oConnectionString = oMSSQL.Get_ConnectionStringforID(oConnectionId) - Dim oTable = oMSSQL.GetDatatableWithConnection(oSQL, oConnectionString) - oTable.TableName = oDatatableName - oLogger.Debug("Result Datatable [{0}] contains [{1}] rows", oTable.TableName, oTable.Rows.Count) - - Dim oResultTable = New JobResult.ResultTable() With { - .Table = oTable, - .DetailRow = oRow - } - - Dim oChildTableNAme As String = NotNull(oRow.Item("CHILD_DT_NAME"), String.Empty) - - If oChildTableNAme <> String.Empty Then - Dim oParentColumn As String = NotNull(oRow.Item("DT_COLUMN"), String.Empty) - Dim oChildColumn As String = NotNull(oRow.Item("CHILD_DT_COLUMN"), String.Empty) - oLogger.Debug("Child Datatable [{0}] defined, Relation: Parent [{1}] -> Child [{2}]", oChildTableNAme, oParentColumn, oChildColumn) - - Dim oChildTable As DataTable = oMSSQL.GetDatatableWithConnection($"SELECT * FROM {oChildTableNAme}", oConnectionString) - oChildTable.TableName = oChildTableNAme - oLogger.Debug("Child Datatable [{0}] contains [{1}] rows", oChildTable.TableName, oChildTable.Rows.Count) - - oResultTable.ChildTable = oChildTable - oResultTable.ChildRelationColumn = oChildColumn - oResultTable.TableRelationColumn = oParentColumn - End If - oLogger.Info("Fetched Datatable [{0}]", oDatatableName) - oResult.Tables.Add(oResultTable) + Try + oLogger.Debug("Running Command-Job [{0}]", oTitle) + oLogger.Debug("Datatable Name: {0}", oDatatableName) + oLogger.Debug("Connection Id: {0}", oConnectionId) + + Dim oConnectionString = oMSSQL.Get_ConnectionStringforID(oConnectionId) + Dim oTable = oMSSQL.GetDatatableWithConnection(oSQL, oConnectionString) + oTable.TableName = oDatatableName + oLogger.Debug("Result Datatable [{0}] contains [{1}] rows", oTable.TableName, oTable.Rows.Count) + + Dim oResultTable = New JobResult.ResultTable() With { + .Table = oTable, + .DetailRow = oRow + } + + Dim oChildTableNAme As String = NotNull(oRow.Item("CHILD_DT_NAME"), String.Empty) + + If oChildTableNAme <> String.Empty Then + oLogger.Debug("Child Datatable [{0}] defined, Relation: Parent [{1}] -> Child [{2}]", oChildTableNAme, oParentColumn, oChildColumn) + + Dim oChildTable As DataTable = oMSSQL.GetDatatableWithConnection($"SELECT * FROM {oChildTableNAme}", oConnectionString) + oChildTable.TableName = oChildTableNAme + oLogger.Debug("Child Datatable [{0}] contains [{1}] rows", oChildTable.TableName, oChildTable.Rows.Count) + + oResultTable.ChildTable = oChildTable + oResultTable.ChildRelationColumn = oChildColumn + oResultTable.TableRelationColumn = oParentColumn + End If + + oLogger.Info("Fetched Datatable [{0}]", oDatatableName) + oResult.Tables.Add(oResultTable) + Catch ex As Exception + oLogger.Warn("Execute: Error while saving Table: [{0}]", oDatatableName) + oLogger.Error(ex) + End Try Next ' Das Ergebnis speichern @@ -72,7 +77,7 @@ Public Class DatatableJob Catch ex As Exception oLogger.Error(ex) - oLogger.Warn("Unhandled exception while executing SQL for Datatable {0}", oCronJobTitle) + oLogger.Warn("Execute: Unhandled exception while executing SQL for Datatable {0}", oCronJobTitle) End Try Return Task.FromResult(True)