Work in progress: Delay intervals, refactoring, new job forms, multicompany upload and import

This commit is contained in:
Tomek Melissa 2019-12-13 16:27:46 +01:00
Родитель 39817d0620
Коммит 7058730e5e
33 изменённых файлов: 844 добавлений и 942 удалений

Просмотреть файл

@ -6,7 +6,7 @@ namespace RecurringIntegrationsScheduler.Common.Contracts
/// <summary>
/// Class holding all constant values related to the Odata actions used in this solution
/// </summary>
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";

Просмотреть файл

@ -8,7 +8,6 @@ namespace RecurringIntegrationsScheduler.Common.Contracts
/// </summary>
public static class SettingsConstants
{
#region Common settings
/// <summary>
/// The AOS URI
/// </summary>
@ -168,9 +167,7 @@ namespace RecurringIntegrationsScheduler.Common.Contracts
/// The execution monitor job
/// </summary>
public const string ExecutionJob = "RecurringIntegrationsScheduler.Job.ExecutionMonitor";
#endregion
#region Upload Job settings
/// <summary>
/// Input folder
/// </summary>
@ -225,9 +222,7 @@ namespace RecurringIntegrationsScheduler.Common.Contracts
/// Reverse order
/// </summary>
public const string ReverseOrder = "ReverseOrder";
#endregion
#region Processing Job settings
/// <summary>
/// Processing success folder
/// </summary>
@ -237,9 +232,7 @@ namespace RecurringIntegrationsScheduler.Common.Contracts
/// Processing errors folder
/// </summary>
public const string ProcessingErrorsDir = "ProcessingErrorsDir";
#endregion
#region Download Job settings
/// <summary>
/// Download success folder
/// </summary>
@ -269,9 +262,7 @@ namespace RecurringIntegrationsScheduler.Common.Contracts
/// Upload in order
/// </summary>
public const string UploadInOrder = "UploadInOrder";
#endregion
#region Import Job settings
/// <summary>
/// Is execution job present
/// </summary>
@ -296,13 +287,10 @@ namespace RecurringIntegrationsScheduler.Common.Contracts
/// Package template
/// </summary>
public const string PackageTemplate = "PackageTemplate";
#endregion
#region Execution Job settings
/// <summary>
/// Get import target error keys file
/// </summary>
public const string GetImportTargetErrorKeysFile = "GetImportTargetErrorKeysFile";
#endregion
}
}

Просмотреть файл

@ -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);
}
/// <summary>
@ -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));
}
/// <summary>
@ -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);
}
/// <summary>
@ -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);
}
}
}

Просмотреть файл

@ -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;
/// <summary>
@ -144,32 +139,29 @@ namespace RecurringIntegrationsScheduler.Common.Helpers
/// <returns>
/// Data job enqueue request Uri
/// </returns>
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;
}
/// <summary>
@ -180,15 +172,8 @@ namespace RecurringIntegrationsScheduler.Common.Helpers
/// </returns>
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;
}
/// <summary>
@ -199,15 +184,8 @@ namespace RecurringIntegrationsScheduler.Common.Helpers
/// </returns>
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;
}
/// <summary>
@ -219,15 +197,12 @@ namespace RecurringIntegrationsScheduler.Common.Helpers
/// </returns>
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;
}
/// <summary>
@ -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;
}
/// <summary>
/// Dispose

Просмотреть файл

@ -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

Просмотреть файл

@ -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
/// </value>
public string StatusFileExtension { get; private set; }
/// <summary>
/// Gets or sets delay between status check.
/// </summary>
/// <value>
/// Delay between status checks.
/// </value>
public int StatusCheckInterval { get; private set; }
#endregion
}
}

Просмотреть файл

@ -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
/// <exception cref="System.Exception"></exception>
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);
}
}

Просмотреть файл

@ -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
/// <returns></returns>
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
/// <returns>Entities list</returns>
private List<string> 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<string>();
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<string>();
foreach(XmlNode node in entities)
{
enitiesList.Add(node.InnerText);
}
return enitiesList;
}
}

