NestExistingFiles
This commit is contained in:
@ -38,6 +38,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
throw new Exception(cellInstanceConnectionName);
|
throw new Exception(cellInstanceConnectionName);
|
||||||
_HttpClient = new();
|
_HttpClient = new();
|
||||||
_StaticFileServer = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, string.Concat("CellInstance.", cellInstanceName, ".StaticFileServer"));
|
_StaticFileServer = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, string.Concat("CellInstance.", cellInstanceName, ".StaticFileServer"));
|
||||||
|
NestExistingFiles(_FileConnectorConfiguration);
|
||||||
if (!Debugger.IsAttached && fileConnectorConfiguration.PreProcessingMode != FileConnectorConfiguration.PreProcessingModeEnum.Process)
|
if (!Debugger.IsAttached && fileConnectorConfiguration.PreProcessingMode != FileConnectorConfiguration.PreProcessingModeEnum.Process)
|
||||||
_Timer = new Timer(Callback, null, (int)(fileConnectorConfiguration.FileScanningIntervalInSeconds * 1000), Timeout.Infinite);
|
_Timer = new Timer(Callback, null, (int)(fileConnectorConfiguration.FileScanningIntervalInSeconds * 1000), Timeout.Infinite);
|
||||||
else
|
else
|
||||||
@ -259,6 +260,17 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
#nullable disable
|
#nullable disable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private TimeSpan GetNextTimeSpan()
|
||||||
|
{
|
||||||
|
TimeSpan result;
|
||||||
|
string checkFile = Path.Combine(_FileConnectorConfiguration.AlternateTargetFolder, _FileConnectorConfiguration.SourceFileFilter.Split('|')[0]);
|
||||||
|
if (File.Exists(checkFile))
|
||||||
|
result = new(DateTime.Now.AddMilliseconds(500).Ticks - DateTime.Now.Ticks);
|
||||||
|
else
|
||||||
|
result = new(DateTime.Now.AddSeconds(_FileConnectorConfiguration.FileScanningIntervalInSeconds.Value).Ticks - DateTime.Now.Ticks);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private void Callback(object state)
|
private void Callback(object state)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -276,7 +288,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
}
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
TimeSpan timeSpan = new(DateTime.Now.AddSeconds(_FileConnectorConfiguration.FileScanningIntervalInSeconds.Value).Ticks - DateTime.Now.Ticks);
|
TimeSpan timeSpan = GetNextTimeSpan();
|
||||||
_ = _Timer.Change((long)timeSpan.TotalMilliseconds, Timeout.Infinite);
|
_ = _Timer.Change((long)timeSpan.TotalMilliseconds, Timeout.Infinite);
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
|
@ -29,6 +29,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
if (_IsDuplicator)
|
if (_IsDuplicator)
|
||||||
throw new Exception(cellInstanceConnectionName);
|
throw new Exception(cellInstanceConnectionName);
|
||||||
_OriginalDataBioRad = "OriginalDataBioRad_";
|
_OriginalDataBioRad = "OriginalDataBioRad_";
|
||||||
|
NestExistingFiles(_FileConnectorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception) => Move(extractResults);
|
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception) => Move(extractResults);
|
||||||
|
@ -29,6 +29,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
if (_IsDuplicator)
|
if (_IsDuplicator)
|
||||||
throw new Exception(cellInstanceConnectionName);
|
throw new Exception(cellInstanceConnectionName);
|
||||||
_OriginalDataBioRad = "OriginalDataBioRad_";
|
_OriginalDataBioRad = "OriginalDataBioRad_";
|
||||||
|
NestExistingFiles(_FileConnectorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception) => Move(extractResults);
|
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception) => Move(extractResults);
|
||||||
|
@ -489,6 +489,43 @@ public class FileRead : Properties.IFileRead
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static void NestExistingFiles(FileConnectorConfiguration fileConnectorConfiguration)
|
||||||
|
{
|
||||||
|
if (!fileConnectorConfiguration.IncludeSubDirectories.Value)
|
||||||
|
{
|
||||||
|
string[] matches = GetMatches(fileConnectorConfiguration);
|
||||||
|
if (matches is not null && matches.Length > 0)
|
||||||
|
{
|
||||||
|
string fileName;
|
||||||
|
string nestedDirectory = Path.Combine(fileConnectorConfiguration.SourceFileLocation, DateTime.Now.Ticks.ToString());
|
||||||
|
if (!Directory.Exists(nestedDirectory))
|
||||||
|
_ = Directory.CreateDirectory(nestedDirectory);
|
||||||
|
foreach (string match in matches)
|
||||||
|
{
|
||||||
|
fileName = Path.GetFileName(match);
|
||||||
|
File.Move(match, Path.Combine(fileConnectorConfiguration.SourceFileLocation, fileName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static string[] GetMatches(FileConnectorConfiguration fileConnectorConfiguration)
|
||||||
|
{
|
||||||
|
string[] segments;
|
||||||
|
string[] results = null;
|
||||||
|
foreach (string subSourceFileFilter in fileConnectorConfiguration.SourceFileFilters)
|
||||||
|
{
|
||||||
|
segments = subSourceFileFilter.Split('\\');
|
||||||
|
if (fileConnectorConfiguration.IncludeSubDirectories.Value)
|
||||||
|
results = Directory.GetFiles(fileConnectorConfiguration.SourceFileLocation, segments.Last(), SearchOption.AllDirectories);
|
||||||
|
else
|
||||||
|
results = Directory.GetFiles(fileConnectorConfiguration.SourceFileLocation, segments.Last(), SearchOption.TopDirectoryOnly);
|
||||||
|
if (results.Length != 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
protected Tuple<string, Test[], JsonElement[], List<FileInfo>> ReExtract(IFileRead fileRead, List<string> headerNames, Dictionary<string, string> keyValuePairs)
|
protected Tuple<string, Test[], JsonElement[], List<FileInfo>> ReExtract(IFileRead fileRead, List<string> headerNames, Dictionary<string, string> keyValuePairs)
|
||||||
{
|
{
|
||||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||||
@ -496,18 +533,7 @@ public class FileRead : Properties.IFileRead
|
|||||||
results = null;
|
results = null;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string[] segments;
|
string[] matches = GetMatches(_FileConnectorConfiguration);
|
||||||
string[] matches = null;
|
|
||||||
foreach (string subSourceFileFilter in _FileConnectorConfiguration.SourceFileFilters)
|
|
||||||
{
|
|
||||||
segments = subSourceFileFilter.Split('\\');
|
|
||||||
if (_FileConnectorConfiguration.IncludeSubDirectories.Value)
|
|
||||||
matches = Directory.GetFiles(_FileConnectorConfiguration.SourceFileLocation, segments.Last(), SearchOption.AllDirectories);
|
|
||||||
else
|
|
||||||
matches = Directory.GetFiles(_FileConnectorConfiguration.SourceFileLocation, segments.Last(), SearchOption.TopDirectoryOnly);
|
|
||||||
if (matches.Length != 0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (matches is null || matches.Length == 0)
|
if (matches is null || matches.Length == 0)
|
||||||
results = null;
|
results = null;
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user