Skip to content

Commit a7d6b81

Browse files
Move inprogress files to listening dir on startup
1 parent a865ad1 commit a7d6b81

1 file changed

Lines changed: 24 additions & 9 deletions

File tree

FileProcessor/FileProcessingWorker.cs

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,22 @@ public override async Task StartAsync(CancellationToken cancellationToken)
9797
this.LogInformation($"Created ProcessedDirectory at [{fileProfile.ProcessedDirectory}]");
9898
Directory.CreateDirectory(fileProfile.FailedDirectory);
9999
this.LogInformation($"Created FailedDirectory at [{fileProfile.FailedDirectory}]");
100-
}
101100

101+
String[] inprogressList = Directory.GetFiles($"{fileProfile.ListeningDirectory}//inprogress");
102+
103+
if (inprogressList.Any())
104+
{
105+
this.LogInformation($"{inprogressList.Length} files in progress detected in [{ fileProfile.ListeningDirectory}//inprogress");
106+
107+
// Now move these to the listening directory
108+
foreach (String s in inprogressList)
109+
{
110+
FileInfo fi = new FileInfo(s);
111+
fi.MoveTo($"{fileProfile.ListeningDirectory}//{fi.Name}");
112+
}
113+
}
114+
}
115+
102116
await base.StartAsync(cancellationToken);
103117
}
104118

@@ -132,17 +146,18 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
132146
try
133147
{
134148
List<Task> fileProcessingTasks = new List<Task>();
135-
var fileProfiles = await this.FileProcessorManager.GetAllFileProfiles(stoppingToken);
149+
List<FileProfile> fileProfiles = await this.FileProcessorManager.GetAllFileProfiles(stoppingToken);
150+
136151
foreach (FileProfile fileProfile in fileProfiles)
137152
{
138153
this.LogInformation($"About to look in {fileProfile.ListeningDirectory} for files");
139-
var files = Directory.GetFiles(fileProfile.ListeningDirectory).Take(1).ToList(); // Only process 1 file per file profile concurrently
140-
141-
foreach (String file in files)
154+
IDirectoryInfo listeningDirectory = this.FileSystem.DirectoryInfo.FromDirectoryName(fileProfile.ListeningDirectory);
155+
156+
List<IFileInfo> files = listeningDirectory.GetFiles(fileProfile.ListeningDirectory).OrderBy(f => f.CreationTime).Take(1).ToList(); // Only process 1 file per file profile concurrently,
157+
158+
foreach (IFileInfo fileInfo in files)
142159
{
143-
this.LogInformation($"File {file} detected");
144-
145-
IFileInfo fileInfo = this.FileSystem.FileInfo.FromFileName(file);
160+
this.LogInformation($"File {fileInfo.Name} detected");
146161

147162
String inProgressFolder = $"{fileProfile.ListeningDirectory}/inprogress/";
148163
if (this.FileSystem.Directory.Exists(inProgressFolder) == false)
@@ -152,7 +167,7 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
152167
String inProgressFilePath = $"{fileProfile.ListeningDirectory}/inprogress/{fileInfo.Name}";
153168
fileInfo.MoveTo(inProgressFilePath, true);
154169

155-
var request = this.CreateProcessFileRequest(fileProfile, inProgressFilePath);
170+
IRequest request = this.CreateProcessFileRequest(fileProfile, inProgressFilePath);
156171
fileProcessingTasks.Add(this.Mediator.Send(request));
157172
}
158173
}

0 commit comments

Comments
 (0)