diff --git a/Common/Contracts/ODataActionsConstants.cs b/Common/Contracts/ODataActionsConstants.cs index a59b6e3..4da26b5 100644 --- a/Common/Contracts/ODataActionsConstants.cs +++ b/Common/Contracts/ODataActionsConstants.cs @@ -6,7 +6,7 @@ namespace RecurringIntegrationsScheduler.Common.Contracts /// /// Class holding all constant values related to the Odata actions used in this solution /// - public class OdataActionsConstants + public static class OdataActionsConstants { public const string GetAzureWriteUrlActionPath = "data/DataManagementDefinitionGroups/Microsoft.Dynamics.DataEntities.GetAzureWriteUrl"; public const string GetExecutionSummaryStatusActionPath = "data/DataManagementDefinitionGroups/Microsoft.Dynamics.DataEntities.GetExecutionSummaryStatus"; diff --git a/Common/Contracts/SettingsConstants.cs b/Common/Contracts/SettingsConstants.cs index aff7357..94259eb 100644 --- a/Common/Contracts/SettingsConstants.cs +++ b/Common/Contracts/SettingsConstants.cs @@ -8,7 +8,6 @@ namespace RecurringIntegrationsScheduler.Common.Contracts /// public static class SettingsConstants { - #region Common settings /// /// The AOS URI /// @@ -168,9 +167,7 @@ namespace RecurringIntegrationsScheduler.Common.Contracts /// The execution monitor job /// public const string ExecutionJob = "RecurringIntegrationsScheduler.Job.ExecutionMonitor"; - #endregion - #region Upload Job settings /// /// Input folder /// @@ -225,9 +222,7 @@ namespace RecurringIntegrationsScheduler.Common.Contracts /// Reverse order /// public const string ReverseOrder = "ReverseOrder"; - #endregion - #region Processing Job settings /// /// Processing success folder /// @@ -237,9 +232,7 @@ namespace RecurringIntegrationsScheduler.Common.Contracts /// Processing errors folder /// public const string ProcessingErrorsDir = "ProcessingErrorsDir"; - #endregion - #region Download Job settings /// /// Download success folder /// @@ -269,9 +262,7 @@ namespace RecurringIntegrationsScheduler.Common.Contracts /// Upload in order /// public const string UploadInOrder = "UploadInOrder"; - #endregion - #region Import Job settings /// /// Is execution job present /// @@ -296,13 +287,10 @@ namespace RecurringIntegrationsScheduler.Common.Contracts /// Package template /// public const string PackageTemplate = "PackageTemplate"; - #endregion - #region Execution Job settings /// /// Get import target error keys file /// public const string GetImportTargetErrorKeysFile = "GetImportTargetErrorKeysFile"; - #endregion } } \ No newline at end of file diff --git a/Common/Helpers/FileOperationsHelper.cs b/Common/Helpers/FileOperationsHelper.cs index 8c7fa64..80fbadf 100644 --- a/Common/Helpers/FileOperationsHelper.cs +++ b/Common/Helpers/FileOperationsHelper.cs @@ -61,11 +61,9 @@ namespace RecurringIntegrationsScheduler.Common.Helpers throw new DirectoryNotFoundException(); Directory.CreateDirectory(targetDirectoryName); - using (var fileStream = File.Create(filePath)) - { - sourceStream.Seek(0, SeekOrigin.Begin); - sourceStream.CopyTo(fileStream); - } + using var fileStream = File.Create(filePath); + sourceStream.Seek(0, SeekOrigin.Begin); + sourceStream.CopyTo(fileStream); } /// @@ -269,10 +267,8 @@ namespace RecurringIntegrationsScheduler.Common.Helpers } var statusData = JsonConvert.SerializeObject(dataMessage, Formatting.Indented, new StringEnumConverter()); - using (var statusFileMemoryStream = new MemoryStream(Encoding.Default.GetBytes(statusData))) - { - Create(statusFileMemoryStream, Path.Combine(Path.GetDirectoryName(dataMessage.FullPath) ?? throw new InvalidOperationException(), Path.GetFileNameWithoutExtension(dataMessage.FullPath) + statusFileExtension)); - } + using var statusFileMemoryStream = new MemoryStream(Encoding.Default.GetBytes(statusData)); + Create(statusFileMemoryStream, Path.Combine(Path.GetDirectoryName(dataMessage.FullPath) ?? throw new InvalidOperationException(), Path.GetFileNameWithoutExtension(dataMessage.FullPath) + statusFileExtension)); } /// @@ -290,10 +286,8 @@ namespace RecurringIntegrationsScheduler.Common.Helpers var logFilePath = Path.Combine(Path.GetDirectoryName(targetDataMessage.FullPath) ?? throw new InvalidOperationException(), Path.GetFileNameWithoutExtension(targetDataMessage.FullPath) + statusFileExtension); var logData = JsonConvert.SerializeObject(httpResponse, Formatting.Indented, new StringEnumConverter()); - using (var logMemoryStream = new MemoryStream(Encoding.Default.GetBytes(logData))) - { - Create(logMemoryStream, logFilePath); - } + using var logMemoryStream = new MemoryStream(Encoding.Default.GetBytes(logData)); + Create(logMemoryStream, logFilePath); } /// @@ -325,10 +319,8 @@ namespace RecurringIntegrationsScheduler.Common.Helpers logData = Resources.Unknown_error; } - using (var logMemoryStream = new MemoryStream(Encoding.Default.GetBytes(logData))) - { - Create(logMemoryStream, logFilePath); - } + using var logMemoryStream = new MemoryStream(Encoding.Default.GetBytes(logData)); + Create(logMemoryStream, logFilePath); } } } \ No newline at end of file diff --git a/Common/Helpers/HttpClientHelper.cs b/Common/Helpers/HttpClientHelper.cs index f16b99f..2672f68 100644 --- a/Common/Helpers/HttpClientHelper.cs +++ b/Common/Helpers/HttpClientHelper.cs @@ -22,12 +22,7 @@ namespace RecurringIntegrationsScheduler.Common.Helpers private readonly Settings _settings; private readonly HttpClient _httpClient; private readonly AuthenticationHelper _authenticationHelper; - private Uri _enqueueUri; - private Uri _dequeueUri; - private Uri _ackUri; - private bool _disposed; - private readonly AsyncRetryPolicy _retryPolicy; /// @@ -144,32 +139,29 @@ namespace RecurringIntegrationsScheduler.Common.Helpers /// /// Data job enqueue request Uri /// - public Uri GetEnqueueUri() + public Uri GetEnqueueUri(string legalEntity = null) { - if (_enqueueUri != null) - return _enqueueUri; + var uploadSettings = _settings as UploadJobSettings; + var enqueueUri = new UriBuilder(GetAosRequestUri("api/connector/enqueue/" + uploadSettings.ActivityId)); - if (_settings is UploadJobSettings uploadSettings) + if (!string.IsNullOrEmpty(legalEntity)) { - var enqueueUri = new UriBuilder(GetAosRequestUri("api/connector/enqueue/" + uploadSettings.ActivityId)); - - if (uploadSettings.IsDataPackage) - { - if (!string.IsNullOrEmpty(uploadSettings.Company)) - enqueueUri.Query = "company=" + uploadSettings.Company; - } - else // Individual file - { - // entity name is required - var enqueueQuery = "entity=" + uploadSettings.EntityName; - // Append company if it is specified - if (!string.IsNullOrEmpty(uploadSettings.Company)) - enqueueQuery += "&company=" + uploadSettings.Company; - enqueueUri.Query = enqueueQuery; - } - return _enqueueUri = enqueueUri.Uri; + enqueueUri.Query = "company=" + legalEntity; } - return null; + else + { + if (!string.IsNullOrEmpty(uploadSettings.Company)) + { + enqueueUri.Query = "company=" + uploadSettings.Company; + } + } + + if (!uploadSettings.IsDataPackage)// Individual file + { + // entity name is required + enqueueUri.Query += "entity=" + uploadSettings.EntityName; + } + return enqueueUri.Uri; } /// @@ -180,15 +172,8 @@ namespace RecurringIntegrationsScheduler.Common.Helpers /// public Uri GetDequeueUri() { - if (_dequeueUri != null) - return _dequeueUri; - - if (_settings is DownloadJobSettings downloadSettings) - { - var dequeueUri = new UriBuilder(GetAosRequestUri("api/connector/dequeue/" + downloadSettings.ActivityId)); - return _dequeueUri = dequeueUri.Uri; - } - return null; + var downloadSettings = _settings as DownloadJobSettings; + return new UriBuilder(GetAosRequestUri("api/connector/dequeue/" + downloadSettings.ActivityId)).Uri; } /// @@ -199,15 +184,8 @@ namespace RecurringIntegrationsScheduler.Common.Helpers /// public Uri GetAckUri() { - if (_ackUri != null) - return _ackUri; - - if (_settings is DownloadJobSettings downloadSettings) - { - var acknowledgeUri = new UriBuilder(GetAosRequestUri("api/connector/ack/" + downloadSettings.ActivityId)); - return _ackUri = acknowledgeUri.Uri; - } - return null; + var downloadSettings = _settings as DownloadJobSettings; + return new UriBuilder(GetAosRequestUri("api/connector/ack/" + downloadSettings.ActivityId)).Uri; } /// @@ -219,15 +197,12 @@ namespace RecurringIntegrationsScheduler.Common.Helpers /// public Uri GetJobStatusUri(string jobId) { - if (_settings is ProcessingJobSettings processingJobSettings) + var processingJobSettings = _settings as ProcessingJobSettings; + var jobStatusUri = new UriBuilder(GetAosRequestUri("api/connector/jobstatus/" + processingJobSettings.ActivityId)) { - var jobStatusUri = new UriBuilder(GetAosRequestUri("api/connector/jobstatus/" + processingJobSettings.ActivityId)) - { - Query = "jobId=" + jobId.Replace(@"""", "") - }; - return jobStatusUri.Uri; - } - return null; + Query = "jobId=" + jobId.Replace(@"""", "") + }; + return jobStatusUri.Uri; } /// @@ -528,14 +503,14 @@ namespace RecurringIntegrationsScheduler.Common.Helpers } private Uri GetAosRequestUri(string requestRelativePath) -        { -            var aosUri = new Uri(_settings.AosUri); -            var builder = new UriBuilder(aosUri) -            { -                Path = string.Concat(aosUri.AbsolutePath.TrimEnd('/'), "/", requestRelativePath.TrimStart('/')) -            }; -            return builder.Uri; -        } +        { +            var aosUri = new Uri(_settings.AosUri); +            var builder = new UriBuilder(aosUri) +            { +                Path = string.Concat(aosUri.AbsolutePath.TrimEnd('/'), "/", requestRelativePath.TrimStart('/')) +            }; +            return builder.Uri; +        } /// /// Dispose diff --git a/Common/JobSettings/ExecutionJobSettings.cs b/Common/JobSettings/ExecutionJobSettings.cs index 33fd166..35ea5ae 100644 --- a/Common/JobSettings/ExecutionJobSettings.cs +++ b/Common/JobSettings/ExecutionJobSettings.cs @@ -90,10 +90,6 @@ namespace RecurringIntegrationsScheduler.Common.JobSettings PackageTemplate = dataMap.GetString(SettingsConstants.PackageTemplate); StatusCheckInterval = dataMap.GetInt(SettingsConstants.StatusCheckInterval); - if (StatusCheckInterval < 1) //Default status check interval is 1 second. - { - StatusCheckInterval = 1; - } } #region Members diff --git a/Common/JobSettings/ProcessingJobSettings.cs b/Common/JobSettings/ProcessingJobSettings.cs index d393422..9124be7 100644 --- a/Common/JobSettings/ProcessingJobSettings.cs +++ b/Common/JobSettings/ProcessingJobSettings.cs @@ -92,6 +92,8 @@ namespace RecurringIntegrationsScheduler.Common.JobSettings { throw new JobExecutionException(string.Format(CultureInfo.InvariantCulture, Resources.Extension_of_status_files_is_missing_in_job_configuration)); } + + StatusCheckInterval = dataMap.GetInt(SettingsConstants.StatusCheckInterval); } #region Members @@ -136,6 +138,14 @@ namespace RecurringIntegrationsScheduler.Common.JobSettings /// public string StatusFileExtension { get; private set; } + /// + /// Gets or sets delay between status check. + /// + /// + /// Delay between status checks. + /// + public int StatusCheckInterval { get; private set; } + #endregion } } \ No newline at end of file diff --git a/Job.Download/Download.cs b/Job.Download/Download.cs index e84c629..56edb87 100644 --- a/Job.Download/Download.cs +++ b/Job.Download/Download.cs @@ -142,7 +142,7 @@ namespace RecurringIntegrationsScheduler.Job } else { - Log.Error("Uknown exception", ex); + Log.Error("Unknown exception", ex); } while (ex.InnerException != null) @@ -225,7 +225,6 @@ namespace RecurringIntegrationsScheduler.Job /// private async Task ProcessDownloadQueue() { - //Stream downloadedStream = null; var fileCount = 0; while (DownloadQueue.TryDequeue(out DataMessage dataMessage)) { @@ -236,7 +235,12 @@ namespace RecurringIntegrationsScheduler.Job using (var downloadedStream = await response.Content.ReadAsStreamAsync()) { + if(fileCount > 0 && _settings.Interval > 0) //Only delay after first file and never after last. + { + System.Threading.Thread.Sleep(_settings.Interval * 1000); + } fileCount++; + //Downloaded file has no file name. We need to create it. //It will be timestamp followed by number in this download batch. var fileName = $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss-ffff}-{fileCount:D6}"; @@ -255,8 +259,6 @@ namespace RecurringIntegrationsScheduler.Job if (_settings.UnzipPackage) _retryPolicyForIo.Execute(() => FileOperationsHelper.UnzipPackage(dataMessage.FullPath, _settings.DeletePackage, _settings.AddTimestamp)); - - System.Threading.Thread.Sleep(_settings.Interval * 1000); } } diff --git a/Job.ExecutionMonitor/ExecutionMonitor.cs b/Job.ExecutionMonitor/ExecutionMonitor.cs index 06c6508..15fc63e 100644 --- a/Job.ExecutionMonitor/ExecutionMonitor.cs +++ b/Job.ExecutionMonitor/ExecutionMonitor.cs @@ -2,10 +2,9 @@ Licensed under the MIT License. */ using log4net; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using Polly; using Quartz; +using Quartz.Util; using RecurringIntegrationsScheduler.Common.Contracts; using RecurringIntegrationsScheduler.Common.Helpers; using RecurringIntegrationsScheduler.Common.JobSettings; @@ -137,7 +136,7 @@ namespace RecurringIntegrationsScheduler.Job } else { - Log.Error("Uknown exception", ex); + Log.Error("Unknown exception", ex); } while (ex.InnerException != null) @@ -182,18 +181,23 @@ namespace RecurringIntegrationsScheduler.Job /// private async Task ProcessEnqueuedQueue() { + var fileCount = 0; _httpClientHelper = new HttpClientHelper(_settings, _retryPolicyForHttp); while (EnqueuedJobs.TryDequeue(out DataMessage dataMessage)) { + if (fileCount > 0 && _settings.StatusCheckInterval > 0) //Only delay after first file and never after last. + { + System.Threading.Thread.Sleep(_settings.StatusCheckInterval * 1000); + } + fileCount++; + // Check status for current item with message id - item.Key var jobStatusDetail = await _httpClientHelper.GetExecutionSummaryStatus(dataMessage.MessageId); // If status was found and is not null, if (jobStatusDetail != null) await PostProcessMessage(jobStatusDetail, dataMessage); - - System.Threading.Thread.Sleep(_settings.StatusCheckInterval * 1000); } } @@ -247,31 +251,31 @@ namespace RecurringIntegrationsScheduler.Job var errorsExist = await _httpClientHelper.GenerateImportTargetErrorKeysFile(dataMessage.MessageId, entity); if (errorsExist) { - var errorFileUrl = ""; - while (errorFileUrl == "") + string errorFileUrl; + do { errorFileUrl = await _httpClientHelper.GetImportTargetErrorKeysFileUrl(dataMessage.MessageId, entity); - if (errorFileUrl == "") + if (errorFileUrl.Length == 0) { System.Threading.Thread.Sleep(_settings.Interval); } } + while (string.IsNullOrEmpty(errorFileUrl)); + var response = await _httpClientHelper.GetRequestAsync(new UriBuilder(errorFileUrl).Uri, false); if (!response.IsSuccessStatusCode) throw new JobExecutionException(string.Format(Resources.Job_0_download_of_error_keys_file_failed_1, _context.JobDetail.Key, string.Format($"Status: {response.StatusCode}. Message: {response.Content}"))); - using (Stream downloadedStream = await response.Content.ReadAsStreamAsync()) + using Stream downloadedStream = await response.Content.ReadAsStreamAsync(); + var errorsFileName = $"{Path.GetFileNameWithoutExtension(dataMessage.Name)}-{entity}-ErrorKeys-{DateTime.Now:yyyy-MM-dd_HH-mm-ss-ffff}.txt"; + var errorsFilePath = Path.Combine(_settings.ProcessingErrorsDir, errorsFileName); + var dataMessageForErrorsFile = new DataMessage() { - var errorsFileName = $"{Path.GetFileNameWithoutExtension(dataMessage.Name)}-{entity}-ErrorKeys-{DateTime.Now:yyyy-MM-dd_HH-mm-ss-ffff}.txt"; - var errorsFilePath = Path.Combine(_settings.ProcessingErrorsDir, errorsFileName); - var dataMessageForErrorsFile = new DataMessage() - { - FullPath = errorsFilePath, - Name = errorsFileName, - MessageStatus = MessageStatus.Failed - }; - _retryPolicyForIo.Execute(() => FileOperationsHelper.Create(downloadedStream, dataMessageForErrorsFile.FullPath)); - } + FullPath = errorsFilePath, + Name = errorsFileName, + MessageStatus = MessageStatus.Failed + }; + _retryPolicyForIo.Execute(() => FileOperationsHelper.Create(downloadedStream, dataMessageForErrorsFile.FullPath)); } } } @@ -307,34 +311,37 @@ namespace RecurringIntegrationsScheduler.Job /// Entities list private List GetEntitiesNamesInPackage(string fileName) { - var manifestPath = ""; if (Log.IsDebugEnabled) { Log.DebugFormat(CultureInfo.InvariantCulture, string.Format(Resources.Job_0_Looking_for_data_entities_in_manifest_file_1, _context.JobDetail.Key, fileName)); } + + var enitiesList = new List(); + using (var package = ZipFile.OpenRead(fileName)) { foreach (var entry in package.Entries) { if (entry.FullName.Equals("Manifest.xml", StringComparison.OrdinalIgnoreCase)) { - manifestPath = Path.Combine(Path.GetTempPath(), $"{_context.JobDetail.Key}-{entry.FullName}"); + var manifestPath = Path.Combine(Path.GetTempPath(), $"{_context.JobDetail.Key}-{entry.FullName}"); entry.ExtractToFile(manifestPath, true); + + var doc = new XmlDocument(); + XmlNodeList entities; + using (var manifestFile = new StreamReader(manifestPath)) + { + doc.Load(new XmlTextReader(manifestFile) { Namespaces = false }); + entities = doc.SelectNodes("//EntityName"); + } + + foreach (XmlNode node in entities) + { + enitiesList.Add(node.InnerText); + } } } } - var doc = new XmlDocument(); - XmlNodeList entities; - using (var manifestFile = new StreamReader(manifestPath)) - { - doc.Load(new XmlTextReader(manifestFile) { Namespaces = false }); - entities = doc.SelectNodes("//EntityName"); - } - var enitiesList = new List(); - foreach(XmlNode node in entities) - { - enitiesList.Add(node.InnerText); - } return enitiesList; } } diff --git a/Job.Export/Export.cs b/Job.Export/Export.cs index 10d9e57..3b6cace 100644 --- a/Job.Export/Export.cs +++ b/Job.Export/Export.cs @@ -122,7 +122,7 @@ namespace RecurringIntegrationsScheduler.Job } else { - Log.Error("Uknown exception", ex); + Log.Error("Unknown exception", ex); } while (ex.InnerException != null) @@ -159,9 +159,12 @@ namespace RecurringIntegrationsScheduler.Job var attempt = 0; do { - attempt++; - if(attempt != 1) + if (attempt > 0 && _settings.StatusCheckInterval > 0) //Only delay after first file and never after last. + { System.Threading.Thread.Sleep(_settings.StatusCheckInterval * 1000); + } + attempt++; + executionStatus = await _httpClientHelper.GetExecutionSummaryStatus(executionId); if (Log.IsDebugEnabled) Log.Debug(string.Format(Resources.Job_0_Checking_if_export_is_completed_Try_1_Status_2, _context.JobDetail.Key, attempt, executionStatus)); @@ -174,13 +177,16 @@ namespace RecurringIntegrationsScheduler.Job if (executionStatus == "Succeeded" || executionStatus == "PartiallySucceeded") { - attempt = 0; + attempt = 0;//Reset for get url request attempts Uri packageUrl = null; do { - attempt++; - if (attempt != 1) + if (attempt > 0 && _settings.Interval > 0) //Only delay after first file and never after last. + { System.Threading.Thread.Sleep(_settings.Interval * 1000); + } + attempt++; + packageUrl = await _httpClientHelper.GetExportedPackageUrl(executionId); if (Log.IsDebugEnabled) Log.Debug(string.Format(Resources.Job_0_Trying_to_get_exported_package_URL_Try_1, _context.JobDetail.Key, attempt)); @@ -195,21 +201,19 @@ namespace RecurringIntegrationsScheduler.Job if (!response.IsSuccessStatusCode) throw new JobExecutionException(string.Format(Resources.Job_0_Download_failure_1, _context.JobDetail.Key, string.Format($"Status: {response.StatusCode}. Message: {response.Content}"))); - using (Stream downloadedStream = await response.Content.ReadAsStreamAsync()) + using Stream downloadedStream = await response.Content.ReadAsStreamAsync(); + var fileName = $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss-ffff}.zip"; + var successPath = Path.Combine(_settings.DownloadSuccessDir, fileName); + var dataMessage = new DataMessage() { - var fileName = $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss-ffff}.zip"; - var successPath = Path.Combine(_settings.DownloadSuccessDir, fileName); - var dataMessage = new DataMessage() - { - FullPath = successPath, - Name = fileName, - MessageStatus = MessageStatus.Succeeded - }; - _retryPolicyForIo.Execute(() => FileOperationsHelper.Create(downloadedStream, dataMessage.FullPath)); + FullPath = successPath, + Name = fileName, + MessageStatus = MessageStatus.Succeeded + }; + _retryPolicyForIo.Execute(() => FileOperationsHelper.Create(downloadedStream, dataMessage.FullPath)); - if (_settings.UnzipPackage) - _retryPolicyForIo.Execute(() => FileOperationsHelper.UnzipPackage(dataMessage.FullPath, _settings.DeletePackage, _settings.AddTimestamp)); - } + if (_settings.UnzipPackage) + _retryPolicyForIo.Execute(() => FileOperationsHelper.UnzipPackage(dataMessage.FullPath, _settings.DeletePackage, _settings.AddTimestamp)); } else if (executionStatus == "Unknown" || executionStatus == "Failed" || executionStatus == "Canceled") { diff --git a/Job.Import/Import.cs b/Job.Import/Import.cs index 81ed4af..0614e11 100644 --- a/Job.Import/Import.cs +++ b/Job.Import/Import.cs @@ -135,7 +135,7 @@ namespace RecurringIntegrationsScheduler.Job } else { - Log.Error("Uknown exception", ex); + Log.Error("Unknown exception", ex); } while (ex.InnerException != null) @@ -187,7 +187,7 @@ namespace RecurringIntegrationsScheduler.Job { using (_httpClientHelper = new HttpClientHelper(_settings, _retryPolicyForHttp)) { - var firstFile = true; + var fileCount = 0; string fileNameInPackage = ""; FileStream zipToOpen = null; ZipArchive archive = null; @@ -205,20 +205,19 @@ namespace RecurringIntegrationsScheduler.Job { try { - string tempFileName = ""; - if (!firstFile) + if (fileCount > 0 && _settings.Interval > 0) //Only delay after first file and never after last. { System.Threading.Thread.Sleep(_settings.Interval * 1000); } - else - { - firstFile = false; - } + fileCount++; + var sourceStream = _retryPolicyForIo.Execute(() => FileOperationsHelper.Read(dataMessage.FullPath)); if (sourceStream == null) continue;//Nothing to do here + string tempFileName = ""; + //If we need to "wrap" file in package envelope - if (!String.IsNullOrEmpty(_settings.PackageTemplate)) + if (!string.IsNullOrEmpty(_settings.PackageTemplate)) { using (zipToOpen = new FileStream(_settings.PackageTemplate, FileMode.Open)) { @@ -239,12 +238,10 @@ namespace RecurringIntegrationsScheduler.Job fileNameInPackage = UpdateManifestFile(archive, dataMessage, fileNameInPackage); var importedFile = archive.CreateEntry(fileNameInPackage, CompressionLevel.Fastest); - using (var entryStream = importedFile.Open()) - { - sourceStream.CopyTo(entryStream); - sourceStream.Close(); - sourceStream.Dispose(); - } + using var entryStream = importedFile.Open(); + sourceStream.CopyTo(entryStream); + sourceStream.Close(); + sourceStream.Dispose(); } sourceStream = _retryPolicyForIo.Execute(() => FileOperationsHelper.Read(tempFileName)); } @@ -254,7 +251,7 @@ namespace RecurringIntegrationsScheduler.Job // Get blob url and id. Returns in json format var response = await _httpClientHelper.GetAzureWriteUrl(); - if(String.IsNullOrEmpty(response)) + if(string.IsNullOrEmpty(response)) { Log.ErrorFormat(CultureInfo.InvariantCulture, "Method GetAzureWriteUrl returned empty string"); continue; @@ -270,7 +267,7 @@ namespace RecurringIntegrationsScheduler.Job { sourceStream.Close(); sourceStream.Dispose(); - if (!String.IsNullOrEmpty(_settings.PackageTemplate)) + if (!string.IsNullOrEmpty(_settings.PackageTemplate)) { _retryPolicyForIo.Execute(() => FileOperationsHelper.Delete(tempFileName)); } @@ -349,7 +346,6 @@ namespace RecurringIntegrationsScheduler.Job zipToOpen.Close(); zipToOpen.Dispose(); } - archive?.Dispose(); } } @@ -358,26 +354,21 @@ namespace RecurringIntegrationsScheduler.Job private string GetFileNameInPackage() { - var manifestPath = ""; - using (var package = ZipFile.OpenRead(_settings.PackageTemplate)) + using var package = ZipFile.OpenRead(_settings.PackageTemplate); + foreach (var entry in package.Entries) { - foreach (var entry in package.Entries) + if (entry.FullName.Equals("Manifest.xml", StringComparison.OrdinalIgnoreCase)) { - if (entry.FullName.Equals("Manifest.xml", StringComparison.OrdinalIgnoreCase)) - { - manifestPath = Path.Combine(Path.GetTempPath(), $"{_context.JobDetail.Key}-{entry.FullName}"); - entry.ExtractToFile(manifestPath, true); - } + var manifestPath = Path.Combine(Path.GetTempPath(), $"{_context.JobDetail.Key}-{entry.FullName}"); + entry.ExtractToFile(manifestPath, true); + + var doc = new XmlDocument(); + using var manifestFile = new StreamReader(manifestPath); + doc.Load(new XmlTextReader(manifestFile) { Namespaces = false }); + return doc.SelectSingleNode("//InputFilePath[1]")?.InnerText; } } - var doc = new XmlDocument(); - string fileName; - using (var manifestFile = new StreamReader(manifestPath)) - { - doc.Load(new XmlTextReader(manifestFile) { Namespaces = false }); - fileName = doc.SelectSingleNode("//InputFilePath[1]")?.InnerText; - } - return fileName; + return null; } /// @@ -413,12 +404,10 @@ namespace RecurringIntegrationsScheduler.Job tempXmlDocManifest.SelectSingleNode("//InputFilePath[1]").InnerText = Path.GetFileName(dataMessage.FullPath); // Save the document to a file and auto-indent the output. - using (XmlTextWriter writer = new XmlTextWriter(tempManifestFileNameNew, null)) - { - writer.Namespaces = false; - writer.Formatting = System.Xml.Formatting.Indented; - tempXmlDocManifest.Save(writer); - } + using XmlTextWriter writer = new XmlTextWriter(tempManifestFileNameNew, null); + writer.Namespaces = false; + writer.Formatting = System.Xml.Formatting.Indented; + tempXmlDocManifest.Save(writer); } // Delete the Manifest.xml from the archive file diff --git a/Job.ProcessingMonitor/ProcessingMonitor.cs b/Job.ProcessingMonitor/ProcessingMonitor.cs index 05edd08..a94265d 100644 --- a/Job.ProcessingMonitor/ProcessingMonitor.cs +++ b/Job.ProcessingMonitor/ProcessingMonitor.cs @@ -133,7 +133,7 @@ namespace RecurringIntegrationsScheduler.Job } else { - Log.Error("Uknown exception", ex); + Log.Error("Unknown exception", ex); } while (ex.InnerException != null) @@ -176,10 +176,17 @@ namespace RecurringIntegrationsScheduler.Job /// private async Task ProcessEnqueuedQueue() { + var fileCount = 0; _httpClientHelper = new HttpClientHelper(_settings, _retryPolicyForHttp); while (EnqueuedJobs.TryDequeue(out DataMessage dataMessage)) { + if (fileCount > 0 && _settings.StatusCheckInterval > 0) //Only delay after first file and never after last. + { + System.Threading.Thread.Sleep(_settings.StatusCheckInterval * 1000); + } + fileCount++; + // Check status for current item with message id - item.Key var jobStatusDetail = await GetStatus(dataMessage.MessageId); @@ -249,8 +256,11 @@ namespace RecurringIntegrationsScheduler.Job Log.DebugFormat(CultureInfo.InvariantCulture, string.Format(Resources.Job_0_Successfully_received_job_status_for_message_id_1, _context.JobDetail.Key, message)); return JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result, new StringEnumConverter()); } - Log.ErrorFormat(CultureInfo.InvariantCulture, string.Format(Resources.Job_0_data_job_status_check_request_failed_Status_code_1_Reason_2, _context.JobDetail.Key, response.StatusCode, response.ReasonPhrase)); - return null; + else + { + Log.ErrorFormat(CultureInfo.InvariantCulture, string.Format(Resources.Job_0_data_job_status_check_request_failed_Status_code_1_Reason_2, _context.JobDetail.Key, response.StatusCode, response.ReasonPhrase)); + return null; + } } } } \ No newline at end of file diff --git a/Job.Upload/Upload.cs b/Job.Upload/Upload.cs index 50a45fb..23a79e6 100644 --- a/Job.Upload/Upload.cs +++ b/Job.Upload/Upload.cs @@ -131,7 +131,7 @@ namespace RecurringIntegrationsScheduler.Job } else { - Log.Error("Uknown exception", ex); + Log.Error("Unknown exception", ex); } while (ex.InnerException != null) @@ -182,20 +182,17 @@ namespace RecurringIntegrationsScheduler.Job { using (_httpClientHelper = new HttpClientHelper(_settings, _retryPolicyForHttp)) { - var firstFile = true; + var fileCount = 0; while (InputQueue.TryDequeue(out DataMessage dataMessage)) { try { - if (!firstFile) + if (fileCount > 0 && _settings.Interval > 0) //Only delay after first file and never after last. { System.Threading.Thread.Sleep(_settings.Interval * 1000); } - else - { - firstFile = false; - } + fileCount++; var sourceStream = _retryPolicyForIo.Execute(() => FileOperationsHelper.Read(dataMessage.FullPath)); if (sourceStream == null) continue;//Nothing to do here diff --git a/Scheduler/Assets/Recurring Integrations Scheduler.ico b/Scheduler/Assets/RecurringIntegrationsScheduler.ico similarity index 100% rename from Scheduler/Assets/Recurring Integrations Scheduler.ico rename to Scheduler/Assets/RecurringIntegrationsScheduler.ico diff --git a/Scheduler/Forms/AboutBox.Designer.cs b/Scheduler/Forms/AboutBox.Designer.cs index 13d4736..3a8133b 100644 --- a/Scheduler/Forms/AboutBox.Designer.cs +++ b/Scheduler/Forms/AboutBox.Designer.cs @@ -51,17 +51,17 @@ namespace RecurringIntegrationsScheduler.Forms this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 2); this.tableLayoutPanel.Controls.Add(this.okButton, 1, 3); this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel.Location = new System.Drawing.Point(14, 14); - this.tableLayoutPanel.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.tableLayoutPanel.Location = new System.Drawing.Point(17, 17); + this.tableLayoutPanel.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.tableLayoutPanel.Name = "tableLayoutPanel"; this.tableLayoutPanel.RowCount = 4; this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 70F)); this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); - this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 31F)); - this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 31F)); - this.tableLayoutPanel.Size = new System.Drawing.Size(624, 407); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 37F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 37F)); + this.tableLayoutPanel.Size = new System.Drawing.Size(763, 488); this.tableLayoutPanel.TabIndex = 0; // // logoPictureBox @@ -69,22 +69,22 @@ namespace RecurringIntegrationsScheduler.Forms this.logoPictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill; this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image"))); - this.logoPictureBox.Location = new System.Drawing.Point(4, 5); - this.logoPictureBox.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.logoPictureBox.Location = new System.Drawing.Point(5, 6); + this.logoPictureBox.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.logoPictureBox.Name = "logoPictureBox"; this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 4); - this.logoPictureBox.Size = new System.Drawing.Size(197, 397); + this.logoPictureBox.Size = new System.Drawing.Size(241, 476); this.logoPictureBox.TabIndex = 12; this.logoPictureBox.TabStop = false; // // labelProductName // this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill; - this.labelProductName.Location = new System.Drawing.Point(214, 0); - this.labelProductName.Margin = new System.Windows.Forms.Padding(9, 0, 4, 0); - this.labelProductName.MaximumSize = new System.Drawing.Size(0, 26); + this.labelProductName.Location = new System.Drawing.Point(262, 0); + this.labelProductName.Margin = new System.Windows.Forms.Padding(11, 0, 5, 0); + this.labelProductName.MaximumSize = new System.Drawing.Size(0, 31); this.labelProductName.Name = "labelProductName"; - this.labelProductName.Size = new System.Drawing.Size(406, 26); + this.labelProductName.Size = new System.Drawing.Size(496, 31); this.labelProductName.TabIndex = 19; this.labelProductName.Text = "Recurring Integrations Scheduler"; this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; @@ -92,11 +92,11 @@ namespace RecurringIntegrationsScheduler.Forms // labelVersion // this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill; - this.labelVersion.Location = new System.Drawing.Point(214, 40); - this.labelVersion.Margin = new System.Windows.Forms.Padding(9, 0, 4, 0); - this.labelVersion.MaximumSize = new System.Drawing.Size(0, 26); + this.labelVersion.Location = new System.Drawing.Point(262, 48); + this.labelVersion.Margin = new System.Windows.Forms.Padding(11, 0, 5, 0); + this.labelVersion.MaximumSize = new System.Drawing.Size(0, 31); this.labelVersion.Name = "labelVersion"; - this.labelVersion.Size = new System.Drawing.Size(406, 26); + this.labelVersion.Size = new System.Drawing.Size(496, 31); this.labelVersion.TabIndex = 0; this.labelVersion.Text = "Version 1.0.0.0"; this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; @@ -104,13 +104,13 @@ namespace RecurringIntegrationsScheduler.Forms // textBoxDescription // this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill; - this.textBoxDescription.Location = new System.Drawing.Point(214, 85); - this.textBoxDescription.Margin = new System.Windows.Forms.Padding(9, 5, 4, 5); + this.textBoxDescription.Location = new System.Drawing.Point(262, 102); + this.textBoxDescription.Margin = new System.Windows.Forms.Padding(11, 6, 5, 6); this.textBoxDescription.Multiline = true; this.textBoxDescription.Name = "textBoxDescription"; this.textBoxDescription.ReadOnly = true; this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.textBoxDescription.Size = new System.Drawing.Size(406, 274); + this.textBoxDescription.Size = new System.Drawing.Size(496, 329); this.textBoxDescription.TabIndex = 23; this.textBoxDescription.TabStop = false; this.textBoxDescription.Text = resources.GetString("textBoxDescription.Text"); @@ -119,26 +119,26 @@ namespace RecurringIntegrationsScheduler.Forms // this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.okButton.Location = new System.Drawing.Point(508, 370); - this.okButton.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.okButton.Location = new System.Drawing.Point(621, 444); + this.okButton.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.okButton.Name = "okButton"; - this.okButton.Size = new System.Drawing.Size(112, 32); + this.okButton.Size = new System.Drawing.Size(137, 38); this.okButton.TabIndex = 24; this.okButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.OK; // // AboutBox // this.AcceptButton = this.okButton; - this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(652, 435); + this.ClientSize = new System.Drawing.Size(797, 522); this.Controls.Add(this.tableLayoutPanel); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "AboutBox"; - this.Padding = new System.Windows.Forms.Padding(14); + this.Padding = new System.Windows.Forms.Padding(17, 17, 17, 17); this.ShowIcon = false; this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; diff --git a/Scheduler/Forms/DownloadJob.Designer.cs b/Scheduler/Forms/DownloadJob.Designer.cs index 1e00bab..24489ff 100644 --- a/Scheduler/Forms/DownloadJob.Designer.cs +++ b/Scheduler/Forms/DownloadJob.Designer.cs @@ -32,6 +32,8 @@ namespace RecurringIntegrationsScheduler.Forms { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DownloadJob)); this.jobDetailsGroupBox = new System.Windows.Forms.GroupBox(); + this.intervalLabel = new System.Windows.Forms.Label(); + this.numericUpDownInterval = new System.Windows.Forms.NumericUpDown(); this.deletePackageCheckBox = new System.Windows.Forms.CheckBox(); this.addTimestampCheckBox = new System.Windows.Forms.CheckBox(); this.unzipCheckBox = new System.Windows.Forms.CheckBox(); @@ -91,9 +93,8 @@ namespace RecurringIntegrationsScheduler.Forms this.groupBoxButtons = new System.Windows.Forms.GroupBox(); this.addJobButton = new System.Windows.Forms.Button(); this.cancelButton = new System.Windows.Forms.Button(); - this.intervalLabel = new System.Windows.Forms.Label(); - this.numericUpDownInterval = new System.Windows.Forms.NumericUpDown(); this.jobDetailsGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownInterval)).BeginInit(); this.axDetailsGroupBox.SuspendLayout(); this.authMethodPanel.SuspendLayout(); this.recurrenceGroupBox.SuspendLayout(); @@ -103,7 +104,6 @@ namespace RecurringIntegrationsScheduler.Forms ((System.ComponentModel.ISupportInitialize)(this.retriesCountUpDown)).BeginInit(); this.groupBoxExceptions.SuspendLayout(); this.groupBoxButtons.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownInterval)).BeginInit(); this.SuspendLayout(); // // jobDetailsGroupBox @@ -135,12 +135,34 @@ namespace RecurringIntegrationsScheduler.Forms this.jobDetailsGroupBox.TabStop = false; this.jobDetailsGroupBox.Text = "Job details"; // + // intervalLabel + // + this.intervalLabel.Location = new System.Drawing.Point(16, 549); + this.intervalLabel.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); + this.intervalLabel.Name = "intervalLabel"; + this.intervalLabel.Size = new System.Drawing.Size(273, 77); + this.intervalLabel.TabIndex = 26; + this.intervalLabel.Text = "Delay between attempts to download exported files from blob storage (seconds)"; + // + // numericUpDownInterval + // + this.numericUpDownInterval.Location = new System.Drawing.Point(298, 576); + this.numericUpDownInterval.Margin = new System.Windows.Forms.Padding(4); + this.numericUpDownInterval.Maximum = new decimal(new int[] { + 3600, + 0, + 0, + 0}); + this.numericUpDownInterval.Name = "numericUpDownInterval"; + this.numericUpDownInterval.Size = new System.Drawing.Size(105, 29); + this.numericUpDownInterval.TabIndex = 25; + // // deletePackageCheckBox // this.deletePackageCheckBox.AutoSize = true; this.deletePackageCheckBox.Enabled = false; this.deletePackageCheckBox.Location = new System.Drawing.Point(22, 510); - this.deletePackageCheckBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.deletePackageCheckBox.Margin = new System.Windows.Forms.Padding(4); this.deletePackageCheckBox.Name = "deletePackageCheckBox"; this.deletePackageCheckBox.Size = new System.Drawing.Size(203, 29); this.deletePackageCheckBox.TabIndex = 14; @@ -152,7 +174,7 @@ namespace RecurringIntegrationsScheduler.Forms this.addTimestampCheckBox.AutoSize = true; this.addTimestampCheckBox.Enabled = false; this.addTimestampCheckBox.Location = new System.Drawing.Point(22, 473); - this.addTimestampCheckBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.addTimestampCheckBox.Margin = new System.Windows.Forms.Padding(4); this.addTimestampCheckBox.Name = "addTimestampCheckBox"; this.addTimestampCheckBox.Size = new System.Drawing.Size(315, 29); this.addTimestampCheckBox.TabIndex = 13; @@ -163,7 +185,7 @@ namespace RecurringIntegrationsScheduler.Forms // this.unzipCheckBox.AutoSize = true; this.unzipCheckBox.Location = new System.Drawing.Point(22, 436); - this.unzipCheckBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.unzipCheckBox.Margin = new System.Windows.Forms.Padding(4); this.unzipCheckBox.Name = "unzipCheckBox"; this.unzipCheckBox.Size = new System.Drawing.Size(197, 29); this.unzipCheckBox.TabIndex = 12; @@ -475,7 +497,7 @@ namespace RecurringIntegrationsScheduler.Forms // this.pauseIndefinitelyCheckBox.AutoSize = true; this.pauseIndefinitelyCheckBox.Location = new System.Drawing.Point(17, 37); - this.pauseIndefinitelyCheckBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.pauseIndefinitelyCheckBox.Margin = new System.Windows.Forms.Padding(4); this.pauseIndefinitelyCheckBox.Name = "pauseIndefinitelyCheckBox"; this.pauseIndefinitelyCheckBox.Size = new System.Drawing.Size(221, 29); this.pauseIndefinitelyCheckBox.TabIndex = 0; @@ -763,9 +785,9 @@ namespace RecurringIntegrationsScheduler.Forms // this.groupBoxExceptions.Controls.Add(this.pauseOnExceptionsCheckBox); this.groupBoxExceptions.Location = new System.Drawing.Point(24, 969); - this.groupBoxExceptions.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxExceptions.Margin = new System.Windows.Forms.Padding(4); this.groupBoxExceptions.Name = "groupBoxExceptions"; - this.groupBoxExceptions.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxExceptions.Padding = new System.Windows.Forms.Padding(4); this.groupBoxExceptions.Size = new System.Drawing.Size(422, 109); this.groupBoxExceptions.TabIndex = 10; this.groupBoxExceptions.TabStop = false; @@ -777,7 +799,7 @@ namespace RecurringIntegrationsScheduler.Forms this.pauseOnExceptionsCheckBox.Checked = true; this.pauseOnExceptionsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; this.pauseOnExceptionsCheckBox.Location = new System.Drawing.Point(17, 31); - this.pauseOnExceptionsCheckBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.pauseOnExceptionsCheckBox.Margin = new System.Windows.Forms.Padding(4); this.pauseOnExceptionsCheckBox.Name = "pauseOnExceptionsCheckBox"; this.pauseOnExceptionsCheckBox.Size = new System.Drawing.Size(329, 29); this.pauseOnExceptionsCheckBox.TabIndex = 0; @@ -789,9 +811,9 @@ namespace RecurringIntegrationsScheduler.Forms this.groupBoxButtons.Controls.Add(this.addJobButton); this.groupBoxButtons.Controls.Add(this.cancelButton); this.groupBoxButtons.Location = new System.Drawing.Point(24, 1075); - this.groupBoxButtons.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxButtons.Margin = new System.Windows.Forms.Padding(4); this.groupBoxButtons.Name = "groupBoxButtons"; - this.groupBoxButtons.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxButtons.Padding = new System.Windows.Forms.Padding(4); this.groupBoxButtons.Size = new System.Drawing.Size(852, 89); this.groupBoxButtons.TabIndex = 11; this.groupBoxButtons.TabStop = false; @@ -799,7 +821,7 @@ namespace RecurringIntegrationsScheduler.Forms // addJobButton // this.addJobButton.Location = new System.Drawing.Point(430, 30); - this.addJobButton.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.addJobButton.Margin = new System.Windows.Forms.Padding(4); this.addJobButton.Name = "addJobButton"; this.addJobButton.Size = new System.Drawing.Size(198, 41); this.addJobButton.TabIndex = 2; @@ -810,7 +832,7 @@ namespace RecurringIntegrationsScheduler.Forms // cancelButton // this.cancelButton.Location = new System.Drawing.Point(647, 30); - this.cancelButton.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.cancelButton.Margin = new System.Windows.Forms.Padding(4); this.cancelButton.Name = "cancelButton"; this.cancelButton.Size = new System.Drawing.Size(198, 41); this.cancelButton.TabIndex = 1; @@ -818,38 +840,6 @@ namespace RecurringIntegrationsScheduler.Forms this.cancelButton.UseVisualStyleBackColor = true; this.cancelButton.Click += new System.EventHandler(this.CancelButton_Click); // - // intervalLabel - // - this.intervalLabel.Location = new System.Drawing.Point(16, 549); - this.intervalLabel.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); - this.intervalLabel.Name = "intervalLabel"; - this.intervalLabel.Size = new System.Drawing.Size(273, 77); - this.intervalLabel.TabIndex = 26; - this.intervalLabel.Text = "Delay between attempts to download exported file (seconds)"; - // - // numericUpDownInterval - // - this.numericUpDownInterval.Location = new System.Drawing.Point(298, 576); - this.numericUpDownInterval.Margin = new System.Windows.Forms.Padding(4); - this.numericUpDownInterval.Maximum = new decimal(new int[] { - 3600, - 0, - 0, - 0}); - this.numericUpDownInterval.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.numericUpDownInterval.Name = "numericUpDownInterval"; - this.numericUpDownInterval.Size = new System.Drawing.Size(105, 29); - this.numericUpDownInterval.TabIndex = 25; - this.numericUpDownInterval.Value = new decimal(new int[] { - 1, - 0, - 0, - 0}); - // // DownloadJob // this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F); @@ -876,6 +866,7 @@ namespace RecurringIntegrationsScheduler.Forms this.Load += new System.EventHandler(this.DownloadJobForm_Load); this.jobDetailsGroupBox.ResumeLayout(false); this.jobDetailsGroupBox.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownInterval)).EndInit(); this.axDetailsGroupBox.ResumeLayout(false); this.axDetailsGroupBox.PerformLayout(); this.authMethodPanel.ResumeLayout(false); @@ -891,7 +882,6 @@ namespace RecurringIntegrationsScheduler.Forms this.groupBoxExceptions.ResumeLayout(false); this.groupBoxExceptions.PerformLayout(); this.groupBoxButtons.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownInterval)).EndInit(); this.ResumeLayout(false); } diff --git a/Scheduler/Forms/ImportJob.Designer.cs b/Scheduler/Forms/ImportJob.Designer.cs index e7cea90..a398fd1 100644 --- a/Scheduler/Forms/ImportJob.Designer.cs +++ b/Scheduler/Forms/ImportJob.Designer.cs @@ -98,6 +98,8 @@ namespace RecurringIntegrationsScheduler.Forms this.upJobHoursDateTimePicker = new System.Windows.Forms.DateTimePicker(); this.downloadFolderLabel = new System.Windows.Forms.Label(); this.processingJobGroupBox = new System.Windows.Forms.GroupBox(); + this.numericUpDownStatusCheckInterval = new System.Windows.Forms.NumericUpDown(); + this.statusCheckIntervalLabel = new System.Windows.Forms.Label(); this.groupBoxErrorKeysFile = new System.Windows.Forms.GroupBox(); this.downloadErrorKeysFileCheckBox = new System.Windows.Forms.CheckBox(); this.procJobTriggerTypePanel = new System.Windows.Forms.Panel(); @@ -122,6 +124,8 @@ namespace RecurringIntegrationsScheduler.Forms this.orderByLabel = new System.Windows.Forms.Label(); this.searchPatternLabel = new System.Windows.Forms.Label(); this.importDetailsGroupBox = new System.Windows.Forms.GroupBox(); + this.numericUpDownInterval = new System.Windows.Forms.NumericUpDown(); + this.labelInterval = new System.Windows.Forms.Label(); this.executeImportCheckBox = new System.Windows.Forms.CheckBox(); this.overwriteDataProjectCheckBox = new System.Windows.Forms.CheckBox(); this.dataProject = new System.Windows.Forms.TextBox(); @@ -138,28 +142,24 @@ namespace RecurringIntegrationsScheduler.Forms this.addJobButton = new System.Windows.Forms.Button(); this.cancelButton = new System.Windows.Forms.Button(); this.customActionsButton = new System.Windows.Forms.Button(); - this.labelInterval = new System.Windows.Forms.Label(); - this.numericUpDownInterval = new System.Windows.Forms.NumericUpDown(); - this.numericUpDownStatusCheckInterval = new System.Windows.Forms.NumericUpDown(); - this.statusCheckIntervalLabel = new System.Windows.Forms.Label(); this.jobDetailsGroupBox.SuspendLayout(); this.axDetailsGroupBox.SuspendLayout(); this.authMethodPanel.SuspendLayout(); this.recurrenceGroupBox.SuspendLayout(); this.upJobTriggerTypePanel.SuspendLayout(); this.processingJobGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownStatusCheckInterval)).BeginInit(); this.groupBoxErrorKeysFile.SuspendLayout(); this.procJobTriggerTypePanel.SuspendLayout(); this.fileSelectionGroupBox.SuspendLayout(); this.panel1.SuspendLayout(); this.importDetailsGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownInterval)).BeginInit(); this.retryPolicyGroupBox.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.retriesDelayUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.retriesCountUpDown)).BeginInit(); this.groupBoxExceptions.SuspendLayout(); this.groupBoxButtons.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownInterval)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownStatusCheckInterval)).BeginInit(); this.SuspendLayout(); // // jobDetailsGroupBox @@ -200,7 +200,7 @@ namespace RecurringIntegrationsScheduler.Forms this.jobDetailsGroupBox.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.jobDetailsGroupBox.Name = "jobDetailsGroupBox"; this.jobDetailsGroupBox.Padding = new System.Windows.Forms.Padding(5, 6, 5, 6); - this.jobDetailsGroupBox.Size = new System.Drawing.Size(420, 886); + this.jobDetailsGroupBox.Size = new System.Drawing.Size(420, 892); this.jobDetailsGroupBox.TabIndex = 0; this.jobDetailsGroupBox.TabStop = false; this.jobDetailsGroupBox.Text = "Job details"; @@ -690,7 +690,7 @@ namespace RecurringIntegrationsScheduler.Forms // this.pauseIndefinitelyCheckBox.AutoSize = true; this.pauseIndefinitelyCheckBox.Location = new System.Drawing.Point(18, 35); - this.pauseIndefinitelyCheckBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.pauseIndefinitelyCheckBox.Margin = new System.Windows.Forms.Padding(4); this.pauseIndefinitelyCheckBox.Name = "pauseIndefinitelyCheckBox"; this.pauseIndefinitelyCheckBox.Size = new System.Drawing.Size(221, 29); this.pauseIndefinitelyCheckBox.TabIndex = 0; @@ -948,13 +948,36 @@ namespace RecurringIntegrationsScheduler.Forms this.processingJobGroupBox.TabStop = false; this.processingJobGroupBox.Text = "Execution monitoring job"; // + // numericUpDownStatusCheckInterval + // + this.numericUpDownStatusCheckInterval.Location = new System.Drawing.Point(328, 229); + this.numericUpDownStatusCheckInterval.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.numericUpDownStatusCheckInterval.Maximum = new decimal(new int[] { + 3600, + 0, + 0, + 0}); + this.numericUpDownStatusCheckInterval.Name = "numericUpDownStatusCheckInterval"; + this.numericUpDownStatusCheckInterval.Size = new System.Drawing.Size(84, 29); + this.numericUpDownStatusCheckInterval.TabIndex = 40; + // + // statusCheckIntervalLabel + // + this.statusCheckIntervalLabel.AutoSize = true; + this.statusCheckIntervalLabel.Location = new System.Drawing.Point(17, 229); + this.statusCheckIntervalLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.statusCheckIntervalLabel.Name = "statusCheckIntervalLabel"; + this.statusCheckIntervalLabel.Size = new System.Drawing.Size(305, 25); + this.statusCheckIntervalLabel.TabIndex = 39; + this.statusCheckIntervalLabel.Text = "Delay between status check (sec)"; + // // groupBoxErrorKeysFile // this.groupBoxErrorKeysFile.Controls.Add(this.downloadErrorKeysFileCheckBox); this.groupBoxErrorKeysFile.Location = new System.Drawing.Point(13, 273); - this.groupBoxErrorKeysFile.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxErrorKeysFile.Margin = new System.Windows.Forms.Padding(4); this.groupBoxErrorKeysFile.Name = "groupBoxErrorKeysFile"; - this.groupBoxErrorKeysFile.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxErrorKeysFile.Padding = new System.Windows.Forms.Padding(4); this.groupBoxErrorKeysFile.Size = new System.Drawing.Size(392, 68); this.groupBoxErrorKeysFile.TabIndex = 10; this.groupBoxErrorKeysFile.TabStop = false; @@ -964,7 +987,7 @@ namespace RecurringIntegrationsScheduler.Forms // this.downloadErrorKeysFileCheckBox.AutoSize = true; this.downloadErrorKeysFileCheckBox.Location = new System.Drawing.Point(17, 31); - this.downloadErrorKeysFileCheckBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.downloadErrorKeysFileCheckBox.Margin = new System.Windows.Forms.Padding(4); this.downloadErrorKeysFileCheckBox.Name = "downloadErrorKeysFileCheckBox"; this.downloadErrorKeysFileCheckBox.Size = new System.Drawing.Size(313, 29); this.downloadErrorKeysFileCheckBox.TabIndex = 0; @@ -1224,6 +1247,29 @@ namespace RecurringIntegrationsScheduler.Forms this.importDetailsGroupBox.TabStop = false; this.importDetailsGroupBox.Text = "Import details"; // + // numericUpDownInterval + // + this.numericUpDownInterval.Location = new System.Drawing.Point(285, 159); + this.numericUpDownInterval.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.numericUpDownInterval.Maximum = new decimal(new int[] { + 3600, + 0, + 0, + 0}); + this.numericUpDownInterval.Name = "numericUpDownInterval"; + this.numericUpDownInterval.Size = new System.Drawing.Size(121, 29); + this.numericUpDownInterval.TabIndex = 11; + // + // labelInterval + // + this.labelInterval.AutoSize = true; + this.labelInterval.Location = new System.Drawing.Point(8, 163); + this.labelInterval.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.labelInterval.Name = "labelInterval"; + this.labelInterval.Size = new System.Drawing.Size(270, 25); + this.labelInterval.TabIndex = 4; + this.labelInterval.Text = "Delay between uploads (sec.)"; + // // executeImportCheckBox // this.executeImportCheckBox.AutoSize = true; @@ -1352,9 +1398,9 @@ namespace RecurringIntegrationsScheduler.Forms // this.groupBoxExceptions.Controls.Add(this.pauseOnExceptionsCheckBox); this.groupBoxExceptions.Location = new System.Drawing.Point(458, 1089); - this.groupBoxExceptions.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxExceptions.Margin = new System.Windows.Forms.Padding(4); this.groupBoxExceptions.Name = "groupBoxExceptions"; - this.groupBoxExceptions.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxExceptions.Padding = new System.Windows.Forms.Padding(4); this.groupBoxExceptions.Size = new System.Drawing.Size(422, 74); this.groupBoxExceptions.TabIndex = 9; this.groupBoxExceptions.TabStop = false; @@ -1366,7 +1412,7 @@ namespace RecurringIntegrationsScheduler.Forms this.pauseOnExceptionsCheckBox.Checked = true; this.pauseOnExceptionsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; this.pauseOnExceptionsCheckBox.Location = new System.Drawing.Point(17, 31); - this.pauseOnExceptionsCheckBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.pauseOnExceptionsCheckBox.Margin = new System.Windows.Forms.Padding(4); this.pauseOnExceptionsCheckBox.Name = "pauseOnExceptionsCheckBox"; this.pauseOnExceptionsCheckBox.Size = new System.Drawing.Size(329, 29); this.pauseOnExceptionsCheckBox.TabIndex = 0; @@ -1379,9 +1425,9 @@ namespace RecurringIntegrationsScheduler.Forms this.groupBoxButtons.Controls.Add(this.cancelButton); this.groupBoxButtons.Controls.Add(this.customActionsButton); this.groupBoxButtons.Location = new System.Drawing.Point(24, 1171); - this.groupBoxButtons.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxButtons.Margin = new System.Windows.Forms.Padding(4); this.groupBoxButtons.Name = "groupBoxButtons"; - this.groupBoxButtons.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxButtons.Padding = new System.Windows.Forms.Padding(4); this.groupBoxButtons.Size = new System.Drawing.Size(1289, 85); this.groupBoxButtons.TabIndex = 10; this.groupBoxButtons.TabStop = false; @@ -1389,7 +1435,7 @@ namespace RecurringIntegrationsScheduler.Forms // addJobButton // this.addJobButton.Location = new System.Drawing.Point(867, 30); - this.addJobButton.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.addJobButton.Margin = new System.Windows.Forms.Padding(4); this.addJobButton.Name = "addJobButton"; this.addJobButton.Size = new System.Drawing.Size(198, 41); this.addJobButton.TabIndex = 2; @@ -1400,7 +1446,7 @@ namespace RecurringIntegrationsScheduler.Forms // cancelButton // this.cancelButton.Location = new System.Drawing.Point(1084, 30); - this.cancelButton.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.cancelButton.Margin = new System.Windows.Forms.Padding(4); this.cancelButton.Name = "cancelButton"; this.cancelButton.Size = new System.Drawing.Size(198, 41); this.cancelButton.TabIndex = 1; @@ -1411,7 +1457,7 @@ namespace RecurringIntegrationsScheduler.Forms // customActionsButton // this.customActionsButton.Location = new System.Drawing.Point(7, 30); - this.customActionsButton.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.customActionsButton.Margin = new System.Windows.Forms.Padding(4); this.customActionsButton.Name = "customActionsButton"; this.customActionsButton.Size = new System.Drawing.Size(352, 41); this.customActionsButton.TabIndex = 0; @@ -1419,72 +1465,6 @@ namespace RecurringIntegrationsScheduler.Forms this.customActionsButton.UseVisualStyleBackColor = true; this.customActionsButton.Click += new System.EventHandler(this.CustomActionsButton_Click); // - // labelInterval - // - this.labelInterval.AutoSize = true; - this.labelInterval.Location = new System.Drawing.Point(8, 163); - this.labelInterval.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.labelInterval.Name = "labelInterval"; - this.labelInterval.Size = new System.Drawing.Size(273, 25); - this.labelInterval.TabIndex = 4; - this.labelInterval.Text = "Delay between files (seconds)"; - // - // numericUpDownInterval - // - this.numericUpDownInterval.Location = new System.Drawing.Point(285, 159); - this.numericUpDownInterval.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); - this.numericUpDownInterval.Maximum = new decimal(new int[] { - 3600, - 0, - 0, - 0}); - this.numericUpDownInterval.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.numericUpDownInterval.Name = "numericUpDownInterval"; - this.numericUpDownInterval.Size = new System.Drawing.Size(121, 29); - this.numericUpDownInterval.TabIndex = 11; - this.numericUpDownInterval.Value = new decimal(new int[] { - 1, - 0, - 0, - 0}); - // - // numericUpDownStatusCheckInterval - // - this.numericUpDownStatusCheckInterval.Location = new System.Drawing.Point(328, 229); - this.numericUpDownStatusCheckInterval.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); - this.numericUpDownStatusCheckInterval.Maximum = new decimal(new int[] { - 3600, - 0, - 0, - 0}); - this.numericUpDownStatusCheckInterval.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.numericUpDownStatusCheckInterval.Name = "numericUpDownStatusCheckInterval"; - this.numericUpDownStatusCheckInterval.Size = new System.Drawing.Size(84, 29); - this.numericUpDownStatusCheckInterval.TabIndex = 40; - this.numericUpDownStatusCheckInterval.Value = new decimal(new int[] { - 1, - 0, - 0, - 0}); - // - // statusCheckIntervalLabel - // - this.statusCheckIntervalLabel.AutoSize = true; - this.statusCheckIntervalLabel.Location = new System.Drawing.Point(17, 229); - this.statusCheckIntervalLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.statusCheckIntervalLabel.Name = "statusCheckIntervalLabel"; - this.statusCheckIntervalLabel.Size = new System.Drawing.Size(305, 25); - this.statusCheckIntervalLabel.TabIndex = 39; - this.statusCheckIntervalLabel.Text = "Delay between status check (sec)"; - // // ImportJob // this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F); @@ -1525,6 +1505,7 @@ namespace RecurringIntegrationsScheduler.Forms this.upJobTriggerTypePanel.PerformLayout(); this.processingJobGroupBox.ResumeLayout(false); this.processingJobGroupBox.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownStatusCheckInterval)).EndInit(); this.groupBoxErrorKeysFile.ResumeLayout(false); this.groupBoxErrorKeysFile.PerformLayout(); this.procJobTriggerTypePanel.ResumeLayout(false); @@ -1535,6 +1516,7 @@ namespace RecurringIntegrationsScheduler.Forms this.panel1.PerformLayout(); this.importDetailsGroupBox.ResumeLayout(false); this.importDetailsGroupBox.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownInterval)).EndInit(); this.retryPolicyGroupBox.ResumeLayout(false); this.retryPolicyGroupBox.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.retriesDelayUpDown)).EndInit(); @@ -1542,8 +1524,6 @@ namespace RecurringIntegrationsScheduler.Forms this.groupBoxExceptions.ResumeLayout(false); this.groupBoxExceptions.PerformLayout(); this.groupBoxButtons.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownInterval)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownStatusCheckInterval)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); diff --git a/Scheduler/Forms/Parameters.Designer.cs b/Scheduler/Forms/Parameters.Designer.cs index 7384cb2..30a4445 100644 --- a/Scheduler/Forms/Parameters.Designer.cs +++ b/Scheduler/Forms/Parameters.Designer.cs @@ -84,15 +84,15 @@ namespace RecurringIntegrationsScheduler.Forms this.foldersGroupBox = new System.Windows.Forms.GroupBox(); this.applicationsGroupBox = new System.Windows.Forms.GroupBox(); this.applicationsGrid = new System.Windows.Forms.DataGridView(); + this.applicationName = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.applicationType = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.applicationClientId = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.applicationSecret = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.applicationsToolStrip = new System.Windows.Forms.ToolStrip(); this.applicationsAddButton = new System.Windows.Forms.ToolStripButton(); this.applicationsDeleteButton = new System.Windows.Forms.ToolStripButton(); this.applicationsEditButton = new System.Windows.Forms.ToolStripButton(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.applicationName = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.applicationType = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.applicationClientId = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.applicationSecret = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.instancesToolStrip.SuspendLayout(); this.usersToolStrip.SuspendLayout(); this.dataJobsToolStrip.SuspendLayout(); @@ -125,10 +125,10 @@ namespace RecurringIntegrationsScheduler.Forms this.instancesDeleteButton, this.instancesEditButton, this.instancesValidateButton}); - this.instancesToolStrip.Location = new System.Drawing.Point(6, 365); + this.instancesToolStrip.Location = new System.Drawing.Point(7, 436); this.instancesToolStrip.Name = "instancesToolStrip"; this.instancesToolStrip.Padding = new System.Windows.Forms.Padding(0); - this.instancesToolStrip.Size = new System.Drawing.Size(638, 32); + this.instancesToolStrip.Size = new System.Drawing.Size(780, 40); this.instancesToolStrip.TabIndex = 2; // // instancesAddButton @@ -136,7 +136,7 @@ namespace RecurringIntegrationsScheduler.Forms this.instancesAddButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Add_16xMD; this.instancesAddButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.instancesAddButton.Name = "instancesAddButton"; - this.instancesAddButton.Size = new System.Drawing.Size(70, 29); + this.instancesAddButton.Size = new System.Drawing.Size(75, 34); this.instancesAddButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Add; this.instancesAddButton.Click += new System.EventHandler(this.AxInstancesAddButton_Click); // @@ -146,7 +146,7 @@ namespace RecurringIntegrationsScheduler.Forms this.instancesDeleteButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Remove_16xMD; this.instancesDeleteButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.instancesDeleteButton.Name = "instancesDeleteButton"; - this.instancesDeleteButton.Size = new System.Drawing.Size(86, 29); + this.instancesDeleteButton.Size = new System.Drawing.Size(97, 34); this.instancesDeleteButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Delete; this.instancesDeleteButton.Click += new System.EventHandler(this.AxInstancesDeleteButton_Click); // @@ -156,7 +156,7 @@ namespace RecurringIntegrationsScheduler.Forms this.instancesEditButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Edit_16xMD; this.instancesEditButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.instancesEditButton.Name = "instancesEditButton"; - this.instancesEditButton.Size = new System.Drawing.Size(66, 29); + this.instancesEditButton.Size = new System.Drawing.Size(72, 34); this.instancesEditButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Edit; this.instancesEditButton.Click += new System.EventHandler(this.InstancesEditButton_Click); // @@ -166,7 +166,7 @@ namespace RecurringIntegrationsScheduler.Forms this.instancesValidateButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.ValidateDocument_16x; this.instancesValidateButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.instancesValidateButton.Name = "instancesValidateButton"; - this.instancesValidateButton.Size = new System.Drawing.Size(98, 29); + this.instancesValidateButton.Size = new System.Drawing.Size(110, 34); this.instancesValidateButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Validate; this.instancesValidateButton.Click += new System.EventHandler(this.InstancesValidateButton_Click); // @@ -179,10 +179,10 @@ namespace RecurringIntegrationsScheduler.Forms this.usersAddButton, this.usersDeleteButton, this.usersEditButton}); - this.usersToolStrip.Location = new System.Drawing.Point(6, 365); + this.usersToolStrip.Location = new System.Drawing.Point(7, 437); this.usersToolStrip.Name = "usersToolStrip"; this.usersToolStrip.Padding = new System.Windows.Forms.Padding(0); - this.usersToolStrip.Size = new System.Drawing.Size(310, 32); + this.usersToolStrip.Size = new System.Drawing.Size(379, 40); this.usersToolStrip.TabIndex = 3; // // usersAddButton @@ -190,7 +190,7 @@ namespace RecurringIntegrationsScheduler.Forms this.usersAddButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Add_16xMD; this.usersAddButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.usersAddButton.Name = "usersAddButton"; - this.usersAddButton.Size = new System.Drawing.Size(70, 29); + this.usersAddButton.Size = new System.Drawing.Size(75, 34); this.usersAddButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Add; this.usersAddButton.Click += new System.EventHandler(this.UsersAddButton_Click); // @@ -200,7 +200,7 @@ namespace RecurringIntegrationsScheduler.Forms this.usersDeleteButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Remove_16xMD; this.usersDeleteButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.usersDeleteButton.Name = "usersDeleteButton"; - this.usersDeleteButton.Size = new System.Drawing.Size(86, 29); + this.usersDeleteButton.Size = new System.Drawing.Size(97, 34); this.usersDeleteButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Delete; this.usersDeleteButton.Click += new System.EventHandler(this.UsersDeleteButton_Click); // @@ -210,7 +210,7 @@ namespace RecurringIntegrationsScheduler.Forms this.usersEditButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Edit_16xMD; this.usersEditButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.usersEditButton.Name = "usersEditButton"; - this.usersEditButton.Size = new System.Drawing.Size(66, 29); + this.usersEditButton.Size = new System.Drawing.Size(72, 34); this.usersEditButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Edit; this.usersEditButton.Click += new System.EventHandler(this.UsersEditButton_Click); // @@ -223,10 +223,10 @@ namespace RecurringIntegrationsScheduler.Forms this.dataJobsAddButton, this.dataJobsDeleteButton, this.dataJobsEditButton}); - this.dataJobsToolStrip.Location = new System.Drawing.Point(6, 365); + this.dataJobsToolStrip.Location = new System.Drawing.Point(7, 436); this.dataJobsToolStrip.Name = "dataJobsToolStrip"; this.dataJobsToolStrip.Padding = new System.Windows.Forms.Padding(0); - this.dataJobsToolStrip.Size = new System.Drawing.Size(307, 32); + this.dataJobsToolStrip.Size = new System.Drawing.Size(376, 40); this.dataJobsToolStrip.TabIndex = 3; // // dataJobsAddButton @@ -234,7 +234,7 @@ namespace RecurringIntegrationsScheduler.Forms this.dataJobsAddButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Add_16xMD; this.dataJobsAddButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.dataJobsAddButton.Name = "dataJobsAddButton"; - this.dataJobsAddButton.Size = new System.Drawing.Size(70, 29); + this.dataJobsAddButton.Size = new System.Drawing.Size(75, 34); this.dataJobsAddButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Add; this.dataJobsAddButton.Click += new System.EventHandler(this.DataJobsAddButton_Click); // @@ -244,7 +244,7 @@ namespace RecurringIntegrationsScheduler.Forms this.dataJobsDeleteButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Remove_16xMD; this.dataJobsDeleteButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.dataJobsDeleteButton.Name = "dataJobsDeleteButton"; - this.dataJobsDeleteButton.Size = new System.Drawing.Size(86, 29); + this.dataJobsDeleteButton.Size = new System.Drawing.Size(97, 34); this.dataJobsDeleteButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Delete; this.dataJobsDeleteButton.Click += new System.EventHandler(this.DataJobsDeleteButton_Click); // @@ -254,7 +254,7 @@ namespace RecurringIntegrationsScheduler.Forms this.dataJobsEditButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Edit_16xMD; this.dataJobsEditButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.dataJobsEditButton.Name = "dataJobsEditButton"; - this.dataJobsEditButton.Size = new System.Drawing.Size(66, 29); + this.dataJobsEditButton.Size = new System.Drawing.Size(72, 34); this.dataJobsEditButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Edit; this.dataJobsEditButton.Click += new System.EventHandler(this.DataJobsEditButton_Click); // @@ -267,10 +267,10 @@ namespace RecurringIntegrationsScheduler.Forms this.jobGroupsAddButton, this.jobGroupsDeleteButton, this.jobGroupsEditButton}); - this.jobGroupsToolStrip.Location = new System.Drawing.Point(6, 365); + this.jobGroupsToolStrip.Location = new System.Drawing.Point(7, 437); this.jobGroupsToolStrip.Name = "jobGroupsToolStrip"; this.jobGroupsToolStrip.Padding = new System.Windows.Forms.Padding(0); - this.jobGroupsToolStrip.Size = new System.Drawing.Size(307, 32); + this.jobGroupsToolStrip.Size = new System.Drawing.Size(376, 40); this.jobGroupsToolStrip.TabIndex = 4; // // jobGroupsAddButton @@ -278,7 +278,7 @@ namespace RecurringIntegrationsScheduler.Forms this.jobGroupsAddButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Add_16xMD; this.jobGroupsAddButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.jobGroupsAddButton.Name = "jobGroupsAddButton"; - this.jobGroupsAddButton.Size = new System.Drawing.Size(70, 29); + this.jobGroupsAddButton.Size = new System.Drawing.Size(75, 34); this.jobGroupsAddButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Add; this.jobGroupsAddButton.Click += new System.EventHandler(this.JobGroupsAddButton_Click); // @@ -288,7 +288,7 @@ namespace RecurringIntegrationsScheduler.Forms this.jobGroupsDeleteButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Remove_16xMD; this.jobGroupsDeleteButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.jobGroupsDeleteButton.Name = "jobGroupsDeleteButton"; - this.jobGroupsDeleteButton.Size = new System.Drawing.Size(86, 29); + this.jobGroupsDeleteButton.Size = new System.Drawing.Size(97, 34); this.jobGroupsDeleteButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Delete; this.jobGroupsDeleteButton.Click += new System.EventHandler(this.JobGroupsDeleteButton_Click); // @@ -298,7 +298,7 @@ namespace RecurringIntegrationsScheduler.Forms this.jobGroupsEditButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Edit_16xMD; this.jobGroupsEditButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.jobGroupsEditButton.Name = "jobGroupsEditButton"; - this.jobGroupsEditButton.Size = new System.Drawing.Size(66, 29); + this.jobGroupsEditButton.Size = new System.Drawing.Size(72, 34); this.jobGroupsEditButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Edit; this.jobGroupsEditButton.Click += new System.EventHandler(this.JobGroupsEditButton_Click); // @@ -308,14 +308,14 @@ namespace RecurringIntegrationsScheduler.Forms this.instancesGroupBox.Controls.Add(this.instancesGrid); this.instancesGroupBox.Controls.Add(this.instancesToolStrip); this.instancesGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; - this.instancesGroupBox.Location = new System.Drawing.Point(4, 5); - this.instancesGroupBox.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.instancesGroupBox.Location = new System.Drawing.Point(5, 6); + this.instancesGroupBox.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.instancesGroupBox.Name = "instancesGroupBox"; - this.instancesGroupBox.Padding = new System.Windows.Forms.Padding(6, 12, 6, 6); - this.instancesGroupBox.Size = new System.Drawing.Size(650, 403); + this.instancesGroupBox.Padding = new System.Windows.Forms.Padding(7, 14, 7, 7); + this.instancesGroupBox.Size = new System.Drawing.Size(794, 483); this.instancesGroupBox.TabIndex = 1; this.instancesGroupBox.TabStop = false; - this.instancesGroupBox.Text = Resources.Dynamics_365_for_Operations_instances; + this.instancesGroupBox.Text = "Dynamics 365 for Finance and Operations instances"; // // instancesGrid // @@ -333,15 +333,15 @@ namespace RecurringIntegrationsScheduler.Forms this.instanceAadTenant, this.instanceAzureAuthEndpoint}); this.instancesGrid.Dock = System.Windows.Forms.DockStyle.Fill; - this.instancesGrid.Location = new System.Drawing.Point(6, 31); - this.instancesGrid.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.instancesGrid.Location = new System.Drawing.Point(7, 36); + this.instancesGrid.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.instancesGrid.MultiSelect = false; this.instancesGrid.Name = "instancesGrid"; this.instancesGrid.ReadOnly = true; this.instancesGrid.RowHeadersVisible = false; this.instancesGrid.RowHeadersWidth = 4; this.instancesGrid.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.instancesGrid.Size = new System.Drawing.Size(638, 334); + this.instancesGrid.Size = new System.Drawing.Size(780, 400); this.instancesGrid.TabIndex = 0; this.instancesGrid.CellContentDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.InstancesGrid_CellContentDoubleClick); this.instancesGrid.RowsRemoved += new System.Windows.Forms.DataGridViewRowsRemovedEventHandler(this.InstancesDataGridView_RowsRemoved); @@ -352,7 +352,8 @@ namespace RecurringIntegrationsScheduler.Forms // this.instanceName.DataPropertyName = "Name"; this.instanceName.FillWeight = 40F; - this.instanceName.HeaderText = Resources.NameLabel; + this.instanceName.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.NameLabel; + this.instanceName.MinimumWidth = 9; this.instanceName.Name = "instanceName"; this.instanceName.ReadOnly = true; this.instanceName.ToolTipText = global::RecurringIntegrationsScheduler.Properties.Resources.Friendly_name_used_only_in_Recurring_Integrations_App; @@ -362,6 +363,7 @@ namespace RecurringIntegrationsScheduler.Forms this.instanceAosUri.DataPropertyName = "AosUri"; this.instanceAosUri.FillWeight = 40F; this.instanceAosUri.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.AOS_URL; + this.instanceAosUri.MinimumWidth = 9; this.instanceAosUri.Name = "instanceAosUri"; this.instanceAosUri.ReadOnly = true; // @@ -370,6 +372,7 @@ namespace RecurringIntegrationsScheduler.Forms this.instanceAadTenant.DataPropertyName = "AadTenant"; this.instanceAadTenant.FillWeight = 20F; this.instanceAadTenant.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.Tenant; + this.instanceAadTenant.MinimumWidth = 9; this.instanceAadTenant.Name = "instanceAadTenant"; this.instanceAadTenant.ReadOnly = true; this.instanceAadTenant.ToolTipText = global::RecurringIntegrationsScheduler.Properties.Resources.Uri_or_Guid; @@ -378,6 +381,7 @@ namespace RecurringIntegrationsScheduler.Forms // this.instanceAzureAuthEndpoint.DataPropertyName = "AzureAuthEndpoint"; this.instanceAzureAuthEndpoint.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.Authentication_endpoint; + this.instanceAzureAuthEndpoint.MinimumWidth = 9; this.instanceAzureAuthEndpoint.Name = "instanceAzureAuthEndpoint"; this.instanceAzureAuthEndpoint.ReadOnly = true; this.instanceAzureAuthEndpoint.Visible = false; @@ -387,14 +391,14 @@ namespace RecurringIntegrationsScheduler.Forms this.usersGroupBox.Controls.Add(this.usersDataGrid); this.usersGroupBox.Controls.Add(this.usersToolStrip); this.usersGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; - this.usersGroupBox.Location = new System.Drawing.Point(332, 418); - this.usersGroupBox.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.usersGroupBox.Location = new System.Drawing.Point(406, 501); + this.usersGroupBox.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.usersGroupBox.Name = "usersGroupBox"; - this.usersGroupBox.Padding = new System.Windows.Forms.Padding(6, 12, 6, 6); - this.usersGroupBox.Size = new System.Drawing.Size(322, 403); + this.usersGroupBox.Padding = new System.Windows.Forms.Padding(7, 14, 7, 7); + this.usersGroupBox.Size = new System.Drawing.Size(393, 484); this.usersGroupBox.TabIndex = 0; this.usersGroupBox.TabStop = false; - this.usersGroupBox.Text = Resources.User_credentials; + this.usersGroupBox.Text = "User credentials"; // // usersDataGrid // @@ -410,15 +414,15 @@ namespace RecurringIntegrationsScheduler.Forms this.userLogin, this.userPassword}); this.usersDataGrid.Dock = System.Windows.Forms.DockStyle.Fill; - this.usersDataGrid.Location = new System.Drawing.Point(6, 31); - this.usersDataGrid.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.usersDataGrid.Location = new System.Drawing.Point(7, 36); + this.usersDataGrid.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.usersDataGrid.MultiSelect = false; this.usersDataGrid.Name = "usersDataGrid"; this.usersDataGrid.ReadOnly = true; this.usersDataGrid.RowHeadersVisible = false; this.usersDataGrid.RowHeadersWidth = 4; this.usersDataGrid.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.usersDataGrid.Size = new System.Drawing.Size(310, 334); + this.usersDataGrid.Size = new System.Drawing.Size(379, 401); this.usersDataGrid.TabIndex = 1; this.usersDataGrid.CellContentDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.UsersDataGrid_CellContentDoubleClick); this.usersDataGrid.RowsRemoved += new System.Windows.Forms.DataGridViewRowsRemovedEventHandler(this.UsersDataGridView_RowsRemoved); @@ -428,6 +432,7 @@ namespace RecurringIntegrationsScheduler.Forms // this.userLogin.DataPropertyName = "Login"; this.userLogin.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.User_login_UPN; + this.userLogin.MinimumWidth = 9; this.userLogin.Name = "userLogin"; this.userLogin.ReadOnly = true; this.userLogin.ToolTipText = global::RecurringIntegrationsScheduler.Properties.Resources.User_login_like_admin_contoso_com; @@ -436,6 +441,7 @@ namespace RecurringIntegrationsScheduler.Forms // this.userPassword.DataPropertyName = "Password"; this.userPassword.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.Password; + this.userPassword.MinimumWidth = 9; this.userPassword.Name = "userPassword"; this.userPassword.ReadOnly = true; this.userPassword.ToolTipText = global::RecurringIntegrationsScheduler.Properties.Resources.Password; @@ -446,14 +452,14 @@ namespace RecurringIntegrationsScheduler.Forms this.dataJobsGroupBox.Controls.Add(this.dataJobsGrid); this.dataJobsGroupBox.Controls.Add(this.dataJobsToolStrip); this.dataJobsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataJobsGroupBox.Location = new System.Drawing.Point(662, 5); - this.dataJobsGroupBox.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.dataJobsGroupBox.Location = new System.Drawing.Point(809, 6); + this.dataJobsGroupBox.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.dataJobsGroupBox.Name = "dataJobsGroupBox"; - this.dataJobsGroupBox.Padding = new System.Windows.Forms.Padding(6, 12, 6, 6); - this.dataJobsGroupBox.Size = new System.Drawing.Size(319, 403); + this.dataJobsGroupBox.Padding = new System.Windows.Forms.Padding(7, 14, 7, 7); + this.dataJobsGroupBox.Size = new System.Drawing.Size(390, 483); this.dataJobsGroupBox.TabIndex = 0; this.dataJobsGroupBox.TabStop = false; - this.dataJobsGroupBox.Text = Resources.Data_jobs; + this.dataJobsGroupBox.Text = "Data jobs"; // // dataJobsGrid // @@ -471,15 +477,15 @@ namespace RecurringIntegrationsScheduler.Forms this.dataJobActivityId, this.dataJobEntityName}); this.dataJobsGrid.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataJobsGrid.Location = new System.Drawing.Point(6, 31); - this.dataJobsGrid.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.dataJobsGrid.Location = new System.Drawing.Point(7, 36); + this.dataJobsGrid.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.dataJobsGrid.MultiSelect = false; this.dataJobsGrid.Name = "dataJobsGrid"; this.dataJobsGrid.ReadOnly = true; this.dataJobsGrid.RowHeadersVisible = false; this.dataJobsGrid.RowHeadersWidth = 4; this.dataJobsGrid.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dataJobsGrid.Size = new System.Drawing.Size(307, 334); + this.dataJobsGrid.Size = new System.Drawing.Size(376, 400); this.dataJobsGrid.TabIndex = 0; this.dataJobsGrid.CellContentDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.DataJobsGrid_CellContentDoubleClick); this.dataJobsGrid.RowsRemoved += new System.Windows.Forms.DataGridViewRowsRemovedEventHandler(this.DataJobsDataGridView_RowsRemoved); @@ -488,7 +494,7 @@ namespace RecurringIntegrationsScheduler.Forms // dataJobName // this.dataJobName.DataPropertyName = "Name"; - this.dataJobName.HeaderText = Resources.NameLabel; + this.dataJobName.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.NameLabel; this.dataJobName.MinimumWidth = 50; this.dataJobName.Name = "dataJobName"; this.dataJobName.ReadOnly = true; @@ -506,6 +512,7 @@ namespace RecurringIntegrationsScheduler.Forms // this.dataJobActivityId.DataPropertyName = "ActivityId"; this.dataJobActivityId.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.Activity_Id; + this.dataJobActivityId.MinimumWidth = 9; this.dataJobActivityId.Name = "dataJobActivityId"; this.dataJobActivityId.ReadOnly = true; this.dataJobActivityId.ToolTipText = global::RecurringIntegrationsScheduler.Properties.Resources.Activity_Id_Guid_of_this_data_job_configured_in_Dynamics; @@ -515,6 +522,7 @@ namespace RecurringIntegrationsScheduler.Forms // this.dataJobEntityName.DataPropertyName = "EntityName"; this.dataJobEntityName.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.Entity_name; + this.dataJobEntityName.MinimumWidth = 9; this.dataJobEntityName.Name = "dataJobEntityName"; this.dataJobEntityName.ReadOnly = true; this.dataJobEntityName.ToolTipText = global::RecurringIntegrationsScheduler.Properties.Resources.Entity_name_for_this_data_job_configured_in_Dynamics; @@ -524,32 +532,32 @@ namespace RecurringIntegrationsScheduler.Forms // this.downloadJobsFolderGroupBox.Controls.Add(this.downloadErrorsFolderLabel); this.downloadJobsFolderGroupBox.Controls.Add(this.downloadErrorsFolder); - this.downloadJobsFolderGroupBox.Location = new System.Drawing.Point(10, 325); - this.downloadJobsFolderGroupBox.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.downloadJobsFolderGroupBox.Location = new System.Drawing.Point(12, 390); + this.downloadJobsFolderGroupBox.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.downloadJobsFolderGroupBox.Name = "downloadJobsFolderGroupBox"; - this.downloadJobsFolderGroupBox.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.downloadJobsFolderGroupBox.Size = new System.Drawing.Size(260, 72); + this.downloadJobsFolderGroupBox.Padding = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.downloadJobsFolderGroupBox.Size = new System.Drawing.Size(318, 86); this.downloadJobsFolderGroupBox.TabIndex = 2; this.downloadJobsFolderGroupBox.TabStop = false; - this.downloadJobsFolderGroupBox.Text = Resources.Download_jobs_folders_names; + this.downloadJobsFolderGroupBox.Text = "Download/export folders names"; // // downloadErrorsFolderLabel // this.downloadErrorsFolderLabel.AutoSize = true; - this.downloadErrorsFolderLabel.Location = new System.Drawing.Point(55, 32); - this.downloadErrorsFolderLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.downloadErrorsFolderLabel.Location = new System.Drawing.Point(67, 38); + this.downloadErrorsFolderLabel.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); this.downloadErrorsFolderLabel.Name = "downloadErrorsFolderLabel"; - this.downloadErrorsFolderLabel.Size = new System.Drawing.Size(52, 20); + this.downloadErrorsFolderLabel.Size = new System.Drawing.Size(64, 25); this.downloadErrorsFolderLabel.TabIndex = 7; - this.downloadErrorsFolderLabel.Text = Resources.Errors; + this.downloadErrorsFolderLabel.Text = "Errors"; // // downloadErrorsFolder // this.downloadErrorsFolder.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::RecurringIntegrationsScheduler.Properties.Settings.Default, "DownloadErrorsFolder", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.downloadErrorsFolder.Location = new System.Drawing.Point(118, 29); - this.downloadErrorsFolder.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.downloadErrorsFolder.Location = new System.Drawing.Point(144, 35); + this.downloadErrorsFolder.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.downloadErrorsFolder.Name = "downloadErrorsFolder"; - this.downloadErrorsFolder.Size = new System.Drawing.Size(127, 26); + this.downloadErrorsFolder.Size = new System.Drawing.Size(154, 29); this.downloadErrorsFolder.TabIndex = 9; this.downloadErrorsFolder.Text = global::RecurringIntegrationsScheduler.Properties.Settings.Default.DownloadErrorsFolder; // @@ -559,52 +567,52 @@ namespace RecurringIntegrationsScheduler.Forms this.processingJobsFoldersGroupBox.Controls.Add(this.processingSuccessFolder); this.processingJobsFoldersGroupBox.Controls.Add(this.processingErrorsFolderLabel); this.processingJobsFoldersGroupBox.Controls.Add(this.processingErrorsFolder); - this.processingJobsFoldersGroupBox.Location = new System.Drawing.Point(10, 199); - this.processingJobsFoldersGroupBox.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.processingJobsFoldersGroupBox.Location = new System.Drawing.Point(12, 239); + this.processingJobsFoldersGroupBox.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.processingJobsFoldersGroupBox.Name = "processingJobsFoldersGroupBox"; - this.processingJobsFoldersGroupBox.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.processingJobsFoldersGroupBox.Size = new System.Drawing.Size(260, 116); + this.processingJobsFoldersGroupBox.Padding = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.processingJobsFoldersGroupBox.Size = new System.Drawing.Size(318, 139); this.processingJobsFoldersGroupBox.TabIndex = 1; this.processingJobsFoldersGroupBox.TabStop = false; - this.processingJobsFoldersGroupBox.Text = Resources.Monitoring_jobs_folders_names; + this.processingJobsFoldersGroupBox.Text = "Monitoring jobs folders names"; // // processingSuccessFolderLabel // this.processingSuccessFolderLabel.AutoSize = true; - this.processingSuccessFolderLabel.Location = new System.Drawing.Point(39, 39); - this.processingSuccessFolderLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.processingSuccessFolderLabel.Location = new System.Drawing.Point(48, 47); + this.processingSuccessFolderLabel.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); this.processingSuccessFolderLabel.Name = "processingSuccessFolderLabel"; - this.processingSuccessFolderLabel.Size = new System.Drawing.Size(70, 20); + this.processingSuccessFolderLabel.Size = new System.Drawing.Size(88, 25); this.processingSuccessFolderLabel.TabIndex = 9; - this.processingSuccessFolderLabel.Text = Resources.Success; + this.processingSuccessFolderLabel.Text = "Success"; // // processingSuccessFolder // this.processingSuccessFolder.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::RecurringIntegrationsScheduler.Properties.Settings.Default, "ProcessingSuccessFolder", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.processingSuccessFolder.Location = new System.Drawing.Point(118, 35); - this.processingSuccessFolder.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.processingSuccessFolder.Location = new System.Drawing.Point(144, 42); + this.processingSuccessFolder.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.processingSuccessFolder.Name = "processingSuccessFolder"; - this.processingSuccessFolder.Size = new System.Drawing.Size(127, 26); + this.processingSuccessFolder.Size = new System.Drawing.Size(154, 29); this.processingSuccessFolder.TabIndex = 12; this.processingSuccessFolder.Text = global::RecurringIntegrationsScheduler.Properties.Settings.Default.ProcessingSuccessFolder; // // processingErrorsFolderLabel // this.processingErrorsFolderLabel.AutoSize = true; - this.processingErrorsFolderLabel.Location = new System.Drawing.Point(55, 76); - this.processingErrorsFolderLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.processingErrorsFolderLabel.Location = new System.Drawing.Point(67, 91); + this.processingErrorsFolderLabel.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); this.processingErrorsFolderLabel.Name = "processingErrorsFolderLabel"; - this.processingErrorsFolderLabel.Size = new System.Drawing.Size(52, 20); + this.processingErrorsFolderLabel.Size = new System.Drawing.Size(64, 25); this.processingErrorsFolderLabel.TabIndex = 13; - this.processingErrorsFolderLabel.Text = Resources.Errors; + this.processingErrorsFolderLabel.Text = "Errors"; // // processingErrorsFolder // this.processingErrorsFolder.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::RecurringIntegrationsScheduler.Properties.Settings.Default, "ProcessingErrorsFolder", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.processingErrorsFolder.Location = new System.Drawing.Point(118, 72); - this.processingErrorsFolder.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.processingErrorsFolder.Location = new System.Drawing.Point(144, 86); + this.processingErrorsFolder.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.processingErrorsFolder.Name = "processingErrorsFolder"; - this.processingErrorsFolder.Size = new System.Drawing.Size(127, 26); + this.processingErrorsFolder.Size = new System.Drawing.Size(154, 29); this.processingErrorsFolder.TabIndex = 14; this.processingErrorsFolder.Text = global::RecurringIntegrationsScheduler.Properties.Settings.Default.ProcessingErrorsFolder; // @@ -616,72 +624,72 @@ namespace RecurringIntegrationsScheduler.Forms this.uploadJobsFoldersGroupBox.Controls.Add(this.uploadSuccessFolder); this.uploadJobsFoldersGroupBox.Controls.Add(this.uploadErrorsFolderLabel); this.uploadJobsFoldersGroupBox.Controls.Add(this.uploadErrorsFolder); - this.uploadJobsFoldersGroupBox.Location = new System.Drawing.Point(10, 31); - this.uploadJobsFoldersGroupBox.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.uploadJobsFoldersGroupBox.Location = new System.Drawing.Point(12, 37); + this.uploadJobsFoldersGroupBox.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.uploadJobsFoldersGroupBox.Name = "uploadJobsFoldersGroupBox"; - this.uploadJobsFoldersGroupBox.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.uploadJobsFoldersGroupBox.Size = new System.Drawing.Size(260, 158); + this.uploadJobsFoldersGroupBox.Padding = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.uploadJobsFoldersGroupBox.Size = new System.Drawing.Size(318, 190); this.uploadJobsFoldersGroupBox.TabIndex = 0; this.uploadJobsFoldersGroupBox.TabStop = false; - this.uploadJobsFoldersGroupBox.Text = Resources.Upload_jobs_folders_names; + this.uploadJobsFoldersGroupBox.Text = "Upload/import jobs folders names"; // // uploadInputFolderLabel // this.uploadInputFolderLabel.AutoSize = true; - this.uploadInputFolderLabel.Location = new System.Drawing.Point(19, 42); - this.uploadInputFolderLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.uploadInputFolderLabel.Location = new System.Drawing.Point(23, 50); + this.uploadInputFolderLabel.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); this.uploadInputFolderLabel.Name = "uploadInputFolderLabel"; - this.uploadInputFolderLabel.Size = new System.Drawing.Size(90, 20); + this.uploadInputFolderLabel.Size = new System.Drawing.Size(108, 25); this.uploadInputFolderLabel.TabIndex = 0; - this.uploadInputFolderLabel.Text = Resources.Input_folder; + this.uploadInputFolderLabel.Text = "Input folder"; // // uploadInputFolder // this.uploadInputFolder.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::RecurringIntegrationsScheduler.Properties.Settings.Default, "UploadInputFolder", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.uploadInputFolder.Location = new System.Drawing.Point(118, 39); - this.uploadInputFolder.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.uploadInputFolder.Location = new System.Drawing.Point(144, 47); + this.uploadInputFolder.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.uploadInputFolder.Name = "uploadInputFolder"; - this.uploadInputFolder.Size = new System.Drawing.Size(127, 26); + this.uploadInputFolder.Size = new System.Drawing.Size(154, 29); this.uploadInputFolder.TabIndex = 4; this.uploadInputFolder.Text = global::RecurringIntegrationsScheduler.Properties.Settings.Default.UploadInputFolder; // // uploadSuccessFolderLabel // this.uploadSuccessFolderLabel.AutoSize = true; - this.uploadSuccessFolderLabel.Location = new System.Drawing.Point(30, 80); - this.uploadSuccessFolderLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.uploadSuccessFolderLabel.Location = new System.Drawing.Point(37, 96); + this.uploadSuccessFolderLabel.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); this.uploadSuccessFolderLabel.Name = "uploadSuccessFolderLabel"; - this.uploadSuccessFolderLabel.Size = new System.Drawing.Size(70, 20); + this.uploadSuccessFolderLabel.Size = new System.Drawing.Size(88, 25); this.uploadSuccessFolderLabel.TabIndex = 1; - this.uploadSuccessFolderLabel.Text = Resources.Success; + this.uploadSuccessFolderLabel.Text = "Success"; // // uploadSuccessFolder // this.uploadSuccessFolder.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::RecurringIntegrationsScheduler.Properties.Settings.Default, "UploadSuccessFolder", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.uploadSuccessFolder.Location = new System.Drawing.Point(118, 76); - this.uploadSuccessFolder.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.uploadSuccessFolder.Location = new System.Drawing.Point(144, 91); + this.uploadSuccessFolder.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.uploadSuccessFolder.Name = "uploadSuccessFolder"; - this.uploadSuccessFolder.Size = new System.Drawing.Size(127, 26); + this.uploadSuccessFolder.Size = new System.Drawing.Size(154, 29); this.uploadSuccessFolder.TabIndex = 5; this.uploadSuccessFolder.Text = global::RecurringIntegrationsScheduler.Properties.Settings.Default.UploadSuccessFolder; // // uploadErrorsFolderLabel // this.uploadErrorsFolderLabel.AutoSize = true; - this.uploadErrorsFolderLabel.Location = new System.Drawing.Point(55, 118); - this.uploadErrorsFolderLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.uploadErrorsFolderLabel.Location = new System.Drawing.Point(67, 142); + this.uploadErrorsFolderLabel.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); this.uploadErrorsFolderLabel.Name = "uploadErrorsFolderLabel"; - this.uploadErrorsFolderLabel.Size = new System.Drawing.Size(52, 20); + this.uploadErrorsFolderLabel.Size = new System.Drawing.Size(64, 25); this.uploadErrorsFolderLabel.TabIndex = 3; - this.uploadErrorsFolderLabel.Text = Resources.Errors; + this.uploadErrorsFolderLabel.Text = "Errors"; // // uploadErrorsFolder // this.uploadErrorsFolder.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::RecurringIntegrationsScheduler.Properties.Settings.Default, "UploadErrorsFolder", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.uploadErrorsFolder.Location = new System.Drawing.Point(118, 114); - this.uploadErrorsFolder.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.uploadErrorsFolder.Location = new System.Drawing.Point(144, 137); + this.uploadErrorsFolder.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.uploadErrorsFolder.Name = "uploadErrorsFolder"; - this.uploadErrorsFolder.Size = new System.Drawing.Size(127, 26); + this.uploadErrorsFolder.Size = new System.Drawing.Size(154, 29); this.uploadErrorsFolder.TabIndex = 7; this.uploadErrorsFolder.Text = global::RecurringIntegrationsScheduler.Properties.Settings.Default.UploadErrorsFolder; // @@ -690,14 +698,14 @@ namespace RecurringIntegrationsScheduler.Forms this.jobGroupsGroupBox.Controls.Add(this.jobGroupsGrid); this.jobGroupsGroupBox.Controls.Add(this.jobGroupsToolStrip); this.jobGroupsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; - this.jobGroupsGroupBox.Location = new System.Drawing.Point(662, 418); - this.jobGroupsGroupBox.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.jobGroupsGroupBox.Location = new System.Drawing.Point(809, 501); + this.jobGroupsGroupBox.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.jobGroupsGroupBox.Name = "jobGroupsGroupBox"; - this.jobGroupsGroupBox.Padding = new System.Windows.Forms.Padding(6, 12, 6, 6); - this.jobGroupsGroupBox.Size = new System.Drawing.Size(319, 403); + this.jobGroupsGroupBox.Padding = new System.Windows.Forms.Padding(7, 14, 7, 7); + this.jobGroupsGroupBox.Size = new System.Drawing.Size(390, 484); this.jobGroupsGroupBox.TabIndex = 1; this.jobGroupsGroupBox.TabStop = false; - this.jobGroupsGroupBox.Text = Resources.Job_groups; + this.jobGroupsGroupBox.Text = "Job groups"; // // jobGroupsGrid // @@ -712,15 +720,15 @@ namespace RecurringIntegrationsScheduler.Forms this.jobGroupsGrid.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.jobGroupName}); this.jobGroupsGrid.Dock = System.Windows.Forms.DockStyle.Fill; - this.jobGroupsGrid.Location = new System.Drawing.Point(6, 31); - this.jobGroupsGrid.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.jobGroupsGrid.Location = new System.Drawing.Point(7, 36); + this.jobGroupsGrid.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.jobGroupsGrid.MultiSelect = false; this.jobGroupsGrid.Name = "jobGroupsGrid"; this.jobGroupsGrid.ReadOnly = true; this.jobGroupsGrid.RowHeadersVisible = false; this.jobGroupsGrid.RowHeadersWidth = 4; this.jobGroupsGrid.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.jobGroupsGrid.Size = new System.Drawing.Size(307, 334); + this.jobGroupsGrid.Size = new System.Drawing.Size(376, 401); this.jobGroupsGrid.TabIndex = 1; this.jobGroupsGrid.CellContentDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.JobGroupsGrid_CellContentDoubleClick); this.jobGroupsGrid.RowsRemoved += new System.Windows.Forms.DataGridViewRowsRemovedEventHandler(this.JobGroupsDataGridView_RowsRemoved); @@ -730,6 +738,7 @@ namespace RecurringIntegrationsScheduler.Forms // this.jobGroupName.DataPropertyName = "Name"; this.jobGroupName.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.Group_name; + this.jobGroupName.MinimumWidth = 9; this.jobGroupName.Name = "jobGroupName"; this.jobGroupName.ReadOnly = true; // @@ -738,29 +747,29 @@ namespace RecurringIntegrationsScheduler.Forms this.foldersGroupBox.Controls.Add(this.uploadJobsFoldersGroupBox); this.foldersGroupBox.Controls.Add(this.processingJobsFoldersGroupBox); this.foldersGroupBox.Controls.Add(this.downloadJobsFolderGroupBox); - this.foldersGroupBox.Location = new System.Drawing.Point(988, 4); - this.foldersGroupBox.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.foldersGroupBox.Location = new System.Drawing.Point(1208, 5); + this.foldersGroupBox.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.foldersGroupBox.Name = "foldersGroupBox"; - this.foldersGroupBox.Padding = new System.Windows.Forms.Padding(6, 12, 6, 6); + this.foldersGroupBox.Padding = new System.Windows.Forms.Padding(7, 14, 7, 7); this.tableLayoutPanel1.SetRowSpan(this.foldersGroupBox, 2); - this.foldersGroupBox.Size = new System.Drawing.Size(282, 410); + this.foldersGroupBox.Size = new System.Drawing.Size(345, 492); this.foldersGroupBox.TabIndex = 2; this.foldersGroupBox.TabStop = false; - this.foldersGroupBox.Text = Resources.Default_folder_names; + this.foldersGroupBox.Text = "Default folder names"; // // applicationsGroupBox // this.applicationsGroupBox.Controls.Add(this.applicationsGrid); this.applicationsGroupBox.Controls.Add(this.applicationsToolStrip); this.applicationsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; - this.applicationsGroupBox.Location = new System.Drawing.Point(4, 418); - this.applicationsGroupBox.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.applicationsGroupBox.Location = new System.Drawing.Point(5, 501); + this.applicationsGroupBox.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.applicationsGroupBox.Name = "applicationsGroupBox"; - this.applicationsGroupBox.Padding = new System.Windows.Forms.Padding(6, 12, 6, 6); - this.applicationsGroupBox.Size = new System.Drawing.Size(320, 403); + this.applicationsGroupBox.Padding = new System.Windows.Forms.Padding(7, 14, 7, 7); + this.applicationsGroupBox.Size = new System.Drawing.Size(391, 484); this.applicationsGroupBox.TabIndex = 8; this.applicationsGroupBox.TabStop = false; - this.applicationsGroupBox.Text = Resources.Azure_AD_applications; + this.applicationsGroupBox.Text = "Azure AD applications"; // // applicationsGrid // @@ -778,20 +787,56 @@ namespace RecurringIntegrationsScheduler.Forms this.applicationClientId, this.applicationSecret}); this.applicationsGrid.Dock = System.Windows.Forms.DockStyle.Fill; - this.applicationsGrid.Location = new System.Drawing.Point(6, 31); - this.applicationsGrid.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.applicationsGrid.Location = new System.Drawing.Point(7, 36); + this.applicationsGrid.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.applicationsGrid.MultiSelect = false; this.applicationsGrid.Name = "applicationsGrid"; this.applicationsGrid.ReadOnly = true; this.applicationsGrid.RowHeadersVisible = false; this.applicationsGrid.RowHeadersWidth = 4; this.applicationsGrid.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.applicationsGrid.Size = new System.Drawing.Size(308, 334); + this.applicationsGrid.Size = new System.Drawing.Size(377, 401); this.applicationsGrid.TabIndex = 1; this.applicationsGrid.CellContentDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.ApplicationsGrid_CellContentDoubleClick); this.applicationsGrid.RowsRemoved += new System.Windows.Forms.DataGridViewRowsRemovedEventHandler(this.ApplicationsGrid_RowsRemoved); this.applicationsGrid.RowStateChanged += new System.Windows.Forms.DataGridViewRowStateChangedEventHandler(this.ApplicationsGrid_RowStateChanged); // + // applicationName + // + this.applicationName.DataPropertyName = "Name"; + this.applicationName.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.NameLabel; + this.applicationName.MinimumWidth = 9; + this.applicationName.Name = "applicationName"; + this.applicationName.ReadOnly = true; + // + // applicationType + // + this.applicationType.DataPropertyName = "AuthenticationType"; + this.applicationType.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.Auth_type; + this.applicationType.MinimumWidth = 9; + this.applicationType.Name = "applicationType"; + this.applicationType.ReadOnly = true; + // + // applicationClientId + // + this.applicationClientId.DataPropertyName = "ClientId"; + this.applicationClientId.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.Client_Id; + this.applicationClientId.MinimumWidth = 9; + this.applicationClientId.Name = "applicationClientId"; + this.applicationClientId.ReadOnly = true; + this.applicationClientId.ToolTipText = global::RecurringIntegrationsScheduler.Properties.Resources.Application_client_Id_GUID; + this.applicationClientId.Visible = false; + // + // applicationSecret + // + this.applicationSecret.DataPropertyName = "Secret"; + this.applicationSecret.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.Secret; + this.applicationSecret.MinimumWidth = 9; + this.applicationSecret.Name = "applicationSecret"; + this.applicationSecret.ReadOnly = true; + this.applicationSecret.ToolTipText = global::RecurringIntegrationsScheduler.Properties.Resources.Web_application_client_secret; + this.applicationSecret.Visible = false; + // // applicationsToolStrip // this.applicationsToolStrip.Dock = System.Windows.Forms.DockStyle.Bottom; @@ -801,10 +846,10 @@ namespace RecurringIntegrationsScheduler.Forms this.applicationsAddButton, this.applicationsDeleteButton, this.applicationsEditButton}); - this.applicationsToolStrip.Location = new System.Drawing.Point(6, 365); + this.applicationsToolStrip.Location = new System.Drawing.Point(7, 437); this.applicationsToolStrip.Name = "applicationsToolStrip"; this.applicationsToolStrip.Padding = new System.Windows.Forms.Padding(0); - this.applicationsToolStrip.Size = new System.Drawing.Size(308, 32); + this.applicationsToolStrip.Size = new System.Drawing.Size(377, 40); this.applicationsToolStrip.TabIndex = 4; // // applicationsAddButton @@ -812,7 +857,7 @@ namespace RecurringIntegrationsScheduler.Forms this.applicationsAddButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Add_16xMD; this.applicationsAddButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.applicationsAddButton.Name = "applicationsAddButton"; - this.applicationsAddButton.Size = new System.Drawing.Size(70, 29); + this.applicationsAddButton.Size = new System.Drawing.Size(75, 34); this.applicationsAddButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Add; this.applicationsAddButton.ToolTipText = global::RecurringIntegrationsScheduler.Properties.Resources.Add_Azure_application; this.applicationsAddButton.Click += new System.EventHandler(this.ApplicationsAddButton_Click); @@ -823,7 +868,7 @@ namespace RecurringIntegrationsScheduler.Forms this.applicationsDeleteButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Remove_16xMD; this.applicationsDeleteButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.applicationsDeleteButton.Name = "applicationsDeleteButton"; - this.applicationsDeleteButton.Size = new System.Drawing.Size(86, 29); + this.applicationsDeleteButton.Size = new System.Drawing.Size(97, 34); this.applicationsDeleteButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Delete; this.applicationsDeleteButton.ToolTipText = global::RecurringIntegrationsScheduler.Properties.Resources.Delete_Azure_application; this.applicationsDeleteButton.Click += new System.EventHandler(this.ApplicationsDeleteButton_Click); @@ -834,7 +879,7 @@ namespace RecurringIntegrationsScheduler.Forms this.applicationsEditButton.Image = global::RecurringIntegrationsScheduler.Properties.Resources.Edit_16xMD; this.applicationsEditButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.applicationsEditButton.Name = "applicationsEditButton"; - this.applicationsEditButton.Size = new System.Drawing.Size(66, 29); + this.applicationsEditButton.Size = new System.Drawing.Size(72, 34); this.applicationsEditButton.Text = global::RecurringIntegrationsScheduler.Properties.Resources.Edit; this.applicationsEditButton.ToolTipText = global::RecurringIntegrationsScheduler.Properties.Resources.Edit_Azure_application; this.applicationsEditButton.Click += new System.EventHandler(this.ApplicationsEditButton_Click); @@ -854,61 +899,29 @@ namespace RecurringIntegrationsScheduler.Forms this.tableLayoutPanel1.Controls.Add(this.applicationsGroupBox, 0, 1); this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; this.tableLayoutPanel1.RowCount = 2; this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(1275, 826); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1558, 991); this.tableLayoutPanel1.TabIndex = 9; // - // applicationName - // - this.applicationName.DataPropertyName = "Name"; - this.applicationName.HeaderText = Resources.NameLabel; - this.applicationName.Name = "applicationName"; - this.applicationName.ReadOnly = true; - // - // applicationType - // - this.applicationType.DataPropertyName = "AuthenticationType"; - this.applicationType.HeaderText = Resources.Auth_type; - this.applicationType.Name = "applicationType"; - this.applicationType.ReadOnly = true; - // - // applicationClientId - // - this.applicationClientId.DataPropertyName = "ClientId"; - this.applicationClientId.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.Client_Id; - this.applicationClientId.Name = "applicationClientId"; - this.applicationClientId.ReadOnly = true; - this.applicationClientId.ToolTipText = global::RecurringIntegrationsScheduler.Properties.Resources.Application_client_Id_GUID; - this.applicationClientId.Visible = false; - // - // applicationSecret - // - this.applicationSecret.DataPropertyName = "Secret"; - this.applicationSecret.HeaderText = global::RecurringIntegrationsScheduler.Properties.Resources.Secret; - this.applicationSecret.Name = "applicationSecret"; - this.applicationSecret.ReadOnly = true; - this.applicationSecret.ToolTipText = global::RecurringIntegrationsScheduler.Properties.Resources.Web_application_client_secret; - this.applicationSecret.Visible = false; - // // Parameters // - this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1275, 826); + this.ClientSize = new System.Drawing.Size(1558, 991); this.Controls.Add(this.tableLayoutPanel1); - this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.MinimizeBox = false; - this.MinimumSize = new System.Drawing.Size(1190, 736); + this.MinimumSize = new System.Drawing.Size(1449, 870); this.Name = "Parameters"; this.ShowIcon = false; this.ShowInTaskbar = false; this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = Resources.Parameters; + this.Text = "Parameters"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Settings_FormClosing); this.Load += new System.EventHandler(this.Settings_Load); this.instancesToolStrip.ResumeLayout(false); diff --git a/Scheduler/Forms/Parameters.resx b/Scheduler/Forms/Parameters.resx index 1af7de1..bcd310d 100644 --- a/Scheduler/Forms/Parameters.resx +++ b/Scheduler/Forms/Parameters.resx @@ -117,4 +117,19 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + + + 257, 17 + + + 459, 17 + + + 696, 17 + + + 949, 17 + \ No newline at end of file diff --git a/Scheduler/Forms/UploadJob.Designer.cs b/Scheduler/Forms/UploadJob.Designer.cs index 935f8c9..9316674 100644 --- a/Scheduler/Forms/UploadJob.Designer.cs +++ b/Scheduler/Forms/UploadJob.Designer.cs @@ -32,6 +32,8 @@ namespace RecurringIntegrationsScheduler.Forms { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UploadJob)); this.jobDetailsGroupBox = new System.Windows.Forms.GroupBox(); + this.numericUpDownIntervalUploads = new System.Windows.Forms.NumericUpDown(); + this.labelInterval = new System.Windows.Forms.Label(); this.processingErrorsFolderBrowserButton = new System.Windows.Forms.Button(); this.processingErrorsFolderTextBox = new System.Windows.Forms.TextBox(); this.processingErrorsFolderLabel = new System.Windows.Forms.Label(); @@ -129,9 +131,10 @@ namespace RecurringIntegrationsScheduler.Forms this.groupBoxButtons = new System.Windows.Forms.GroupBox(); this.addJobButton = new System.Windows.Forms.Button(); this.cancelButton = new System.Windows.Forms.Button(); - this.numericUpDownInterval = new System.Windows.Forms.NumericUpDown(); - this.labelInterval = new System.Windows.Forms.Label(); + this.numericUpDownStatusCheckInterval = new System.Windows.Forms.NumericUpDown(); + this.label3 = new System.Windows.Forms.Label(); this.jobDetailsGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownIntervalUploads)).BeginInit(); this.axDetailsGroupBox.SuspendLayout(); this.authMethodPanel.SuspendLayout(); this.recurrenceGroupBox.SuspendLayout(); @@ -145,12 +148,12 @@ namespace RecurringIntegrationsScheduler.Forms ((System.ComponentModel.ISupportInitialize)(this.retriesCountUpDown)).BeginInit(); this.groupBoxExceptions.SuspendLayout(); this.groupBoxButtons.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownInterval)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownStatusCheckInterval)).BeginInit(); this.SuspendLayout(); // // jobDetailsGroupBox // - this.jobDetailsGroupBox.Controls.Add(this.numericUpDownInterval); + this.jobDetailsGroupBox.Controls.Add(this.numericUpDownIntervalUploads); this.jobDetailsGroupBox.Controls.Add(this.labelInterval); this.jobDetailsGroupBox.Controls.Add(this.processingErrorsFolderBrowserButton); this.jobDetailsGroupBox.Controls.Add(this.processingErrorsFolderTextBox); @@ -191,6 +194,29 @@ namespace RecurringIntegrationsScheduler.Forms this.jobDetailsGroupBox.TabStop = false; this.jobDetailsGroupBox.Text = "Job details"; // + // numericUpDownIntervalUploads + // + this.numericUpDownIntervalUploads.Location = new System.Drawing.Point(290, 884); + this.numericUpDownIntervalUploads.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.numericUpDownIntervalUploads.Maximum = new decimal(new int[] { + 3600, + 0, + 0, + 0}); + this.numericUpDownIntervalUploads.Name = "numericUpDownIntervalUploads"; + this.numericUpDownIntervalUploads.Size = new System.Drawing.Size(121, 29); + this.numericUpDownIntervalUploads.TabIndex = 30; + // + // labelInterval + // + this.labelInterval.AutoSize = true; + this.labelInterval.Location = new System.Drawing.Point(13, 888); + this.labelInterval.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.labelInterval.Name = "labelInterval"; + this.labelInterval.Size = new System.Drawing.Size(270, 25); + this.labelInterval.TabIndex = 29; + this.labelInterval.Text = "Delay between uploads (sec.)"; + // // processingErrorsFolderBrowserButton // this.processingErrorsFolderBrowserButton.Enabled = false; @@ -679,7 +705,7 @@ namespace RecurringIntegrationsScheduler.Forms // this.pauseIndefinitelyCheckBox.AutoSize = true; this.pauseIndefinitelyCheckBox.Location = new System.Drawing.Point(17, 31); - this.pauseIndefinitelyCheckBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.pauseIndefinitelyCheckBox.Margin = new System.Windows.Forms.Padding(4); this.pauseIndefinitelyCheckBox.Name = "pauseIndefinitelyCheckBox"; this.pauseIndefinitelyCheckBox.Size = new System.Drawing.Size(221, 29); this.pauseIndefinitelyCheckBox.TabIndex = 0; @@ -915,6 +941,8 @@ namespace RecurringIntegrationsScheduler.Forms // // processingJobGroupBox // + this.processingJobGroupBox.Controls.Add(this.numericUpDownStatusCheckInterval); + this.processingJobGroupBox.Controls.Add(this.label3); this.processingJobGroupBox.Controls.Add(this.procJobTriggerTypePanel); this.processingJobGroupBox.Controls.Add(this.procJobCronExpressionLabel); this.processingJobGroupBox.Controls.Add(this.procJobCronExpressionTextBox); @@ -929,7 +957,7 @@ namespace RecurringIntegrationsScheduler.Forms this.processingJobGroupBox.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.processingJobGroupBox.Name = "processingJobGroupBox"; this.processingJobGroupBox.Padding = new System.Windows.Forms.Padding(5, 6, 5, 6); - this.processingJobGroupBox.Size = new System.Drawing.Size(422, 233); + this.processingJobGroupBox.Size = new System.Drawing.Size(422, 288); this.processingJobGroupBox.TabIndex = 4; this.processingJobGroupBox.TabStop = false; this.processingJobGroupBox.Text = "Processing monitor job"; @@ -1079,9 +1107,9 @@ namespace RecurringIntegrationsScheduler.Forms this.fileSelectionGroupBox.Controls.Add(this.orderByLabel); this.fileSelectionGroupBox.Controls.Add(this.searchPatternLabel); this.fileSelectionGroupBox.Location = new System.Drawing.Point(458, 24); - this.fileSelectionGroupBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.fileSelectionGroupBox.Margin = new System.Windows.Forms.Padding(4); this.fileSelectionGroupBox.Name = "fileSelectionGroupBox"; - this.fileSelectionGroupBox.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.fileSelectionGroupBox.Padding = new System.Windows.Forms.Padding(4); this.fileSelectionGroupBox.Size = new System.Drawing.Size(422, 179); this.fileSelectionGroupBox.TabIndex = 5; this.fileSelectionGroupBox.TabStop = false; @@ -1092,7 +1120,7 @@ namespace RecurringIntegrationsScheduler.Forms this.orderByComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.orderByComboBox.FormattingEnabled = true; this.orderByComboBox.Location = new System.Drawing.Point(106, 76); - this.orderByComboBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.orderByComboBox.Margin = new System.Windows.Forms.Padding(4); this.orderByComboBox.Name = "orderByComboBox"; this.orderByComboBox.Size = new System.Drawing.Size(305, 32); this.orderByComboBox.TabIndex = 5; @@ -1134,7 +1162,7 @@ namespace RecurringIntegrationsScheduler.Forms // searchPatternTextBox // this.searchPatternTextBox.Location = new System.Drawing.Point(158, 34); - this.searchPatternTextBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.searchPatternTextBox.Margin = new System.Windows.Forms.Padding(4); this.searchPatternTextBox.Name = "searchPatternTextBox"; this.searchPatternTextBox.Size = new System.Drawing.Size(253, 29); this.searchPatternTextBox.TabIndex = 3; @@ -1176,7 +1204,7 @@ namespace RecurringIntegrationsScheduler.Forms this.retryPolicyGroupBox.Controls.Add(this.retriesCountUpDown); this.retryPolicyGroupBox.Controls.Add(this.label2); this.retryPolicyGroupBox.Controls.Add(this.label1); - this.retryPolicyGroupBox.Location = new System.Drawing.Point(457, 805); + this.retryPolicyGroupBox.Location = new System.Drawing.Point(457, 868); this.retryPolicyGroupBox.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.retryPolicyGroupBox.Name = "retryPolicyGroupBox"; this.retryPolicyGroupBox.Padding = new System.Windows.Forms.Padding(5, 6, 5, 6); @@ -1245,9 +1273,9 @@ namespace RecurringIntegrationsScheduler.Forms // this.groupBoxExceptions.Controls.Add(this.pauseOnExceptionsCheckBox); this.groupBoxExceptions.Location = new System.Drawing.Point(891, 877); - this.groupBoxExceptions.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxExceptions.Margin = new System.Windows.Forms.Padding(4); this.groupBoxExceptions.Name = "groupBoxExceptions"; - this.groupBoxExceptions.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxExceptions.Padding = new System.Windows.Forms.Padding(4); this.groupBoxExceptions.Size = new System.Drawing.Size(422, 78); this.groupBoxExceptions.TabIndex = 10; this.groupBoxExceptions.TabStop = false; @@ -1259,7 +1287,7 @@ namespace RecurringIntegrationsScheduler.Forms this.pauseOnExceptionsCheckBox.Checked = true; this.pauseOnExceptionsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; this.pauseOnExceptionsCheckBox.Location = new System.Drawing.Point(17, 31); - this.pauseOnExceptionsCheckBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.pauseOnExceptionsCheckBox.Margin = new System.Windows.Forms.Padding(4); this.pauseOnExceptionsCheckBox.Name = "pauseOnExceptionsCheckBox"; this.pauseOnExceptionsCheckBox.Size = new System.Drawing.Size(329, 29); this.pauseOnExceptionsCheckBox.TabIndex = 0; @@ -1270,10 +1298,10 @@ namespace RecurringIntegrationsScheduler.Forms // this.groupBoxButtons.Controls.Add(this.addJobButton); this.groupBoxButtons.Controls.Add(this.cancelButton); - this.groupBoxButtons.Location = new System.Drawing.Point(24, 956); - this.groupBoxButtons.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxButtons.Location = new System.Drawing.Point(24, 1020); + this.groupBoxButtons.Margin = new System.Windows.Forms.Padding(4); this.groupBoxButtons.Name = "groupBoxButtons"; - this.groupBoxButtons.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxButtons.Padding = new System.Windows.Forms.Padding(4); this.groupBoxButtons.Size = new System.Drawing.Size(1288, 88); this.groupBoxButtons.TabIndex = 12; this.groupBoxButtons.TabStop = false; @@ -1281,7 +1309,7 @@ namespace RecurringIntegrationsScheduler.Forms // addJobButton // this.addJobButton.Location = new System.Drawing.Point(867, 30); - this.addJobButton.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.addJobButton.Margin = new System.Windows.Forms.Padding(4); this.addJobButton.Name = "addJobButton"; this.addJobButton.Size = new System.Drawing.Size(198, 41); this.addJobButton.TabIndex = 2; @@ -1292,7 +1320,7 @@ namespace RecurringIntegrationsScheduler.Forms // cancelButton // this.cancelButton.Location = new System.Drawing.Point(1083, 30); - this.cancelButton.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.cancelButton.Margin = new System.Windows.Forms.Padding(4); this.cancelButton.Name = "cancelButton"; this.cancelButton.Size = new System.Drawing.Size(198, 41); this.cancelButton.TabIndex = 1; @@ -1300,38 +1328,28 @@ namespace RecurringIntegrationsScheduler.Forms this.cancelButton.UseVisualStyleBackColor = true; this.cancelButton.Click += new System.EventHandler(this.CancelButton_Click); // - // numericUpDownInterval + // numericUpDownStatusCheckInterval // - this.numericUpDownInterval.Location = new System.Drawing.Point(290, 884); - this.numericUpDownInterval.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); - this.numericUpDownInterval.Maximum = new decimal(new int[] { + this.numericUpDownStatusCheckInterval.Location = new System.Drawing.Point(289, 228); + this.numericUpDownStatusCheckInterval.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.numericUpDownStatusCheckInterval.Maximum = new decimal(new int[] { 3600, 0, 0, 0}); - this.numericUpDownInterval.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.numericUpDownInterval.Name = "numericUpDownInterval"; - this.numericUpDownInterval.Size = new System.Drawing.Size(121, 29); - this.numericUpDownInterval.TabIndex = 30; - this.numericUpDownInterval.Value = new decimal(new int[] { - 1, - 0, - 0, - 0}); + this.numericUpDownStatusCheckInterval.Name = "numericUpDownStatusCheckInterval"; + this.numericUpDownStatusCheckInterval.Size = new System.Drawing.Size(121, 29); + this.numericUpDownStatusCheckInterval.TabIndex = 40; // - // labelInterval + // label3 // - this.labelInterval.AutoSize = true; - this.labelInterval.Location = new System.Drawing.Point(13, 888); - this.labelInterval.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.labelInterval.Name = "labelInterval"; - this.labelInterval.Size = new System.Drawing.Size(273, 25); - this.labelInterval.TabIndex = 29; - this.labelInterval.Text = "Delay between files (seconds)"; + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(12, 232); + this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(247, 25); + this.label3.TabIndex = 39; + this.label3.Text = "Status check interval (sec.)"; // // UploadJob // @@ -1339,7 +1357,7 @@ namespace RecurringIntegrationsScheduler.Forms this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoSize = true; this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.ClientSize = new System.Drawing.Size(1315, 1055); + this.ClientSize = new System.Drawing.Size(1315, 1121); this.Controls.Add(this.groupBoxButtons); this.Controls.Add(this.groupBoxExceptions); this.Controls.Add(this.retryPolicyGroupBox); @@ -1362,6 +1380,7 @@ namespace RecurringIntegrationsScheduler.Forms this.Load += new System.EventHandler(this.UploadJobForm_Load); this.jobDetailsGroupBox.ResumeLayout(false); this.jobDetailsGroupBox.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownIntervalUploads)).EndInit(); this.axDetailsGroupBox.ResumeLayout(false); this.axDetailsGroupBox.PerformLayout(); this.authMethodPanel.ResumeLayout(false); @@ -1385,7 +1404,7 @@ namespace RecurringIntegrationsScheduler.Forms this.groupBoxExceptions.ResumeLayout(false); this.groupBoxExceptions.PerformLayout(); this.groupBoxButtons.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownInterval)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownStatusCheckInterval)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -1491,7 +1510,9 @@ namespace RecurringIntegrationsScheduler.Forms private System.Windows.Forms.GroupBox groupBoxButtons; private System.Windows.Forms.Button addJobButton; private System.Windows.Forms.Button cancelButton; - private System.Windows.Forms.NumericUpDown numericUpDownInterval; + private System.Windows.Forms.NumericUpDown numericUpDownIntervalUploads; private System.Windows.Forms.Label labelInterval; + private System.Windows.Forms.NumericUpDown numericUpDownStatusCheckInterval; + private System.Windows.Forms.Label label3; } } \ No newline at end of file diff --git a/Scheduler/Forms/UploadJob.cs b/Scheduler/Forms/UploadJob.cs index d1d0d5e..cc4b1f1 100644 --- a/Scheduler/Forms/UploadJob.cs +++ b/Scheduler/Forms/UploadJob.cs @@ -117,7 +117,7 @@ namespace RecurringIntegrationsScheduler.Forms statusFileExtensionTextBox.Text = UploadJobDetail.JobDataMap[SettingsConstants.StatusFileExtension]?.ToString() ?? ".Status"; - numericUpDownInterval.Value = Math.Round(Convert.ToDecimal(UploadJobDetail.JobDataMap[SettingsConstants.Interval])); + numericUpDownIntervalUploads.Value = Math.Round(Convert.ToDecimal(UploadJobDetail.JobDataMap[SettingsConstants.Interval])); serviceAuthRadioButton.Checked = (UploadJobDetail.JobDataMap[SettingsConstants.UseServiceAuthentication] != null) && @@ -272,6 +272,7 @@ namespace RecurringIntegrationsScheduler.Forms ProcessingJobDetail.JobDataMap[SettingsConstants.ProcessingSuccessDir]?.ToString() ?? string.Empty; processingErrorsFolderTextBox.Text = ProcessingJobDetail.JobDataMap[SettingsConstants.ProcessingErrorsDir]?.ToString() ?? string.Empty; + numericUpDownStatusCheckInterval.Value = Math.Round(Convert.ToDecimal(ProcessingJobDetail.JobDataMap[SettingsConstants.StatusCheckInterval])); if (ProcessingTrigger.GetType() == typeof(SimpleTriggerImpl)) { @@ -587,7 +588,7 @@ namespace RecurringIntegrationsScheduler.Forms {SettingsConstants.RetryDelay, retriesDelayUpDown.Value.ToString(CultureInfo.InvariantCulture)}, {SettingsConstants.PauseJobOnException, pauseOnExceptionsCheckBox.Checked.ToString()}, {SettingsConstants.IndefinitePause, pauseIndefinitelyCheckBox.Checked.ToString()}, - {SettingsConstants.Interval, numericUpDownInterval.Value.ToString(CultureInfo.InvariantCulture)} + {SettingsConstants.Interval, numericUpDownIntervalUploads.Value.ToString(CultureInfo.InvariantCulture)} }; if (serviceAuthRadioButton.Checked) { @@ -623,7 +624,8 @@ namespace RecurringIntegrationsScheduler.Forms {SettingsConstants.RetryCount, retriesCountUpDown.Value.ToString(CultureInfo.InvariantCulture)}, {SettingsConstants.RetryDelay, retriesDelayUpDown.Value.ToString(CultureInfo.InvariantCulture)}, {SettingsConstants.PauseJobOnException, pauseOnExceptionsCheckBox.Checked.ToString()}, - {SettingsConstants.IndefinitePause, pauseIndefinitelyCheckBox.Checked.ToString()} + {SettingsConstants.IndefinitePause, pauseIndefinitelyCheckBox.Checked.ToString()}, + {SettingsConstants.StatusCheckInterval, numericUpDownStatusCheckInterval.Value.ToString(CultureInfo.InvariantCulture)} }; if (serviceAuthRadioButton.Checked) { diff --git a/Scheduler/Scheduler.cs b/Scheduler/Scheduler.cs index 20c6021..b4c534a 100644 --- a/Scheduler/Scheduler.cs +++ b/Scheduler/Scheduler.cs @@ -250,44 +250,42 @@ namespace RecurringIntegrationsScheduler /// The trigger details. private static void WriteToFile(FileInfo file, List jobDetails, List triggerDetails) { - using (var writer = file.CreateText()) - { - XNamespace ns = "http://quartznet.sourceforge.net/JobSchedulingData"; - var doc = new XDocument(new XDeclaration("1.0", "UTF-8", "yes") - , new XElement(ns + "job-scheduling-data" - , new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance") - , new XAttribute("version", "2.0") - )); - doc.Root?.Add(new XElement(ns + "processing-directives" - , new XElement(ns + "overwrite-existing-data", true)) + using var writer = file.CreateText(); + XNamespace ns = "http://quartznet.sourceforge.net/JobSchedulingData"; + var doc = new XDocument(new XDeclaration("1.0", "UTF-8", "yes") + , new XElement(ns + "job-scheduling-data" + , new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance") + , new XAttribute("version", "2.0") + )); + doc.Root?.Add(new XElement(ns + "processing-directives" + , new XElement(ns + "overwrite-existing-data", true)) + ); + var schedule = new XElement(ns + "schedule"); + foreach (var detail in jobDetails) + schedule.Add( + new XElement(ns + "job" + , new XElement(ns + "name", detail.Key.Name) + , new XElement(ns + "group", detail.Key.Group) + , new XElement(ns + "description", detail.Description) + , + new XElement(ns + "job-type", + detail.JobType.FullName + "," + detail.JobType.Assembly.FullName) + , new XElement(ns + "durable", detail.Durable) + , new XElement(ns + "recover", detail.RequestsRecovery) + , GetJobDataMap(ns, detail.JobDataMap) + ) ); - var schedule = new XElement(ns + "schedule"); - foreach (var detail in jobDetails) - schedule.Add( - new XElement(ns + "job" - , new XElement(ns + "name", detail.Key.Name) - , new XElement(ns + "group", detail.Key.Group) - , new XElement(ns + "description", detail.Description) - , - new XElement(ns + "job-type", - detail.JobType.FullName + "," + detail.JobType.Assembly.FullName) - , new XElement(ns + "durable", detail.Durable) - , new XElement(ns + "recover", detail.RequestsRecovery) - , GetJobDataMap(ns, detail.JobDataMap) - ) - ); - foreach (var trigger in triggerDetails) - { - if (trigger is SimpleTriggerImpl simple) - schedule.Add(GetSimpleTrigger(ns, simple)); - if (trigger is CronTriggerImpl cron) - schedule.Add(GetCronTrigger(ns, cron)); - if (trigger is CalendarIntervalTriggerImpl calendar) - schedule.Add(GetCalendarIntervalTrigger(ns, calendar)); - } - doc.Root?.Add(schedule); - doc.Save(writer); + foreach (var trigger in triggerDetails) + { + if (trigger is SimpleTriggerImpl simple) + schedule.Add(GetSimpleTrigger(ns, simple)); + if (trigger is CronTriggerImpl cron) + schedule.Add(GetCronTrigger(ns, cron)); + if (trigger is CalendarIntervalTriggerImpl calendar) + schedule.Add(GetCalendarIntervalTrigger(ns, calendar)); } + doc.Root?.Add(schedule); + doc.Save(writer); } /// @@ -385,24 +383,16 @@ namespace RecurringIntegrationsScheduler /// private static string GetSimpleTriggerMisfireInstructionText(int misfireInstruction) { - switch (misfireInstruction) + return misfireInstruction switch { - case 0: - return "SmartPolicy"; - case 1: - return "FireNow"; - case 2: - return "RescheduleNowWithExistingRepeatCount"; - case 3: - return "RescheduleNowWithRemainingRepeatCount"; - case 4: - return "RescheduleNextWithRemainingCount"; - case 5: - return "RescheduleNextWithExistingCount"; - default: - throw new ArgumentOutOfRangeException( - $"{misfireInstruction} is not a supported misfire instruction for SimpleTrigger See Quartz.MisfireInstruction for more details."); - } + 0 => "SmartPolicy", + 1 => "FireNow", + 2 => "RescheduleNowWithExistingRepeatCount", + 3 => "RescheduleNowWithRemainingRepeatCount", + 4 => "RescheduleNextWithRemainingCount", + 5 => "RescheduleNextWithExistingCount", + _ => throw new ArgumentOutOfRangeException($"{misfireInstruction} is not a supported misfire instruction for SimpleTrigger See Quartz.MisfireInstruction for more details."), + }; } /// @@ -413,18 +403,13 @@ namespace RecurringIntegrationsScheduler /// private static string GetCronTriggerMisfireInstructionText(int misfireInstruction) { - switch (misfireInstruction) + return misfireInstruction switch { - case 0: - return "SmartPolicy"; - case 1: - return "FireOnceNow"; - case 2: - return "DoNothing"; - default: - throw new ArgumentOutOfRangeException( - $"{misfireInstruction} is not a supported misfire instruction for CronTrigger See Quartz.MisfireInstruction for more details."); - } + 0 => "SmartPolicy", + 1 => "FireOnceNow", + 2 => "DoNothing", + _ => throw new ArgumentOutOfRangeException($"{misfireInstruction} is not a supported misfire instruction for CronTrigger See Quartz.MisfireInstruction for more details."), + }; } /// diff --git a/Scheduler/Scheduler.csproj b/Scheduler/Scheduler.csproj index 14926a2..557dac6 100644 --- a/Scheduler/Scheduler.csproj +++ b/Scheduler/Scheduler.csproj @@ -195,16 +195,7 @@ True Resources.resx - - - - - - - - - - + Form @@ -316,7 +307,7 @@ - + diff --git a/Scheduler/Settings/AadApplication.cs b/Scheduler/Settings/AadApplication.cs deleted file mode 100644 index f1cc21b..0000000 --- a/Scheduler/Settings/AadApplication.cs +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the MIT License. */ - -using System; - -namespace RecurringIntegrationsScheduler.Settings -{ - /// - /// - /// - [Serializable] - public class AadApplication - { - /// - /// Gets or sets the name. - /// - /// - /// The name. - /// - public string Name { get; set; } - - /// - /// Gets or sets the client identifier. - /// - /// - /// The client identifier. - /// - public string ClientId { get; set; } - - /// - /// Gets or sets the secret. - /// - /// - /// The secret. - /// - public string Secret { get; set; } - - /// - /// Gets or sets the type. - /// - /// - /// The type. - /// - public AuthenticationType AuthenticationType { get; set; } - } - - /// - /// - /// - public enum AuthenticationType - { - User, - Service - } -} \ No newline at end of file diff --git a/Scheduler/Settings/AadApplications.cs b/Scheduler/Settings/AadApplications.cs deleted file mode 100644 index 37826d6..0000000 --- a/Scheduler/Settings/AadApplications.cs +++ /dev/null @@ -1,15 +0,0 @@ -/* Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the MIT License. */ - -using System.ComponentModel; - -namespace RecurringIntegrationsScheduler.Settings -{ - /// - /// - /// - /// - public class AadApplications : BindingList - { - } -} \ No newline at end of file diff --git a/Scheduler/Settings/DataJob.cs b/Scheduler/Settings/DataJob.cs deleted file mode 100644 index fa5b9b8..0000000 --- a/Scheduler/Settings/DataJob.cs +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the MIT License. */ - -using System; - -namespace RecurringIntegrationsScheduler.Settings -{ - /// - /// - /// - [Serializable] - public class DataJob - { - /// - /// Gets or sets the name. - /// - /// - /// The name. - /// - public string Name { get; set; } - - /// - /// Gets or sets the activity identifier. - /// - /// - /// The activity identifier. - /// - public string ActivityId { get; set; } - - /// - /// Gets or sets the name of the entity. - /// - /// - /// The name of the entity. - /// - public string EntityName { get; set; } - - /// - /// Gets or sets the type. - /// - /// - /// The type. - /// - public DataJobType Type { get; set; } - } - - /// - /// - /// - public enum DataJobType - { - Download, - Upload - } -} \ No newline at end of file diff --git a/Scheduler/Settings/DataJobs.cs b/Scheduler/Settings/DataJobs.cs deleted file mode 100644 index 8a6aa73..0000000 --- a/Scheduler/Settings/DataJobs.cs +++ /dev/null @@ -1,15 +0,0 @@ -/* Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the MIT License. */ - -using System.ComponentModel; - -namespace RecurringIntegrationsScheduler.Settings -{ - /// - /// - /// - /// - public class DataJobs : BindingList - { - } -} \ No newline at end of file diff --git a/Scheduler/Settings/Instance.cs b/Scheduler/Settings/Instance.cs deleted file mode 100644 index d51951d..0000000 --- a/Scheduler/Settings/Instance.cs +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the MIT License. */ - -using System; - -namespace RecurringIntegrationsScheduler.Settings -{ - /// - /// - /// - [Serializable] - public class Instance - { - /// - /// Gets or sets the name. - /// - /// - /// The name. - /// - public string Name { get; set; } - - /// - /// Gets or sets the aos URI. - /// - /// - /// The aos URI. - /// - public string AosUri { get; set; } - - /// - /// Gets or sets the azure authentication endpoint. - /// - /// - /// The azure authentication endpoint. - /// - public string AzureAuthEndpoint { get; set; } - - /// - /// Gets or sets the aad tenant. - /// - /// - /// The aad tenant. - /// - public string AadTenant { get; set; } - } -} \ No newline at end of file diff --git a/Scheduler/Settings/Instances.cs b/Scheduler/Settings/Instances.cs deleted file mode 100644 index 1b6981d..0000000 --- a/Scheduler/Settings/Instances.cs +++ /dev/null @@ -1,15 +0,0 @@ -/* Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the MIT License. */ - -using System.ComponentModel; - -namespace RecurringIntegrationsScheduler.Settings -{ - /// - /// - /// - /// - public class Instances : BindingList - { - } -} \ No newline at end of file diff --git a/Scheduler/Settings/JobGroup.cs b/Scheduler/Settings/JobGroup.cs deleted file mode 100644 index 1728aff..0000000 --- a/Scheduler/Settings/JobGroup.cs +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the MIT License. */ - -using System; - -namespace RecurringIntegrationsScheduler.Settings -{ - /// - /// - /// - [Serializable] - public class JobGroup - { - /// - /// Gets or sets the name. - /// - /// - /// The name. - /// - public string Name { get; set; } - } -} \ No newline at end of file diff --git a/Scheduler/Settings/JobGroups.cs b/Scheduler/Settings/JobGroups.cs deleted file mode 100644 index 14c78d9..0000000 --- a/Scheduler/Settings/JobGroups.cs +++ /dev/null @@ -1,15 +0,0 @@ -/* Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the MIT License. */ - -using System.ComponentModel; - -namespace RecurringIntegrationsScheduler.Settings -{ - /// - /// - /// - /// - public class JobGroups : BindingList - { - } -} \ No newline at end of file diff --git a/Scheduler/Settings/Settings.cs b/Scheduler/Settings/Settings.cs new file mode 100644 index 0000000..ae322a1 --- /dev/null +++ b/Scheduler/Settings/Settings.cs @@ -0,0 +1,218 @@ +/* Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the MIT License. */ + +using System; +using System.ComponentModel; + +namespace RecurringIntegrationsScheduler.Settings +{ + [Serializable] + public class AadApplication + { + /// + /// Gets or sets the name. + /// + /// + /// The name. + /// + public string Name { get; set; } + + /// + /// Gets or sets the client identifier. + /// + /// + /// The client identifier. + /// + public string ClientId { get; set; } + + /// + /// Gets or sets the secret. + /// + /// + /// The secret. + /// + public string Secret { get; set; } + + /// + /// Gets or sets the type. + /// + /// + /// The type. + /// + public AuthenticationType AuthenticationType { get; set; } + } + + /// + /// + /// + public enum AuthenticationType + { + User, + Service + } + + /// + /// + /// + /// + public class AadApplications : BindingList + { + } + + /// + /// + /// + [Serializable] + public class DataJob + { + /// + /// Gets or sets the name. + /// + /// + /// The name. + /// + public string Name { get; set; } + + /// + /// Gets or sets the activity identifier. + /// + /// + /// The activity identifier. + /// + public string ActivityId { get; set; } + + /// + /// Gets or sets the name of the entity. + /// + /// + /// The name of the entity. + /// + public string EntityName { get; set; } + + /// + /// Gets or sets the type. + /// + /// + /// The type. + /// + public DataJobType Type { get; set; } + } + + /// + /// + /// + public enum DataJobType + { + Download, + Upload + } + + /// + /// + /// + /// + public class DataJobs : BindingList + { + } + + /// + /// + /// + [Serializable] + public class Instance + { + /// + /// Gets or sets the name. + /// + /// + /// The name. + /// + public string Name { get; set; } + + /// + /// Gets or sets the aos URI. + /// + /// + /// The aos URI. + /// + public string AosUri { get; set; } + + /// + /// Gets or sets the azure authentication endpoint. + /// + /// + /// The azure authentication endpoint. + /// + public string AzureAuthEndpoint { get; set; } + + /// + /// Gets or sets the aad tenant. + /// + /// + /// The aad tenant. + /// + public string AadTenant { get; set; } + } + + /// + /// + /// + /// + public class Instances : BindingList + { + } + + /// + /// + /// + [Serializable] + public class JobGroup + { + /// + /// Gets or sets the name. + /// + /// + /// The name. + /// + public string Name { get; set; } + } + + /// + /// + /// + /// + public class JobGroups : BindingList + { + } + + /// + /// + /// + [Serializable] + public class User + { + /// + /// Gets or sets the login. + /// + /// + /// The login. + /// + public string Login { get; set; } + + /// + /// Gets or sets the password. + /// + /// + /// The password. + /// + public string Password { get; set; } + } + + /// + /// + /// + /// + public class Users : BindingList + { + } +} diff --git a/Scheduler/Settings/User.cs b/Scheduler/Settings/User.cs deleted file mode 100644 index 2fdb289..0000000 --- a/Scheduler/Settings/User.cs +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the MIT License. */ - -using System; - -namespace RecurringIntegrationsScheduler.Settings -{ - /// - /// - /// - [Serializable] - public class User - { - /// - /// Gets or sets the login. - /// - /// - /// The login. - /// - public string Login { get; set; } - - /// - /// Gets or sets the password. - /// - /// - /// The password. - /// - public string Password { get; set; } - } -} \ No newline at end of file diff --git a/Scheduler/Settings/Users.cs b/Scheduler/Settings/Users.cs deleted file mode 100644 index 07be763..0000000 --- a/Scheduler/Settings/Users.cs +++ /dev/null @@ -1,15 +0,0 @@ -/* Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the MIT License. */ - -using System.ComponentModel; - -namespace RecurringIntegrationsScheduler.Settings -{ - /// - /// - /// - /// - public class Users : BindingList - { - } -} \ No newline at end of file