Просмотреть файл

@ -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")
{

Просмотреть файл

@ -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;
}
/// <summary>
@ -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

Просмотреть файл

@ -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
/// <returns></returns>
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<DataJobStatusDetail>(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;
}
}
}
}

Просмотреть файл

@ -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

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 52 KiB

После

Ширина:  |  Высота:  |  Размер: 52 KiB

52
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;

84
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);
}

154
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();

359
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);

Просмотреть файл

@ -117,4 +117,19 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="instancesToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="usersToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>257, 17</value>
</metadata>
<metadata name="dataJobsToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>459, 17</value>
</metadata>
<metadata name="jobGroupsToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>696, 17</value>
</metadata>
<metadata name="applicationsToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>949, 17</value>
</metadata>
</root>

115
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;
}
}

Просмотреть файл

@ -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)
{

Просмотреть файл

@ -250,44 +250,42 @@ namespace RecurringIntegrationsScheduler
/// <param name="triggerDetails">The trigger details.</param>
private static void WriteToFile(FileInfo file, List<IJobDetail> jobDetails, List<ITrigger> 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);
}
/// <summary>
@ -385,24 +383,16 @@ namespace RecurringIntegrationsScheduler
/// <exception cref="System.ArgumentOutOfRangeException"></exception>
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."),
};
}
/// <summary>
@ -413,18 +403,13 @@ namespace RecurringIntegrationsScheduler
/// <exception cref="System.ArgumentOutOfRangeException"></exception>
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."),
};
}
/// <summary>

Просмотреть файл

@ -195,16 +195,7 @@
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Settings\AadApplication.cs" />
<Compile Include="Settings\AadApplications.cs" />
<Compile Include="Settings\JobGroup.cs" />
<Compile Include="Settings\JobGroups.cs" />
<Compile Include="Settings\User.cs" />
<Compile Include="Settings\Instance.cs" />
<Compile Include="Settings\Users.cs" />
<Compile Include="Settings\DataJob.cs" />
<Compile Include="Settings\Instances.cs" />
<Compile Include="Settings\DataJobs.cs" />
<Compile Include="Settings\Settings.cs" />
<Compile Include="Forms\Parameters.cs">
<SubType>Form</SubType>
</Compile>
@ -316,7 +307,7 @@
<None Include="Assets\Folder open_32xMD_exp.png" />
<None Include="Assets\Add_16xMD.png" />
<None Include="Assets\Edit_16xMD.png" />
<Content Include="Assets\RecurringIntegrationsScheduler.ico" />
<None Include="Assets\RecurringIntegrationsScheduler.ico" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.5">

Просмотреть файл

@ -1,55 +0,0 @@
/* Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. */
using System;
namespace RecurringIntegrationsScheduler.Settings
{
/// <summary>
///
/// </summary>
[Serializable]
public class AadApplication
{
/// <summary>
/// Gets or sets the name.
/// </summary>
/// <value>
/// The name.
/// </value>
public string Name { get; set; }
/// <summary>
/// Gets or sets the client identifier.
/// </summary>
/// <value>
/// The client identifier.
/// </value>
public string ClientId { get; set; }
/// <summary>
/// Gets or sets the secret.
/// </summary>
/// <value>
/// The secret.
/// </value>
public string Secret { get; set; }
/// <summary>
/// Gets or sets the type.
/// </summary>
/// <value>
/// The type.
/// </value>
public AuthenticationType AuthenticationType { get; set; }
}
/// <summary>
///
/// </summary>
public enum AuthenticationType
{
User,
Service
}
}

Просмотреть файл

@ -1,15 +0,0 @@
/* Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. */
using System.ComponentModel;
namespace RecurringIntegrationsScheduler.Settings
{
/// <summary>
///
/// </summary>
/// <seealso cref="System.ComponentModel.BindingList{AadApplication}" />
public class AadApplications : BindingList<AadApplication>
{
}
}

