@@ -85,20 +85,35 @@ public override async Task StartAsync(CancellationToken cancellationToken)
8585 // TODO: Do we poll here for files incase they have been left from a previous run
8686 var temporaryFileLocation = ConfigurationReader . GetValue ( "AppSettings" , "TemporaryFileLocation" ) ;
8787 this . LogInformation ( $ "Starting up, TemporaryFileLocation is [{ temporaryFileLocation } ]") ;
88- Directory . CreateDirectory ( temporaryFileLocation ) ;
88+
89+ this . FileSystem . Directory . CreateDirectory ( temporaryFileLocation ) ;
8990 this . LogInformation ( $ "Created TemporaryFileLocation at [{ temporaryFileLocation } ]") ;
9091 var fileProfiles = await this . FileProcessorManager . GetAllFileProfiles ( cancellationToken ) ;
9192
9293 foreach ( FileProfile fileProfile in fileProfiles )
9394 {
94- Directory . CreateDirectory ( $ "{ fileProfile . ListeningDirectory } //inprogress") ;
95+ this . FileSystem . Directory . CreateDirectory ( $ "{ fileProfile . ListeningDirectory } //inprogress") ;
9596 this . LogInformation ( $ "Created in progress at [{ fileProfile . ListeningDirectory } //inprogress") ;
96- Directory . CreateDirectory ( fileProfile . ProcessedDirectory ) ;
97+ this . FileSystem . Directory . CreateDirectory ( fileProfile . ProcessedDirectory ) ;
9798 this . LogInformation ( $ "Created ProcessedDirectory at [{ fileProfile . ProcessedDirectory } ]") ;
98- Directory . CreateDirectory ( fileProfile . FailedDirectory ) ;
99+ this . FileSystem . Directory . CreateDirectory ( fileProfile . FailedDirectory ) ;
99100 this . LogInformation ( $ "Created FailedDirectory at [{ fileProfile . FailedDirectory } ]") ;
100- }
101101
102+ IDirectoryInfo inprogressDirectory = this . FileSystem . DirectoryInfo . FromDirectoryName ( fileProfile . ListeningDirectory ) ;
103+ var inprogressList = inprogressDirectory . GetFiles ( ) ;
104+
105+ if ( inprogressList . Any ( ) )
106+ {
107+ this . LogInformation ( $ "{ inprogressList . Length } files in progress detected in [{ fileProfile . ListeningDirectory } //inprogress") ;
108+
109+ // Now move these to the listening directory
110+ foreach ( IFileInfo file in inprogressList )
111+ {
112+ file . MoveTo ( $ "{ fileProfile . ListeningDirectory } //{ file . Name } ") ;
113+ }
114+ }
115+ }
116+
102117 await base . StartAsync ( cancellationToken ) ;
103118 }
104119
@@ -132,17 +147,18 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
132147 try
133148 {
134149 List < Task > fileProcessingTasks = new List < Task > ( ) ;
135- var fileProfiles = await this . FileProcessorManager . GetAllFileProfiles ( stoppingToken ) ;
150+ List < FileProfile > fileProfiles = await this . FileProcessorManager . GetAllFileProfiles ( stoppingToken ) ;
151+
136152 foreach ( FileProfile fileProfile in fileProfiles )
137153 {
138154 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 )
155+ IDirectoryInfo listeningDirectory = this . FileSystem . DirectoryInfo . FromDirectoryName ( fileProfile . ListeningDirectory ) ;
156+
157+ List < IFileInfo > files = listeningDirectory . GetFiles ( ) . OrderBy ( f => f . CreationTime ) . Take ( 1 ) . ToList ( ) ; // Only process 1 file per file profile concurrently,
158+
159+ foreach ( IFileInfo fileInfo in files )
142160 {
143- this . LogInformation ( $ "File { file } detected") ;
144-
145- IFileInfo fileInfo = this . FileSystem . FileInfo . FromFileName ( file ) ;
161+ this . LogInformation ( $ "File { fileInfo . Name } detected") ;
146162
147163 String inProgressFolder = $ "{ fileProfile . ListeningDirectory } /inprogress/";
148164 if ( this . FileSystem . Directory . Exists ( inProgressFolder ) == false )
@@ -152,7 +168,7 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
152168 String inProgressFilePath = $ "{ fileProfile . ListeningDirectory } /inprogress/{ fileInfo . Name } ";
153169 fileInfo . MoveTo ( inProgressFilePath , true ) ;
154170
155- var request = this . CreateProcessFileRequest ( fileProfile , inProgressFilePath ) ;
171+ IRequest request = this . CreateProcessFileRequest ( fileProfile , inProgressFilePath ) ;
156172 fileProcessingTasks . Add ( this . Mediator . Send ( request ) ) ;
157173 }
158174 }
0 commit comments