Skip to main content
Code Review

Return to Question

replaced http://stackoverflow.com/ with https://stackoverflow.com/
Source Link
edited title
Link
Jamal
  • 35.2k
  • 13
  • 134
  • 238

Optimize multiple ifs (big case) Executing a list of tasks from a database

edited title
Source Link
Schoof
  • 185
  • 4

Optimize multiple ifs (big case)

Private Sub Monitoring(installationCode As String, drive As String, syncFolder As String)
 InitializeDatabaseConnection(installationCode)
 TraceInitialize(drive, "Monitoring")
  Trace.TraceInformation("Monitoring started for installation: " & installationCode)
  For Each param In JdnParamDAO.GetJdnParams(General.AmosRemoteTask)
 If param.Value Then
 RemoteTask.Deptid = Department.GetDepartmentsNotInOne().Where(Function(x) x.Code = "001").FirstOrDefault.DepartmentID
 Dim monitorTasks = TaskDefinitionDAO.GetActiveTaskDefinitionsByCategory(TaskDefinitionCategoryEnum.Monitor)
 Trace.TraceInformation(monitorTasks.Count() & " have been found.")
  'Perform each monitor task and save the results to the database
 For Each monitorTask In monitorTasks
 Try
 Trace.TraceInformation("MonitorTask: " & monitorTask.Description.ToLowerInvariant() & " found.")
  Dim result = String.Empty
 Select Case monitorTask.Description.ToLowerInvariant()
 Case "getlastbackup"
 result = RemoteTaskHelper.GetLastBackup(drive, installationCode)
 Case "getamosrtversion"
 result = General.AmosRTVersion
 Case "getstockondummypercentage"
 result = RemoteTaskHelper.GetStockOnDummyPercentage()
 Case "getnumberofhistoryrecords"
 result = RemoteTaskHelper.GetNumerOfHistoryRecords()
 Case "getnumberofsparepartlogrecords"
 result = RemoteTaskHelper.GetNumberOfSparePartLogRecords()
 Case "getinconsistenciesbetweencompjobnextdueandlastdone"
 result = RemoteTaskHelper.GetInconsistenciesBetweenCompJobNextDueAndLastDone()
 Case "getdifferencesofcompjobnextdueandworkorderdue"
 result = RemoteTaskHelper.GetDifferencesOfCompJobNextDueAndWorkOrderDue()
 Case "getinconsistenciesbetweencompjobsprioandworkordersprio"
 result = RemoteTaskHelper.GetWorkOrderCompJobPriority()
 Case "getactivecompjobswithnextdue"
 result = RemoteTaskHelper.GetActiveCompJobsWithNextDue()
 Case "getactivecompjobswithoutnextdue"
 result = RemoteTaskHelper.GetActiveCompJobsWithoutNextDue()
 Case "getopenworkorders"
 result = RemoteTaskHelper.GetOpenWorkOrders()
 Case "getamosguiversion"
 result = RemoteTaskHelper.GetAmosGuiVersion(syncFolder)
 Case "checkaddinsactivation"
 result = RemoteTaskHelper.CheckAddinsActivation()
 Case "checkamosmobileactivation"
 result = RemoteTaskHelper.CheckAmosMobileActivation()
 Case "checkchangelogactivation"
  result = RemoteTaskHelper.CheckChangelogActivation()
 Case "retrievejdnmodules"
 result = RemoteTaskHelper.RetrieveJdnModules(installationCode, syncFolder)
 Case "retrieveamosparameters"
 result = RemoteTaskHelper.RetrieveAmosParameters(installationCode, syncFolder)
 Case "retrievestocksituation"
 result = RemoteTaskHelper.RetrieveStockSituation(installationCode, syncFolder)
 Case "executesql"
  result = RemoteTaskHelper.ExecuteSQL(drive, installationCode)
 Case "getfreespace"
 result = RemoteTaskHelper.GetFreeSpace(drive)
 Case Else
 Trace.TraceInformation("Non excisting monitoring task: " + monitorTask.Description)
 ExceptionMonitor.LogExceptionEvent(
 "Non excisting monitoring task: " + monitorTask.Description, ProblemSeverity.Error)
 End Select
 If Not String.IsNullOrEmpty(result) Then
 Dim taskLog = New RemoteTaskLog()
 taskLog.CreationDate = DateTime.Now()
 taskLog.TaskDefinition = monitorTask
 taskLog.SourceInstallation = Int32.Parse(installationCode)
 taskLog.DestinationInstallation = CLng(General.AmosRTHeadOffice)
 taskLog.AppVersion = General.AmosRTVersion
 taskLog.TaskResult = result.ToString()
 RemoteTaskLogDAO.Save(taskLog)
 Else
 Trace.TraceInformation("No result returned for monitoring task: " + monitorTask.Description)
 ExceptionMonitor.LogExceptionEvent(
 "No result returned for monitoring task: " + monitorTask.Description, ProblemSeverity.Error)
 End If

 Catch ex As Exception
 Trace.TraceInformation("Error " + ex.ToString())
 ExceptionMonitor.LogExceptionEvent(ex, ProblemSeverity.Error)
 End Try
 Next
 End If
 Next
 End Sub

