コード例 #1
0
        /**
         * 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++;
                }
            }
        }
コード例 #2
0
        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", ""));
                }
            }
        }