private static void timer_Tick() { bool foundCompletedRun = false; //check if runs are complete but not already uploaded foreach (string folder in Directory.GetDirectories(config.getAnalysisFolderPath)) { if (File.Exists(Path.Combine(folder, @"RTAComplete.txt")) && !File.Exists(Path.Combine(folder, @"TransferComplete.txt"))) { Framework.WriteLog(@"Found job: " + Path.Combine(config.getAnalysisFolderPath, folder), 0); foundCompletedRun = true; //transfer data to cluster try { TransferJob job = new TransferJob(folder, config); job.TransferData(); } catch (Exception e) { Framework.WriteLog(e.Message, -1); foundCompletedRun = false; } } } //delete old runs if (foundCompletedRun && config.getDeleteOldestLocalRun) { //get dir list and sort by date creation var di = new DirectoryInfo(config.getAnalysisFolderPath); var directories = di.EnumerateDirectories() .OrderBy(d => d.CreationTime) .Select(d => d.Name) .ToList(); //delete subfolders; protect the last maxSubDirsToKeep (newest) runs for (int n = 0; n < directories.Count - 5; ++n) { if (File.Exists(Path.Combine(directories[n], @"TransferComplete.txt"))) { try { Framework.WriteLog(@"Deleting folder: " + Path.Combine(config.getAnalysisFolderPath, directories[n]), 0); //Directory.Delete(localRunDir + directories[n], true); } catch (Exception e) { Framework.WriteLog(@"Could not delete folder: " + e.ToString(), -1); } } } if (config.getIsMiSeqHost) { try { Framework.WriteLog(@"Deleting and making folder: " + config.getOutputFolderPath, 0); //Directory.Delete(config.getOutputFolderPath, true); //Directory.CreateDirectory(config.getOutputFolderPath); } catch (Exception e) { Framework.WriteLog(@"Could not delete folder: " + e.ToString(), -1); } } } }