Optimize multiple ifs

 Dim monitorTasks = TaskDefinitionDAO.GetActiveTaskDefinitionsByCategory(TaskDefinitionCategoryEnum.Monitor)
 'Perform each monitor task and save the results to the database
 For Each monitorTask In monitorTasks
 Try
 Dim result = String.Empty
 Select Case monitorTask.Description.ToLowerInvariant()
 Case "getlastbackup"
 result = RemoteTaskHelper.GetLastBackup(drive, installationCode)
 Case "getstockondummypercentage"
 result = RemoteTaskHelper.GetStockOnDummyPercentage()
 ...
 Case Else
 ...
 End Select
 ...
 Catch ex As Exception
 ....
 End Try
 Next

Optimize multiple ifs (big case)

Private Sub Monitoring(installationCode As String, drive As String, syncFolder As String)
 InitializeDatabaseConnection(installationCode)
 TraceInitialize(drive, "Monitoring")
  Trace.TraceInformation("Monitoring started for installation: " & installationCode)
  For Each param In JdnParamDAO.GetJdnParams(General.AmosRemoteTask)
 If param.Value Then
 RemoteTask.Deptid = Department.GetDepartmentsNotInOne().Where(Function(x) x.Code = "001").FirstOrDefault.DepartmentID
 Dim monitorTasks = TaskDefinitionDAO.GetActiveTaskDefinitionsByCategory(TaskDefinitionCategoryEnum.Monitor)
 Trace.TraceInformation(monitorTasks.Count() & " have been found.")
  'Perform each monitor task and save the results to the database
 For Each monitorTask In monitorTasks
 Try
 Trace.TraceInformation("MonitorTask: " & monitorTask.Description.ToLowerInvariant() & " found.")
  Dim result = String.Empty
 Select Case monitorTask.Description.ToLowerInvariant()
 Case "getlastbackup"
 result = RemoteTaskHelper.GetLastBackup(drive, installationCode)
 Case "getamosrtversion"
 result = General.AmosRTVersion
 Case "getstockondummypercentage"
 result = RemoteTaskHelper.GetStockOnDummyPercentage()
 Case "getnumberofhistoryrecords"
 result = RemoteTaskHelper.GetNumerOfHistoryRecords()
 Case "getnumberofsparepartlogrecords"
 result = RemoteTaskHelper.GetNumberOfSparePartLogRecords()
 Case "getinconsistenciesbetweencompjobnextdueandlastdone"
 result = RemoteTaskHelper.GetInconsistenciesBetweenCompJobNextDueAndLastDone()
 Case "getdifferencesofcompjobnextdueandworkorderdue"
 result = RemoteTaskHelper.GetDifferencesOfCompJobNextDueAndWorkOrderDue()
 Case "getinconsistenciesbetweencompjobsprioandworkordersprio"
 result = RemoteTaskHelper.GetWorkOrderCompJobPriority()
 Case "getactivecompjobswithnextdue"
 result = RemoteTaskHelper.GetActiveCompJobsWithNextDue()
 Case "getactivecompjobswithoutnextdue"
 result = RemoteTaskHelper.GetActiveCompJobsWithoutNextDue()
 Case "getopenworkorders"
 result = RemoteTaskHelper.GetOpenWorkOrders()
 Case "getamosguiversion"
 result = RemoteTaskHelper.GetAmosGuiVersion(syncFolder)
 Case "checkaddinsactivation"
 result = RemoteTaskHelper.CheckAddinsActivation()
 Case "checkamosmobileactivation"
 result = RemoteTaskHelper.CheckAmosMobileActivation()
 Case "checkchangelogactivation"
  result = RemoteTaskHelper.CheckChangelogActivation()
 Case "retrievejdnmodules"
 result = RemoteTaskHelper.RetrieveJdnModules(installationCode, syncFolder)
 Case "retrieveamosparameters"
 result = RemoteTaskHelper.RetrieveAmosParameters(installationCode, syncFolder)
 Case "retrievestocksituation"
 result = RemoteTaskHelper.RetrieveStockSituation(installationCode, syncFolder)
 Case "executesql"
  result = RemoteTaskHelper.ExecuteSQL(drive, installationCode)
 Case "getfreespace"
 result = RemoteTaskHelper.GetFreeSpace(drive)
 Case Else
 Trace.TraceInformation("Non excisting monitoring task: " + monitorTask.Description)
 ExceptionMonitor.LogExceptionEvent(
 "Non excisting monitoring task: " + monitorTask.Description, ProblemSeverity.Error)
 End Select
 If Not String.IsNullOrEmpty(result) Then
 Dim taskLog = New RemoteTaskLog()
 taskLog.CreationDate = DateTime.Now()
 taskLog.TaskDefinition = monitorTask
 taskLog.SourceInstallation = Int32.Parse(installationCode)
 taskLog.DestinationInstallation = CLng(General.AmosRTHeadOffice)
 taskLog.AppVersion = General.AmosRTVersion
 taskLog.TaskResult = result.ToString()
 RemoteTaskLogDAO.Save(taskLog)
 Else
 Trace.TraceInformation("No result returned for monitoring task: " + monitorTask.Description)
 ExceptionMonitor.LogExceptionEvent(
 "No result returned for monitoring task: " + monitorTask.Description, ProblemSeverity.Error)
 End If

 Catch ex As Exception
 Trace.TraceInformation("Error " + ex.ToString())
 ExceptionMonitor.LogExceptionEvent(ex, ProblemSeverity.Error)
 End Try
 Next
 End If
 Next
 End Sub
deleted 19 characters in body; edited tags
Source Link
RubberDuck
  • 31.1k
  • 6
  • 73
  • 176
Loading
Source Link
Schoof
  • 185
  • 4
Loading
lang-vb

AltStyle によって変換されたページ (->オリジナル) /