public IRecord GetByFullName(string fullName) { var record = records.FirstOrDefault(x => x.FullName == fullName); if (record == null) { record = new Record(fullName); Add(record); } return record; }
public IDatabase Revive() { var db = new Database(); var allLines = File.ReadAllLines(path); var nonBlankLines = allLines.Where(line => !string.IsNullOrEmpty(line) && line.Trim() != string.Empty); foreach (var columns in nonBlankLines.Select(line => line.Split('\t'))) { if (columns == null || columns.Length != 2) throw new InvalidOperationException("Row of file didn't have 2 columns separated by a tab"); var weight = decimal.Parse(columns[0]); var record = new Record(columns[1], weight); db.Add(record); } return db; }
private void DoScan() { var home = Environment.GetEnvironmentVariable("USERPROFILE"); home = home ?? Path.Combine(Environment.GetEnvironmentVariable("HOMEDRIVE"), Environment.GetEnvironmentVariable("HOMEPATH")); var dirs = new Dictionary<string, int>(); Console.WriteLine("Discovering new folders."); var currentDirs = new Dictionary<string, int>(); foreach (IRecord record in Controller.GetOrderedRecords(true)) { if (record.Provider == FileSystemProvider && Directory.Exists(record.Path)) { if (record.Path == home) continue; // Skip home folder - it's going to be in the list by default, and subfolders such as photos, music, etc. are probably not useful. currentDirs.Add(record.Path, 1); GetChildFolders(record.Path, dirs); } } int numDirsAdded = 0; Console.WriteLine("Adding directories:"); foreach (string dir in dirs.Keys) { if (!currentDirs.ContainsKey(dir)) { Console.WriteLine(dir); IRecord record = new Record(FileSystemProvider + "::" + dir, 0); Controller.AddRecord(record); numDirsAdded++; } } Controller.Save(); Console.WriteLine(string.Format("Number of directories added: {0}.", numDirsAdded)); }