/** * Iterate through files, apply path fixes, populate database */ private void iterate() { this.status.codeMinor++; IEnumerable <string> paths = new X3PFileEnumerable(directory); Context context = new Context(); DataAccess dba = new DataAccess(context); this.status.codeMinor++; foreach (var file in paths) { if (dba.landExists(file)) { this.status.processedFiles++; continue; } try { Parser parser = new Parser(file); dba.insertFromParserResult(file, parser.result); } catch (Exception e) { string errorType = (e is PathParserException) ? "Parser Error" : "Database Error"; string message = e.InnerException != null ? e.InnerException.Message : e.Message; this.addFileError(file, $"{errorType}: {message}"); continue; } finally { this.status.processedFiles++; } } }
public IEnumerator <string> GetEnumerator() { if (root == null || !root.Exists) { yield break; } IEnumerable <FileInfo> files = new List <FileInfo>(); try { files = files.Concat(root.EnumerateFiles(X3P_REGEX, SearchOption.TopDirectoryOnly).ToList()); } catch (Exception) {} foreach (FileInfo file in files) { yield return(file.ToString().Replace("/data", "")); } IEnumerable <DirectoryInfo> directories = new List <DirectoryInfo>(); try { directories = directories.Concat(root.EnumerateDirectories("*", SearchOption.TopDirectoryOnly).ToList()); } catch (Exception) {} foreach (DirectoryInfo directory in directories) { IEnumerable <string> subResults = new X3PFileEnumerable(directory.ToString()); foreach (string file in subResults) { yield return(file.Replace("/data", "")); } } }