20 using TraceLabSDK.Types.Generics.Collections;
21 using TraceLabSDK.Component.Config;
23 namespace TraceLab.Components.Library.Helpers
25 [Component(Name =
"Directory Reader",
26 Description =
"It reads files from the directory that match the specified pattern and outputs the files into the list of Strings. It also outputs the count of all the files.",
30 [IOSpec(IOSpecType.Output,
"files", typeof(StringList))]
31 [IOSpec(IOSpecType.Output,
"numberOfFiles", typeof(
int))]
32 [Tag(
"Helper components")]
38 Configuration = config;
49 if (config.Directory == null)
51 throw new ComponentException(
"Directory has not been specified.");
53 if (Directory.Exists(config.Directory) ==
false)
55 throw new ComponentException(String.Format(
"Directory does not exist '{0}'.", config.Directory.Absolute));
59 if (String.IsNullOrEmpty(config.SearchPattern) ==
true)
61 files = Directory.GetFiles(config.Directory,
"*", TranslateSearchOption(config.SearchOption));
65 files = Directory.GetFiles(config.Directory, config.SearchPattern, TranslateSearchOption(config.SearchOption));
68 StringList listOfFiles =
new StringList();
69 listOfFiles.AddRange(files);
71 Workspace.Store(
"files", listOfFiles);
72 Workspace.Store(
"numberOfFiles", listOfFiles.Count);
73 Logger.Trace(String.Format(
"Found {0} files in the given directory that match given search pattern.", listOfFiles.Count));
81 return SearchOption.TopDirectoryOnly;
84 return SearchOption.AllDirectories;
86 default:
return SearchOption.TopDirectoryOnly;
93 public DirectoryPath Directory
99 public string SearchPattern