Просмотреть файл

@ -1,55 +0,0 @@
/* Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. */
using System;
namespace RecurringIntegrationsScheduler.Settings
{
/// <summary>
///
/// </summary>
[Serializable]
public class DataJob
{
/// <summary>
/// Gets or sets the name.
/// </summary>
/// <value>
/// The name.
/// </value>
public string Name { get; set; }
/// <summary>
/// Gets or sets the activity identifier.
/// </summary>
/// <value>
/// The activity identifier.
/// </value>
public string ActivityId { get; set; }
/// <summary>
/// Gets or sets the name of the entity.
/// </summary>
/// <value>
/// The name of the entity.
/// </value>
public string EntityName { get; set; }
/// <summary>
/// Gets or sets the type.
/// </summary>
/// <value>
/// The type.
/// </value>
public DataJobType Type { get; set; }
}
/// <summary>
///
/// </summary>
public enum DataJobType
{
Download,
Upload
}
}

Просмотреть файл

@ -1,15 +0,0 @@
/* Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. */
using System.ComponentModel;
namespace RecurringIntegrationsScheduler.Settings
{
/// <summary>
///
/// </summary>
/// <seealso cref="System.ComponentModel.BindingList{DataJob}" />
public class DataJobs : BindingList<DataJob>
{
}
}

Просмотреть файл

@ -1,46 +0,0 @@
/* Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. */
using System;
namespace RecurringIntegrationsScheduler.Settings
{
/// <summary>
///
/// </summary>
[Serializable]
public class Instance
{
/// <summary>
/// Gets or sets the name.
/// </summary>
/// <value>
/// The name.
/// </value>
public string Name { get; set; }
/// <summary>
/// Gets or sets the aos URI.
/// </summary>
/// <value>
/// The aos URI.
/// </value>
public string AosUri { get; set; }
/// <summary>
/// Gets or sets the azure authentication endpoint.
/// </summary>
/// <value>
/// The azure authentication endpoint.
/// </value>
public string AzureAuthEndpoint { get; set; }
/// <summary>
/// Gets or sets the aad tenant.
/// </summary>
/// <value>
/// The aad tenant.
/// </value>
public string AadTenant { get; set; }
}
}

Просмотреть файл

@ -1,15 +0,0 @@
/* Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. */
using System.ComponentModel;
namespace RecurringIntegrationsScheduler.Settings
{
/// <summary>
///
/// </summary>
/// <seealso cref="System.ComponentModel.BindingList{Instance}" />
public class Instances : BindingList<Instance>
{
}
}

Просмотреть файл

@ -1,22 +0,0 @@
/* Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. */
using System;
namespace RecurringIntegrationsScheduler.Settings
{
/// <summary>
///
/// </summary>
[Serializable]
public class JobGroup
{
/// <summary>
/// Gets or sets the name.
/// </summary>
/// <value>
/// The name.
/// </value>
public string Name { get; set; }
}
}

Просмотреть файл

@ -1,15 +0,0 @@
/* Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. */
using System.ComponentModel;
namespace RecurringIntegrationsScheduler.Settings
{
/// <summary>
///
/// </summary>
/// <seealso cref="System.ComponentModel.BindingList{JobGroup}" />
public class JobGroups : BindingList<JobGroup>
{
}
}

Просмотреть файл

