From 7b7147eeeee6afcfa7283f6844f5574813025268 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Wed, 7 Dec 2022 16:45:31 +0100 Subject: [PATCH] 07-12-2022 --- .../JobRunnerReference/Arrays.xsd | 9 + .../DigitalData.Services.EDMIService.wsdl | 1 + .../ECM.JobRunner.Common.xsd | 14 + .../ECM.JobRunner.Windows.xsd | 1 + .../JobRunnerReference/Reference.svcmap | 1 + .../JobRunnerReference/Reference.vb | 715 ++++++++++-------- .../ECM.JobRunner.Common.vbproj | 5 + .../ProfileConfig/ImportProfile.vb | 15 + ECM.JobRunner.Common/Windream/ObjectType.vb | 4 + .../Components/Job/JobForm.razor | 8 +- .../Components/Status/Progress.razor | 16 +- ECM.JobRunner.Web/Data/DashboardService.cs | 4 +- ECM.JobRunner.Web/Pages/History.razor | 1 - ECM.JobRunner.Web/Pages/Job/JobList.razor | 47 +- ECM.JobRunner.Web/Pages/Job/JobPage.razor | 19 +- ECM.JobRunner.Web/Pages/Job/NewJob.razor | 2 +- ECM.JobRunner.Web/Pages/Status.razor | 21 +- ECM.JobRunner.Windows/Config.vb | 9 + ECM.JobRunner.Windows/Constants.vb | 5 + .../ECM.JobRunner.Windows.vbproj | 3 + .../Scheduler/JobScheduler.vb | 1 + .../Scheduler/Jobs/BaseJob.vb | 7 + .../Scheduler/Jobs/DebugJob.vb | 3 +- .../Scheduler/Jobs/FileImportJob.vb | 102 ++- .../Scheduler/Jobs/FileIndexJob.vb | 5 +- ECM.JobRunner.Windows/Service.vb | 9 +- ECM.JobRunner.Windows/State.vb | 101 ++- .../WCF/Methods/GetJobConfig.vb | 16 +- 28 files changed, 770 insertions(+), 374 deletions(-) create mode 100644 ECM.JobRunner.Common/Connected Services/JobRunnerReference/Arrays.xsd create mode 100644 ECM.JobRunner.Common/ProfileConfig/ImportProfile.vb create mode 100644 ECM.JobRunner.Common/Windream/ObjectType.vb diff --git a/ECM.JobRunner.Common/Connected Services/JobRunnerReference/Arrays.xsd b/ECM.JobRunner.Common/Connected Services/JobRunnerReference/Arrays.xsd new file mode 100644 index 0000000..c7a5d70 --- /dev/null +++ b/ECM.JobRunner.Common/Connected Services/JobRunnerReference/Arrays.xsd @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/ECM.JobRunner.Common/Connected Services/JobRunnerReference/DigitalData.Services.EDMIService.wsdl b/ECM.JobRunner.Common/Connected Services/JobRunnerReference/DigitalData.Services.EDMIService.wsdl index b60633d..63c5aa9 100644 --- a/ECM.JobRunner.Common/Connected Services/JobRunnerReference/DigitalData.Services.EDMIService.wsdl +++ b/ECM.JobRunner.Common/Connected Services/JobRunnerReference/DigitalData.Services.EDMIService.wsdl @@ -6,6 +6,7 @@ + diff --git a/ECM.JobRunner.Common/Connected Services/JobRunnerReference/ECM.JobRunner.Common.xsd b/ECM.JobRunner.Common/Connected Services/JobRunnerReference/ECM.JobRunner.Common.xsd index ba385b7..e364ff2 100644 --- a/ECM.JobRunner.Common/Connected Services/JobRunnerReference/ECM.JobRunner.Common.xsd +++ b/ECM.JobRunner.Common/Connected Services/JobRunnerReference/ECM.JobRunner.Common.xsd @@ -1,6 +1,7 @@  + @@ -67,4 +68,17 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/ECM.JobRunner.Common/Connected Services/JobRunnerReference/ECM.JobRunner.Windows.xsd b/ECM.JobRunner.Common/Connected Services/JobRunnerReference/ECM.JobRunner.Windows.xsd index 463249c..871d11f 100644 --- a/ECM.JobRunner.Common/Connected Services/JobRunnerReference/ECM.JobRunner.Windows.xsd +++ b/ECM.JobRunner.Common/Connected Services/JobRunnerReference/ECM.JobRunner.Windows.xsd @@ -49,6 +49,7 @@ + diff --git a/ECM.JobRunner.Common/Connected Services/JobRunnerReference/Reference.svcmap b/ECM.JobRunner.Common/Connected Services/JobRunnerReference/Reference.svcmap index 809de52..4263f48 100644 --- a/ECM.JobRunner.Common/Connected Services/JobRunnerReference/Reference.svcmap +++ b/ECM.JobRunner.Common/Connected Services/JobRunnerReference/Reference.svcmap @@ -28,6 +28,7 @@ + diff --git a/ECM.JobRunner.Common/Connected Services/JobRunnerReference/Reference.vb b/ECM.JobRunner.Common/Connected Services/JobRunnerReference/Reference.vb index 4baf8c0..b4df94d 100644 --- a/ECM.JobRunner.Common/Connected Services/JobRunnerReference/Reference.vb +++ b/ECM.JobRunner.Common/Connected Services/JobRunnerReference/Reference.vb @@ -15,81 +15,81 @@ Imports System Imports System.Runtime.Serialization Namespace JobRunnerReference - - + + _ Partial Public Class BaseBaseResponse Inherits Object Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged - - + + _ Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject - - + + _ Private ErrorDetailsField As String - - + + _ Private ErrorMessageField As String - - + + _ Private OKField As Boolean - - + + _ Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData Get Return Me.extensionDataField End Get Set - Me.extensionDataField = Value + Me.extensionDataField = value End Set End Property - - + + _ Public Property ErrorDetails() As String Get Return Me.ErrorDetailsField End Get Set - If (Object.ReferenceEquals(Me.ErrorDetailsField, Value) <> True) Then - Me.ErrorDetailsField = Value + If (Object.ReferenceEquals(Me.ErrorDetailsField, value) <> true) Then + Me.ErrorDetailsField = value Me.RaisePropertyChanged("ErrorDetails") End If End Set End Property - - + + _ Public Property ErrorMessage() As String Get Return Me.ErrorMessageField End Get Set - If (Object.ReferenceEquals(Me.ErrorMessageField, Value) <> True) Then - Me.ErrorMessageField = Value + If (Object.ReferenceEquals(Me.ErrorMessageField, value) <> true) Then + Me.ErrorMessageField = value Me.RaisePropertyChanged("ErrorMessage") End If End Set End Property - - + + _ Public Property OK() As Boolean Get Return Me.OKField End Get Set - If (Me.OKField.Equals(Value) <> True) Then - Me.OKField = Value + If (Me.OKField.Equals(value) <> true) Then + Me.OKField = value Me.RaisePropertyChanged("OK") End If End Set End Property - + Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged - + Protected Sub RaisePropertyChanged(ByVal propertyName As String) Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent If (Not (propertyChanged) Is Nothing) Then @@ -97,198 +97,214 @@ Namespace JobRunnerReference End If End Sub End Class - - + + _ Partial Public Class UpdateJobUpdateJobResponse Inherits JobRunnerReference.BaseBaseResponse End Class - - + + _ Partial Public Class GetJobConfigGetJobConfigResponse Inherits JobRunnerReference.BaseBaseResponse - - + + _ Private JobDefinitionsField() As JobRunnerReference.JobDefinition - - + + _ Private JobTypesField() As JobRunnerReference.JobType - - + + _ + Private WindreamObjectTypesField() As JobRunnerReference.ObjectType + + _ Public Property JobDefinitions() As JobRunnerReference.JobDefinition() Get Return Me.JobDefinitionsField End Get Set - If (Object.ReferenceEquals(Me.JobDefinitionsField, Value) <> True) Then - Me.JobDefinitionsField = Value + If (Object.ReferenceEquals(Me.JobDefinitionsField, value) <> true) Then + Me.JobDefinitionsField = value Me.RaisePropertyChanged("JobDefinitions") End If End Set End Property - - + + _ Public Property JobTypes() As JobRunnerReference.JobType() Get Return Me.JobTypesField End Get Set - If (Object.ReferenceEquals(Me.JobTypesField, Value) <> True) Then - Me.JobTypesField = Value + If (Object.ReferenceEquals(Me.JobTypesField, value) <> true) Then + Me.JobTypesField = value Me.RaisePropertyChanged("JobTypes") End If End Set End Property + + _ + Public Property WindreamObjectTypes() As JobRunnerReference.ObjectType() + Get + Return Me.WindreamObjectTypesField + End Get + Set + If (Object.ReferenceEquals(Me.WindreamObjectTypesField, value) <> true) Then + Me.WindreamObjectTypesField = value + Me.RaisePropertyChanged("WindreamObjectTypes") + End If + End Set + End Property End Class - - + + _ Partial Public Class GetJobStatusGetJobStatusResponse Inherits JobRunnerReference.BaseBaseResponse - - + + _ Private HistoryItemsField() As JobRunnerReference.HistoryItem - - + + _ Private StatusItemsField() As JobRunnerReference.StatusItem - - + + _ Public Property HistoryItems() As JobRunnerReference.HistoryItem() Get Return Me.HistoryItemsField End Get Set - If (Object.ReferenceEquals(Me.HistoryItemsField, Value) <> True) Then - Me.HistoryItemsField = Value + If (Object.ReferenceEquals(Me.HistoryItemsField, value) <> true) Then + Me.HistoryItemsField = value Me.RaisePropertyChanged("HistoryItems") End If End Set End Property - - + + _ Public Property StatusItems() As JobRunnerReference.StatusItem() Get Return Me.StatusItemsField End Get Set - If (Object.ReferenceEquals(Me.StatusItemsField, Value) <> True) Then - Me.StatusItemsField = Value + If (Object.ReferenceEquals(Me.StatusItemsField, value) <> true) Then + Me.StatusItemsField = value Me.RaisePropertyChanged("StatusItems") End If End Set End Property End Class - - + + _ Partial Public Class HistoryItem Inherits Object Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged - - + + _ Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject - - + + _ Private CreatedAtField As Date - - + + _ Private ErrorMessageField As String - - + + _ Private JobNameField As String - - + + _ Private MessageField As String - - + + _ Private SuccessfulField As Boolean - - + + _ Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData Get Return Me.extensionDataField End Get Set - Me.extensionDataField = Value + Me.extensionDataField = value End Set End Property - - + + _ Public Property CreatedAt() As Date Get Return Me.CreatedAtField End Get Set - If (Me.CreatedAtField.Equals(Value) <> True) Then - Me.CreatedAtField = Value + If (Me.CreatedAtField.Equals(value) <> true) Then + Me.CreatedAtField = value Me.RaisePropertyChanged("CreatedAt") End If End Set End Property - - + + _ Public Property ErrorMessage() As String Get Return Me.ErrorMessageField End Get Set - If (Object.ReferenceEquals(Me.ErrorMessageField, Value) <> True) Then - Me.ErrorMessageField = Value + If (Object.ReferenceEquals(Me.ErrorMessageField, value) <> true) Then + Me.ErrorMessageField = value Me.RaisePropertyChanged("ErrorMessage") End If End Set End Property - - + + _ Public Property JobName() As String Get Return Me.JobNameField End Get Set - If (Object.ReferenceEquals(Me.JobNameField, Value) <> True) Then - Me.JobNameField = Value + If (Object.ReferenceEquals(Me.JobNameField, value) <> true) Then + Me.JobNameField = value Me.RaisePropertyChanged("JobName") End If End Set End Property - - + + _ Public Property Message() As String Get Return Me.MessageField End Get Set - If (Object.ReferenceEquals(Me.MessageField, Value) <> True) Then - Me.MessageField = Value + If (Object.ReferenceEquals(Me.MessageField, value) <> true) Then + Me.MessageField = value Me.RaisePropertyChanged("Message") End If End Set End Property - - + + _ Public Property Successful() As Boolean Get Return Me.SuccessfulField End Get Set - If (Me.SuccessfulField.Equals(Value) <> True) Then - Me.SuccessfulField = Value + If (Me.SuccessfulField.Equals(value) <> true) Then + Me.SuccessfulField = value Me.RaisePropertyChanged("Successful") End If End Set End Property - + Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged - + Protected Sub RaisePropertyChanged(ByVal propertyName As String) Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent If (Not (propertyChanged) Is Nothing) Then @@ -296,158 +312,158 @@ Namespace JobRunnerReference End If End Sub End Class - - + + _ Partial Public Class StatusItem Inherits Object Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged - - + + _ Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject - - + + _ Private CompleteTimeField As Date - - + + _ Private ExecutingField As Boolean - - + + _ Private ExecutionTimeField As System.TimeSpan - - + + _ Private IdField As String - - + + _ Private NameField As String - - + + _ Private ProgressCurrentField As Integer - - + + _ Private ProgressTotalField As Integer - - + + _ Private StartTimeField As Date - - + + _ Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData Get Return Me.extensionDataField End Get Set - Me.extensionDataField = Value + Me.extensionDataField = value End Set End Property - - + + _ Public Property CompleteTime() As Date Get Return Me.CompleteTimeField End Get Set - If (Me.CompleteTimeField.Equals(Value) <> True) Then - Me.CompleteTimeField = Value + If (Me.CompleteTimeField.Equals(value) <> true) Then + Me.CompleteTimeField = value Me.RaisePropertyChanged("CompleteTime") End If End Set End Property - - + + _ Public Property Executing() As Boolean Get Return Me.ExecutingField End Get Set - If (Me.ExecutingField.Equals(Value) <> True) Then - Me.ExecutingField = Value + If (Me.ExecutingField.Equals(value) <> true) Then + Me.ExecutingField = value Me.RaisePropertyChanged("Executing") End If End Set End Property - - + + _ Public Property ExecutionTime() As System.TimeSpan Get Return Me.ExecutionTimeField End Get Set - If (Me.ExecutionTimeField.Equals(Value) <> True) Then - Me.ExecutionTimeField = Value + If (Me.ExecutionTimeField.Equals(value) <> true) Then + Me.ExecutionTimeField = value Me.RaisePropertyChanged("ExecutionTime") End If End Set End Property - - + + _ Public Property Id() As String Get Return Me.IdField End Get Set - If (Object.ReferenceEquals(Me.IdField, Value) <> True) Then - Me.IdField = Value + If (Object.ReferenceEquals(Me.IdField, value) <> true) Then + Me.IdField = value Me.RaisePropertyChanged("Id") End If End Set End Property - - + + _ Public Property Name() As String Get Return Me.NameField End Get Set - If (Object.ReferenceEquals(Me.NameField, Value) <> True) Then - Me.NameField = Value + If (Object.ReferenceEquals(Me.NameField, value) <> true) Then + Me.NameField = value Me.RaisePropertyChanged("Name") End If End Set End Property - - + + _ Public Property ProgressCurrent() As Integer Get Return Me.ProgressCurrentField End Get Set - If (Me.ProgressCurrentField.Equals(Value) <> True) Then - Me.ProgressCurrentField = Value + If (Me.ProgressCurrentField.Equals(value) <> true) Then + Me.ProgressCurrentField = value Me.RaisePropertyChanged("ProgressCurrent") End If End Set End Property - - + + _ Public Property ProgressTotal() As Integer Get Return Me.ProgressTotalField End Get Set - If (Me.ProgressTotalField.Equals(Value) <> True) Then - Me.ProgressTotalField = Value + If (Me.ProgressTotalField.Equals(value) <> true) Then + Me.ProgressTotalField = value Me.RaisePropertyChanged("ProgressTotal") End If End Set End Property - - + + _ Public Property StartTime() As Date Get Return Me.StartTimeField End Get Set - If (Me.StartTimeField.Equals(Value) <> True) Then - Me.StartTimeField = Value + If (Me.StartTimeField.Equals(value) <> true) Then + Me.StartTimeField = value Me.RaisePropertyChanged("StartTime") End If End Set End Property - + Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged - + Protected Sub RaisePropertyChanged(ByVal propertyName As String) Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent If (Not (propertyChanged) Is Nothing) Then @@ -455,126 +471,126 @@ Namespace JobRunnerReference End If End Sub End Class - - + + _ Partial Public Class JobDefinition Inherits Object Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged - - + + _ Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject - - + + _ Private ActiveField As Boolean - - + + _ Private CronScheduleField As String - - + + _ Private IdField As Integer - - + + _ Private NameField As String - - + + _ Private TypeField As JobRunnerReference.JobType - - + + _ Private TypeIdField As Integer - - + + _ Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData Get Return Me.extensionDataField End Get Set - Me.extensionDataField = Value + Me.extensionDataField = value End Set End Property - - + + _ Public Property Active() As Boolean Get Return Me.ActiveField End Get Set - If (Me.ActiveField.Equals(Value) <> True) Then - Me.ActiveField = Value + If (Me.ActiveField.Equals(value) <> true) Then + Me.ActiveField = value Me.RaisePropertyChanged("Active") End If End Set End Property - - + + _ Public Property CronSchedule() As String Get Return Me.CronScheduleField End Get Set - If (Object.ReferenceEquals(Me.CronScheduleField, Value) <> True) Then - Me.CronScheduleField = Value + If (Object.ReferenceEquals(Me.CronScheduleField, value) <> true) Then + Me.CronScheduleField = value Me.RaisePropertyChanged("CronSchedule") End If End Set End Property - - + + _ Public Property Id() As Integer Get Return Me.IdField End Get Set - If (Me.IdField.Equals(Value) <> True) Then - Me.IdField = Value + If (Me.IdField.Equals(value) <> true) Then + Me.IdField = value Me.RaisePropertyChanged("Id") End If End Set End Property - - + + _ Public Property Name() As String Get Return Me.NameField End Get Set - If (Object.ReferenceEquals(Me.NameField, Value) <> True) Then - Me.NameField = Value + If (Object.ReferenceEquals(Me.NameField, value) <> true) Then + Me.NameField = value Me.RaisePropertyChanged("Name") End If End Set End Property - - + + _ Public Property Type() As JobRunnerReference.JobType Get Return Me.TypeField End Get Set - If (Object.ReferenceEquals(Me.TypeField, Value) <> True) Then - Me.TypeField = Value + If (Object.ReferenceEquals(Me.TypeField, value) <> true) Then + Me.TypeField = value Me.RaisePropertyChanged("Type") End If End Set End Property - - + + _ Public Property TypeId() As Integer Get Return Me.TypeIdField End Get Set - If (Me.TypeIdField.Equals(Value) <> True) Then - Me.TypeIdField = Value + If (Me.TypeIdField.Equals(value) <> true) Then + Me.TypeIdField = value Me.RaisePropertyChanged("TypeId") End If End Set End Property - + Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged - + Protected Sub RaisePropertyChanged(ByVal propertyName As String) Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent If (Not (propertyChanged) Is Nothing) Then @@ -582,78 +598,78 @@ Namespace JobRunnerReference End If End Sub End Class - - + + _ Partial Public Class JobType Inherits Object Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged - - + + _ Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject - - + + _ Private ActiveField As Boolean - - + + _ Private IdField As Integer - - + + _ Private NameField As String - - + + _ Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData Get Return Me.extensionDataField End Get Set - Me.extensionDataField = Value + Me.extensionDataField = value End Set End Property - - + + _ Public Property Active() As Boolean Get Return Me.ActiveField End Get Set - If (Me.ActiveField.Equals(Value) <> True) Then - Me.ActiveField = Value + If (Me.ActiveField.Equals(value) <> true) Then + Me.ActiveField = value Me.RaisePropertyChanged("Active") End If End Set End Property - - + + _ Public Property Id() As Integer Get Return Me.IdField End Get Set - If (Me.IdField.Equals(Value) <> True) Then - Me.IdField = Value + If (Me.IdField.Equals(value) <> true) Then + Me.IdField = value Me.RaisePropertyChanged("Id") End If End Set End Property - - + + _ Public Property Name() As String Get Return Me.NameField End Get Set - If (Object.ReferenceEquals(Me.NameField, Value) <> True) Then - Me.NameField = Value + If (Object.ReferenceEquals(Me.NameField, value) <> true) Then + Me.NameField = value Me.RaisePropertyChanged("Name") End If End Set End Property - + Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged - + Protected Sub RaisePropertyChanged(ByVal propertyName As String) Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent If (Not (propertyChanged) Is Nothing) Then @@ -661,156 +677,219 @@ Namespace JobRunnerReference End If End Sub End Class - - + + _ + Partial Public Class ObjectType + Inherits Object + Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged + + _ + Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject + + _ + Private IndexesField() As String + + _ + Private NameField As String + + _ + Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData + Get + Return Me.extensionDataField + End Get + Set + Me.extensionDataField = value + End Set + End Property + + _ + Public Property Indexes() As String() + Get + Return Me.IndexesField + End Get + Set + If (Object.ReferenceEquals(Me.IndexesField, value) <> true) Then + Me.IndexesField = value + Me.RaisePropertyChanged("Indexes") + End If + End Set + End Property + + _ + Public Property Name() As String + Get + Return Me.NameField + End Get + Set + If (Object.ReferenceEquals(Me.NameField, value) <> true) Then + Me.NameField = value + Me.RaisePropertyChanged("Name") + End If + End Set + End Property + + Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged + + Protected Sub RaisePropertyChanged(ByVal propertyName As String) + Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent + If (Not (propertyChanged) Is Nothing) Then + propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName)) + End If + End Sub + End Class + + _ Partial Public Class UpdateJobUpdateJobRequest Inherits Object Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged - - + + _ Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject - - + + _ Private ActionField As JobRunnerReference.UpdateJobUpdateJobRequest.UpdateJobAction - - + + _ Private JobField As JobRunnerReference.JobDefinition - - + + _ Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData Get Return Me.extensionDataField End Get Set - Me.extensionDataField = Value + Me.extensionDataField = value End Set End Property - - + + _ Public Property Action() As JobRunnerReference.UpdateJobUpdateJobRequest.UpdateJobAction Get Return Me.ActionField End Get Set - If (Me.ActionField.Equals(Value) <> True) Then - Me.ActionField = Value + If (Me.ActionField.Equals(value) <> true) Then + Me.ActionField = value Me.RaisePropertyChanged("Action") End If End Set End Property - - + + _ Public Property Job() As JobRunnerReference.JobDefinition Get Return Me.JobField End Get Set - If (Object.ReferenceEquals(Me.JobField, Value) <> True) Then - Me.JobField = Value + If (Object.ReferenceEquals(Me.JobField, value) <> true) Then + Me.JobField = value Me.RaisePropertyChanged("Job") End If End Set End Property - + Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged - + Protected Sub RaisePropertyChanged(ByVal propertyName As String) Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent If (Not (propertyChanged) Is Nothing) Then propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName)) End If End Sub - - + + _ Public Enum UpdateJobAction As Integer - - + + _ Create = 0 - - + + _ Update = 1 - - + + _ Delete = 2 End Enum End Class - - + + _ Public Interface IEDMIService - - + + _ Function GetHeartbeat() As Date - - + + _ Function GetHeartbeatAsync() As System.Threading.Tasks.Task(Of Date) - - + + _ Function GetJobStatus() As JobRunnerReference.GetJobStatusGetJobStatusResponse - - + + _ Function GetJobStatusAsync() As System.Threading.Tasks.Task(Of JobRunnerReference.GetJobStatusGetJobStatusResponse) - - + + _ Function UpdateJob(ByVal pData As JobRunnerReference.UpdateJobUpdateJobRequest) As JobRunnerReference.UpdateJobUpdateJobResponse - - + + _ Function UpdateJobAsync(ByVal pData As JobRunnerReference.UpdateJobUpdateJobRequest) As System.Threading.Tasks.Task(Of JobRunnerReference.UpdateJobUpdateJobResponse) - - + + _ Function GetJobConfig() As JobRunnerReference.GetJobConfigGetJobConfigResponse - - + + _ Function GetJobConfigAsync() As System.Threading.Tasks.Task(Of JobRunnerReference.GetJobConfigGetJobConfigResponse) End Interface - - + + _ Public Interface IEDMIServiceChannel Inherits JobRunnerReference.IEDMIService, System.ServiceModel.IClientChannel End Interface - - + + _ Partial Public Class EDMIServiceClient Inherits System.ServiceModel.ClientBase(Of JobRunnerReference.IEDMIService) Implements JobRunnerReference.IEDMIService - + Public Sub New() MyBase.New End Sub - + Public Sub New(ByVal endpointConfigurationName As String) MyBase.New(endpointConfigurationName) End Sub - + Public Sub New(ByVal endpointConfigurationName As String, ByVal remoteAddress As String) MyBase.New(endpointConfigurationName, remoteAddress) End Sub - + Public Sub New(ByVal endpointConfigurationName As String, ByVal remoteAddress As System.ServiceModel.EndpointAddress) MyBase.New(endpointConfigurationName, remoteAddress) End Sub - + Public Sub New(ByVal binding As System.ServiceModel.Channels.Binding, ByVal remoteAddress As System.ServiceModel.EndpointAddress) MyBase.New(binding, remoteAddress) End Sub - + Public Function GetHeartbeat() As Date Implements JobRunnerReference.IEDMIService.GetHeartbeat Return MyBase.Channel.GetHeartbeat End Function - + Public Function GetHeartbeatAsync() As System.Threading.Tasks.Task(Of Date) Implements JobRunnerReference.IEDMIService.GetHeartbeatAsync Return MyBase.Channel.GetHeartbeatAsync End Function - + Public Function GetJobStatus() As JobRunnerReference.GetJobStatusGetJobStatusResponse Implements JobRunnerReference.IEDMIService.GetJobStatus Return MyBase.Channel.GetJobStatus End Function - + Public Function GetJobStatusAsync() As System.Threading.Tasks.Task(Of JobRunnerReference.GetJobStatusGetJobStatusResponse) Implements JobRunnerReference.IEDMIService.GetJobStatusAsync Return MyBase.Channel.GetJobStatusAsync End Function diff --git a/ECM.JobRunner.Common/ECM.JobRunner.Common.vbproj b/ECM.JobRunner.Common/ECM.JobRunner.Common.vbproj index 76d76e4..85831db 100644 --- a/ECM.JobRunner.Common/ECM.JobRunner.Common.vbproj +++ b/ECM.JobRunner.Common/ECM.JobRunner.Common.vbproj @@ -73,6 +73,7 @@ + @@ -90,6 +91,7 @@ Settings.settings True + @@ -101,6 +103,9 @@ + + Designer + Designer diff --git a/ECM.JobRunner.Common/ProfileConfig/ImportProfile.vb b/ECM.JobRunner.Common/ProfileConfig/ImportProfile.vb new file mode 100644 index 0000000..ecc0d85 --- /dev/null +++ b/ECM.JobRunner.Common/ProfileConfig/ImportProfile.vb @@ -0,0 +1,15 @@ +Public Class ImportProfile + Public Property Id As Integer + Public Property JobId As Integer + + Public Property ObjectTypeName As String + + Public Property SourceFolder As String + Public Property TargetFolder As String + Public Property BackupFolder As String + Public Property SubfolderDateFormat As String + + Public Property FileExcludeRegex As String + Public Property DeleteFiles As Boolean + Public Property IncludeSubfolders As Boolean +End Class diff --git a/ECM.JobRunner.Common/Windream/ObjectType.vb b/ECM.JobRunner.Common/Windream/ObjectType.vb new file mode 100644 index 0000000..eb5bb5e --- /dev/null +++ b/ECM.JobRunner.Common/Windream/ObjectType.vb @@ -0,0 +1,4 @@ +Public Class ObjectType + Public Name As String + Public Indexes As New List(Of String) +End Class diff --git a/ECM.JobRunner.Web/Components/Job/JobForm.razor b/ECM.JobRunner.Web/Components/Job/JobForm.razor index 66ff5ae..b25f541 100644 --- a/ECM.JobRunner.Web/Components/Job/JobForm.razor +++ b/ECM.JobRunner.Web/Components/Job/JobForm.razor @@ -49,7 +49,8 @@ else
- + + Back @@ -73,6 +74,11 @@ else private JobDefinition? job = new(); private List? types; + protected string GetBackUrl() + { + return JobId == Constants.ENTITY_ID_NEW ? "jobs" : $"jobs/{JobId}"; + } + protected override async Task OnInitializedAsync() { types = await Jobs.GetJobTypes(); diff --git a/ECM.JobRunner.Web/Components/Status/Progress.razor b/ECM.JobRunner.Web/Components/Status/Progress.razor index 2c1feb6..a7b494e 100644 --- a/ECM.JobRunner.Web/Components/Status/Progress.razor +++ b/ECM.JobRunner.Web/Components/Status/Progress.razor @@ -1,25 +1,27 @@ @using ECM.JobRunner.Common.JobRunnerReference; -
+
+ >@jobStatus.ProgressCurrent/@jobStatus.ProgressTotal
@code { [Parameter] public StatusItem? jobStatus { get; set; } - protected float getCompletedPercent(StatusItem? entry) + protected int getCompletedPercent(StatusItem? entry) { if (entry != null && entry.ProgressCurrent > 0 && entry.ProgressTotal > 0) { - return ((float)entry.ProgressCurrent / (float)entry.ProgressTotal) * 100; + float fraction = (float)entry.ProgressCurrent / entry.ProgressTotal; + float percent = fraction * 100; + return (int)percent; } else { diff --git a/ECM.JobRunner.Web/Data/DashboardService.cs b/ECM.JobRunner.Web/Data/DashboardService.cs index 0792562..714c4bf 100644 --- a/ECM.JobRunner.Web/Data/DashboardService.cs +++ b/ECM.JobRunner.Web/Data/DashboardService.cs @@ -35,9 +35,7 @@ namespace ECM.JobRunner.Web.Data private async void PollingTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { OnDataUpdated(await GetData()); - } - - + } public async Task GetData() { diff --git a/ECM.JobRunner.Web/Pages/History.razor b/ECM.JobRunner.Web/Pages/History.razor index 7c6cb0f..10d9478 100644 --- a/ECM.JobRunner.Web/Pages/History.razor +++ b/ECM.JobRunner.Web/Pages/History.razor @@ -27,7 +27,6 @@ else @entry.JobName
- @entry.Message @entry.CreatedAt.ToShortTimeString() diff --git a/ECM.JobRunner.Web/Pages/Job/JobList.razor b/ECM.JobRunner.Web/Pages/Job/JobList.razor index 6dc4ccb..42d2d0a 100644 --- a/ECM.JobRunner.Web/Pages/Job/JobList.razor +++ b/ECM.JobRunner.Web/Pages/Job/JobList.razor @@ -7,7 +7,7 @@

Jobs

-@if (jobs == null) +@if (filteredJobs == null) {
@@ -105,13 +104,13 @@ else protected async override void OnInitialized() { - DashboardResponse data = await Api.GetData(); + DashboardResponse data = await Dashboard.GetData(); UpdateData(data); - Api.DataUpdated += Api_DataUpdated; + Dashboard.DataUpdated += Dashboard_DataUpdated; } - protected void Api_DataUpdated(object sender, DashboardResponse e) + protected void Dashboard_DataUpdated(object sender, DashboardResponse e) { UpdateData(e); } diff --git a/ECM.JobRunner.Windows/Config.vb b/ECM.JobRunner.Windows/Config.vb index 6f7dfa0..b4650fc 100644 --- a/ECM.JobRunner.Windows/Config.vb +++ b/ECM.JobRunner.Windows/Config.vb @@ -8,4 +8,13 @@ Public Class Config Public Property Host As String = "localhost" Public Property Port As Integer = 9000 Public Property Name As String = "JobRunner" + Public Property Windream As New WindreamConfig + + Public Class WindreamConfig + Public Server As String = "localhost" + Public Username As String = "DD_ECM" + Public Password As String = "DD_ECM" + Public Domain As String = "dd-gan" + Public DriveLetter As String = "W" + End Class End Class diff --git a/ECM.JobRunner.Windows/Constants.vb b/ECM.JobRunner.Windows/Constants.vb index 99f5712..93342d8 100644 --- a/ECM.JobRunner.Windows/Constants.vb +++ b/ECM.JobRunner.Windows/Constants.vb @@ -8,4 +8,9 @@ Public Const JOB_CONFIG_DATABASE = "__Database" Public Const JOB_CONFIG_STATE = "__State" End Class + + Public Class Jobs + Public Const JOB_TYPE_IMPORT = 1 + Public Const JOB_TYPE_INDEX = 2 + End Class End Class diff --git a/ECM.JobRunner.Windows/ECM.JobRunner.Windows.vbproj b/ECM.JobRunner.Windows/ECM.JobRunner.Windows.vbproj index ebe74de..9c81f1c 100644 --- a/ECM.JobRunner.Windows/ECM.JobRunner.Windows.vbproj +++ b/ECM.JobRunner.Windows/ECM.JobRunner.Windows.vbproj @@ -67,6 +67,9 @@ ..\..\DDModules\Messaging\bin\Debug\DigitalData.Modules.Messaging.dll + + ..\..\DDModules\Windream\bin\Debug\DigitalData.Modules.Windream.dll + ..\packages\Microsoft.Extensions.Logging.Abstractions.2.1.1\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll diff --git a/ECM.JobRunner.Windows/Scheduler/JobScheduler.vb b/ECM.JobRunner.Windows/Scheduler/JobScheduler.vb index 7228379..b1223ba 100644 --- a/ECM.JobRunner.Windows/Scheduler/JobScheduler.vb +++ b/ECM.JobRunner.Windows/Scheduler/JobScheduler.vb @@ -97,6 +97,7 @@ Namespace Scheduler .Name = pJob.Name, .Enabled = pJob.Active, .Arguments = New Dictionary(Of String, String) From { + {"Id", pJob.Id}, {"Name", pJob.Name} }, .CronSchedule = pJob.CronSchedule diff --git a/ECM.JobRunner.Windows/Scheduler/Jobs/BaseJob.vb b/ECM.JobRunner.Windows/Scheduler/Jobs/BaseJob.vb index 55c175c..53ff8db 100644 --- a/ECM.JobRunner.Windows/Scheduler/Jobs/BaseJob.vb +++ b/ECM.JobRunner.Windows/Scheduler/Jobs/BaseJob.vb @@ -10,17 +10,24 @@ Namespace Scheduler.Jobs Friend Database As MSSQLServer Friend State As State + Friend Id As Integer + Friend Name As String + Private ctx As IJobExecutionContext Public Function InitializeJob(context As IJobExecutionContext) As Dictionary(Of String, String) ctx = context Dim oJobData = context.MergedJobDataMap + Dim oArgs As Dictionary(Of String, String) = oJobData.Item(Constants.Scheduler.JOB_CONFIG_ARGUMENTS) LogConfig = oJobData.Item(Constants.Scheduler.JOB_CONFIG_LOGCONFIG) Database = oJobData.Item(Constants.Scheduler.JOB_CONFIG_DATABASE) State = oJobData.Item(Constants.Scheduler.JOB_CONFIG_STATE) Logger = LogConfig.GetLogger() + Id = Integer.Parse(oArgs.Item("Id")) + Name = oArgs.Item("Name") + State.JobStatus.Start(ctx) Return oJobData.Item(Constants.Scheduler.JOB_CONFIG_ARGUMENTS) End Function diff --git a/ECM.JobRunner.Windows/Scheduler/Jobs/DebugJob.vb b/ECM.JobRunner.Windows/Scheduler/Jobs/DebugJob.vb index ab51984..c9e6417 100644 --- a/ECM.JobRunner.Windows/Scheduler/Jobs/DebugJob.vb +++ b/ECM.JobRunner.Windows/Scheduler/Jobs/DebugJob.vb @@ -8,10 +8,9 @@ Namespace Scheduler.Jobs Private Function IJob_Execute(context As IJobExecutionContext) As Task Implements IJob.Execute Dim oArgs = MyBase.InitializeJob(context) - Dim oArg1 = oArgs.Item("Arg1") Logger.Info("I'm a debug Job!") - Logger.Info("Arg1: [{0}]", oArg1) + Logger.Info("Name: [{0}]", Name) Dim oResult = New JobResult() With { .Description = $"I'm a debug job and my result was [{Guid.NewGuid}]." diff --git a/ECM.JobRunner.Windows/Scheduler/Jobs/FileImportJob.vb b/ECM.JobRunner.Windows/Scheduler/Jobs/FileImportJob.vb index da99e5a..9b4bb63 100644 --- a/ECM.JobRunner.Windows/Scheduler/Jobs/FileImportJob.vb +++ b/ECM.JobRunner.Windows/Scheduler/Jobs/FileImportJob.vb @@ -2,31 +2,107 @@ Imports Quartz + Namespace Scheduler.Jobs + + ''' + ''' + ''' Parameters / Properties + ''' ======================= + ''' + ''' - SourceDirectory + ''' - TargetDirectory + ''' - Include Subdirectories + ''' - Delete Subdirectories + ''' - Backup + ''' - BackupFolder + ''' - Overwrite + ''' - Windream DocType + ''' - Delete Files + ''' - Delete Directory + ''' - Delay + ''' + ''' Rules + ''' ====== + ''' + ''' - TargetIndex + ''' - Active + ''' - Index From + ''' - Static + ''' - Static Value + ''' - File + ''' - Folder + ''' - Index Type + ''' - Separator + ''' - Current Date + ''' - Current Short Date + ''' - KOMPLETT + ''' - BEREICH + ''' - REST + ''' - TRENNZEICHEN + ''' - Separator + ''' - Remove Zeroes + ''' - Include Extension + ''' - OrderKey + ''' + ''' Public Class FileImportJob Inherits BaseJob Implements IJob Public Function Execute(context As IJobExecutionContext) As Task Implements IJob.Execute Dim oArgs = MyBase.InitializeJob(context) - Dim oName = oArgs.Item("Name") - Logger.Info("Running File Import [{0}]", oName) + Try + Logger.Info("Running File Import [{0}]", Name) + + Dim oProfile = State.ProfileDefintions.ImportProfiles.Where(Function(p) p.JobId = Id).SingleOrDefault() + + Dim oSourceDirectory As String = oProfile.SourceFolder + Dim oRecursive As Boolean = oProfile.IncludeSubfolders + Dim oFiles = GetFiles(oSourceDirectory, oRecursive) + + If oFiles.Count = 0 Then + Logger.Info("No Files for Profile [{0}]", Name) + Return Task.FromResult(True) + End If + + 'Dim oMax = 100 + 'For index = 1 To oMax + ' UpdateProgress(index, oMax) + ' Threading.Thread.Sleep(100) + 'Next - Dim oMax = 100 - For index = 1 To oMax - UpdateProgress(index, oMax) - Threading.Thread.Sleep(100) - Next + Dim oResult = New JobResult() With { + .Description = $"File Import Job [{Name}] completed!" + } + + context.Result = oResult + + Return Task.FromResult(True) + Catch ex As Exception + Logger.Error(ex) + + + Return Task.FromResult(False) + Finally + CompleteJob() + End Try + + End Function - Dim oResult = New JobResult() With { - .Description = $"File Import Job [{oName}] completed!" - } + Private Function GetFiles(pDirectory As String, pRecursive As Boolean) As String() + Dim oFiles As String() - context.Result = oResult + If pRecursive Then + oFiles = IO.Directory.GetFiles(pDirectory, "*.*", IO.SearchOption.AllDirectories) + Logger.Info("Found [{0}] files in Folder [{1}] (and subdirectories)", oFiles.Count, pDirectory) + Else + oFiles = IO.Directory.GetFiles(pDirectory, "*.*", IO.SearchOption.TopDirectoryOnly) + Logger.Info("Found [{0}] files in Folder [{1}]", oFiles.Count, pDirectory) + End If - CompleteJob() - Return Task.FromResult(True) + Return oFiles End Function End Class diff --git a/ECM.JobRunner.Windows/Scheduler/Jobs/FileIndexJob.vb b/ECM.JobRunner.Windows/Scheduler/Jobs/FileIndexJob.vb index 566f530..790780f 100644 --- a/ECM.JobRunner.Windows/Scheduler/Jobs/FileIndexJob.vb +++ b/ECM.JobRunner.Windows/Scheduler/Jobs/FileIndexJob.vb @@ -8,12 +8,11 @@ Namespace Scheduler.Jobs Public Function Execute(context As IJobExecutionContext) As Task Implements IJob.Execute Dim oArgs = MyBase.InitializeJob(context) - Dim oName = oArgs.Item("Name") - Logger.Info("Running File Index [{0}]", oName) + Logger.Info("Running File Index [{0}]", Name) Dim oResult = New JobResult() With { - .Description = $"File Index Job [{oName}] completed!" + .Description = $"File Index Job [{Name}] completed!" } context.Result = oResult diff --git a/ECM.JobRunner.Windows/Service.vb b/ECM.JobRunner.Windows/Service.vb index 0b49770..f9f2251 100644 --- a/ECM.JobRunner.Windows/Service.vb +++ b/ECM.JobRunner.Windows/Service.vb @@ -2,6 +2,7 @@ Imports DigitalData.Modules.Config Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Messaging.WCF +Imports DigitalData.Modules.Windream Public Class Service @@ -16,6 +17,7 @@ Public Class Service Private Scheduler As Scheduler.JobScheduler Private Database As MSSQLServer Private State As State + Private Windream As Windream Protected Overrides Async Sub OnStart(ByVal args() As String) ' Code zum Starten des Dienstes hier einfügen. Diese Methode sollte Vorgänge @@ -37,8 +39,13 @@ Public Class Service ' set logging debug flag from config LogConfig.Debug = Config.Debug + ' Initialize Windream + Dim oWindream = Config.Windream + Windream = New Windream(LogConfig, True, oWindream.DriveLetter, "/", True, + oWindream.Server, oWindream.Username, oWindream.Password, oWindream.Domain) + ' initialize global state - State = New State(LogConfig, Database) + State = New State(LogConfig, Database, Windream) ' start the scheduler Scheduler = New Scheduler.JobScheduler(LogConfig, Database, State) diff --git a/ECM.JobRunner.Windows/State.vb b/ECM.JobRunner.Windows/State.vb index 57b60b5..cad19c9 100644 --- a/ECM.JobRunner.Windows/State.vb +++ b/ECM.JobRunner.Windows/State.vb @@ -4,34 +4,86 @@ Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Language Imports ECM.JobRunner.Common Imports ECM.JobRunner.Windows.Scheduler -Imports System.Runtime.InteropServices +Imports DigitalData.Modules.Windream Public Class State Inherits BaseClass Private ReadOnly Database As MSSQLServer + Private ReadOnly Windream As Windream Public ReadOnly JobHistory As JobHistory Public ReadOnly JobStatus As JobStatus Public ReadOnly Property JobTypes As New List(Of JobType) + Public ReadOnly Property ObjectTypes As New List(Of ObjectType) + Public ReadOnly Property JobDefinitions As New List(Of JobDefinition) - Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer) + Public ReadOnly Property ProfileDefintions As New ProfileDefinitions + + Public Class ProfileDefinitions + Public Property ImportProfiles As New List(Of ImportProfile) + End Class + + Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer, pWindream As Windream) MyBase.New(pLogConfig) Database = pDatabase + Windream = pWindream JobHistory = New JobHistory(pLogConfig) JobStatus = New JobStatus(pLogConfig) - _JobTypes = GetJobTypes() - _JobDefinitions = GetJobDefinitions(_JobTypes) + LoadData() End Sub Public Sub Reload() + LoadData() + End Sub + + Private Sub LoadData() _JobTypes = GetJobTypes() + _ObjectTypes = GetObjectTypes() + _JobDefinitions = GetJobDefinitions(_JobTypes) + _ProfileDefintions.ImportProfiles = GetImportProfiles() End Sub + Private Function GetObjectTypes() As List(Of ObjectType) + Dim oObjectTypes As New List(Of ObjectType) + Try + Logger.Info("Loading Windream Object Types..") + Dim oObjectTypesNames = Windream.ObjectTypes + Logger.Info("[{0}] Windream Object Types loaded!", oObjectTypes.Count) + + For Each oObjectTypeName In oObjectTypesNames + Dim oObjectType = New ObjectType With { + .Name = oObjectTypeName, + .Indexes = GetIndexesFor(oObjectTypeName) + } + oObjectTypes.Add(oObjectType) + Next + + Return oObjectTypes + Catch ex As Exception + Logger.Error(ex) + Return oObjectTypes + End Try + End Function + + Private Function GetIndexesFor(pObjectType As String) As List(Of String) + Dim oIndexes As New List(Of String) + Try + Logger.Info("Loading Windream Indexes for [{0}]..", pObjectType) + oIndexes = Windream.GetIndiciesByObjecttype(pObjectType) + Logger.Info("[{0}] Windream Indexes loaded!", oIndexes.Count) + + Return oIndexes + Catch ex As Exception + Logger.Error(ex) + Return oIndexes + End Try + End Function + Private Function GetJobTypes() As List(Of JobType) Dim oTypes As New List(Of JobType) Try @@ -67,6 +119,44 @@ Public Class State End Try End Function + Private Function GetImportProfiles() As List(Of ImportProfile) + Dim oProfiles As New List(Of ImportProfile) + + Try + Logger.Info("Loading Profiles..") + + Dim oSQL As String = "SELECT * FROM TBECM_JR_FIW_PROFILE" + Dim oTable As DataTable = Database.GetDatatable(oSQL) + + If oTable Is Nothing Then + Logger.Warn("Database Error while loading Profiles!") + Return oProfiles + End If + + Logger.Info("[{0}] Profiles loaded!", oTable.Rows.Count) + + For Each oRow As DataRow In oTable.Rows + Dim oTypeId = oRow.ItemEx("JOB_TYPE_ID", 0) + Dim oProfile As New ImportProfile With { + .Id = oRow.ItemEx("GUID", 0), + .JobId = oRow.ItemEx("JR_JOB_ID", 0), + .SourceFolder = oRow.ItemEx("SOURCE_FOLDER", "") + } + + oProfiles.Add(oProfile) + + Logger.Debug("Adding Profile for Folder [{0}]", oProfile.SourceFolder) + Next + + Return oProfiles + + Catch ex As Exception + Logger.Error(ex) + Return oProfiles + + End Try + End Function + Private Function GetJobDefinitions(pJobTypes As List(Of JobType)) As List(Of JobDefinition) Dim oJobs As New List(Of JobDefinition) @@ -92,7 +182,8 @@ Public Class State .Name = oRow.ItemEx("TITLE", ""), .Active = oRow.ItemEx("ACTIVE", 0), .CronSchedule = oRow.ItemEx("QUARTZ_DEF", "") -} + } + oJobs.Add(oJob) Logger.Debug("Adding Job [{0}]", oJob.Name) diff --git a/ECM.JobRunner.Windows/WCF/Methods/GetJobConfig.vb b/ECM.JobRunner.Windows/WCF/Methods/GetJobConfig.vb index be6decd..cb77dcd 100644 --- a/ECM.JobRunner.Windows/WCF/Methods/GetJobConfig.vb +++ b/ECM.JobRunner.Windows/WCF/Methods/GetJobConfig.vb @@ -15,7 +15,11 @@ Public Class GetJobConfig Public Function Run() As GetJobConfigResponse Return New GetJobConfigResponse With { .JobTypes = State.JobTypes, - .JobDefinitions = State.JobDefinitions + .JobDefinitions = State.JobDefinitions, + .ProfileDefinitions = New GetJobConfigResponse.ProfileDefinitionConfig With { + .ImportProfiles = State.ProfileDefintions.ImportProfiles + }, + .WindreamObjectTypes = State.ObjectTypes } End Function End Class @@ -26,8 +30,18 @@ Public Class GetJobConfig Public Property JobTypes As List(Of JobType) + + Public Property WindreamObjectTypes As List(Of ObjectType) + Public Property JobDefinitions As List(Of JobDefinition) + + + Public Property ProfileDefinitions As New ProfileDefinitionConfig + + Public Class ProfileDefinitionConfig + Public Property ImportProfiles As List(Of ImportProfile) + End Class End Class End Class