@ -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
{
/// <summary>
/// Gets or sets the name.
/// </summary>
/// <value>
/// The name.
/// </value>
public string Name { get; set; }
/// <summary>
/// Gets or sets the client identifier.
/// </summary>
/// <value>
/// The client identifier.
/// </value>
public string ClientId { get; set; }
/// <summary>
/// Gets or sets the secret.
/// </summary>
/// <value>
/// The secret.
/// </value>
public string Secret { get; set; }
/// <summary>
/// Gets or sets the type.
/// </summary>
/// <value>
/// The type.
/// </value>
public AuthenticationType AuthenticationType { get; set; }
}
/// <summary>
///
/// </summary>
public enum AuthenticationType
{
User,
Service
}
/// <summary>
///
/// </summary>
/// <seealso cref="System.ComponentModel.BindingList{AadApplication}" />
public class AadApplications : BindingList<AadApplication>
{
}
/// <summary>
///
/// </summary>
[Serializable]
public class DataJob
{
/// <summary>
/// Gets or sets the name.
/// </summary>
/// <value>
/// The name.
/// </value>
public string Name { get; set; }
/// <summary>
/// Gets or sets the activity identifier.
/// </summary>
/// <value>
/// The activity identifier.
/// </value>
public string ActivityId { get; set; }
/// <summary>
/// Gets or sets the name of the entity.
/// </summary>
/// <value>
/// The name of the entity.
/// </value>
public string EntityName { get; set; }
/// <summary>
/// Gets or sets the type.
/// </summary>
/// <value>
/// The type.
/// </value>
public DataJobType Type { get; set; }
}
/// <summary>
///
/// </summary>
public enum DataJobType
{
Download,
Upload
}
/// <summary>
///
/// </summary>
/// <seealso cref="System.ComponentModel.BindingList{DataJob}" />
public class DataJobs : BindingList<DataJob>
{
}
/// <summary>
///
/// </summary>
[Serializable]
public class Instance
{
/// <summary>
/// Gets or sets the name.
/// </summary>
/// <value>
/// The name.
/// </value>
public string Name { get; set; }
/// <summary>
/// Gets or sets the aos URI.
/// </summary>
/// <value>
/// The aos URI.
/// </value>
public string AosUri { get; set; }
/// <summary>
/// Gets or sets the azure authentication endpoint.
/// </summary>
/// <value>
/// The azure authentication endpoint.
/// </value>
public string AzureAuthEndpoint { get; set; }
/// <summary>
/// Gets or sets the aad tenant.
/// </summary>
/// <value>
/// The aad tenant.
/// </value>
public string AadTenant { get; set; }
}
/// <summary>
///
/// </summary>
/// <seealso cref="System.ComponentModel.BindingList{Instance}" />
public class Instances : BindingList<Instance>
{
}
/// <summary>
///
/// </summary>
[Serializable]
public class JobGroup
{
/// <summary>
/// Gets or sets the name.
/// </summary>
/// <value>
/// The name.
/// </value>
public string Name { get; set; }
}
/// <summary>
///
/// </summary>
/// <seealso cref="System.ComponentModel.BindingList{JobGroup}" />
public class JobGroups : BindingList<JobGroup>
{
}
/// <summary>
///
/// </summary>
[Serializable]
public class User
{
/// <summary>
/// Gets or sets the login.
/// </summary>
/// <value>
/// The login.
/// </value>
public string Login { get; set; }
/// <summary>
/// Gets or sets the password.
/// </summary>
/// <value>
/// The password.
/// </value>
public string Password { get; set; }
}
/// <summary>
///
/// </summary>
/// <seealso cref="System.ComponentModel.BindingList{User}" />
public class Users : BindingList<User>
{
}
}

Просмотреть файл

@ -1,30 +0,0 @@
/* Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. */
using System;
namespace RecurringIntegrationsScheduler.Settings
{
/// <summary>
///
/// </summary>
[Serializable]
public class User
{
/// <summary>
/// Gets or sets the login.
/// </summary>
/// <value>
/// The login.
/// </value>
public string Login { get; set; }
/// <summary>
/// Gets or sets the password.
/// </summary>
/// <value>
/// The password.
/// </value>
public string Password { get; set; }
}
}

Просмотреть файл

@ -1,15 +0,0 @@
/* Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. */
using System.ComponentModel;
namespace RecurringIntegrationsScheduler.Settings
{
/// <summary>
///
/// </summary>
/// <seealso cref="System.ComponentModel.BindingList{User}" />
public class Users : BindingList<User>
{
}
}