static void Main(string[] args) { string dsn = ConfigurationManager.ConnectionStrings["X12"].ConnectionString; bool throwExceptionOnSyntaxErrors = ConfigurationManager.AppSettings["ThrowExceptionOnSyntaxErrors"] == "true"; string[] segments = ConfigurationManager.AppSettings["IndexedSegments"].Split(','); string parseDirectory = ConfigurationManager.AppSettings["ParseDirectory"]; string parseSearchPattern = ConfigurationManager.AppSettings["ParseSearchPattern"]; string archiveDirectory = ConfigurationManager.AppSettings["ArchiveDirectory"]; string failureDirectory = ConfigurationManager.AppSettings["FailureDirectory"]; string sqlDateType = ConfigurationManager.AppSettings["SqlDateType"]; int segmentBatchSize = Convert.ToInt32(ConfigurationManager.AppSettings["SqlSegmentBatchSize"]); var specFinder = new SpecificationFinder(); var parser = new X12Parser(throwExceptionOnSyntaxErrors); parser.ParserWarning += new X12Parser.X12ParserWarningEventHandler(parser_ParserWarning); var repo = new SqlTransactionRepository <int>(dsn, specFinder, segments, ConfigurationManager.AppSettings["schema"], ConfigurationManager.AppSettings["containerSchema"], segmentBatchSize, sqlDateType); foreach (var filename in Directory.GetFiles(parseDirectory, parseSearchPattern, SearchOption.AllDirectories)) { byte[] header = new byte[6]; using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read)) { // peak at first 6 characters to determine if this is a unicode file fs.Read(header, 0, 6); fs.Close(); } Encoding encoding = (header[1] == 0 && header[3] == 0 && header[5] == 0) ? Encoding.Unicode : Encoding.UTF8; var fi = new FileInfo(filename); using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read)) { try { var interchanges = parser.ParseMultiple(fs, encoding); foreach (var interchange in interchanges) { repo.Save(interchange, filename, Environment.UserName); } if (!string.IsNullOrWhiteSpace(archiveDirectory)) { MoveTo(fi, parseDirectory, archiveDirectory); } } catch (Exception exc) { Trace.TraceError("Error parsing {0}: {1}\n{2}", fi.FullName, exc.Message, exc.StackTrace); if (!string.IsNullOrEmpty(failureDirectory)) { MoveTo(fi, parseDirectory, failureDirectory); } } } } }
public static void Main(string[] args) { var path = args[0]; var typeFinder = new TypeFinder(); var specificationFinder = new SpecificationFinder(new ClassFinder(new MethodFinder())); var specificationWritter = new SpecificationWritter(new ConsoleWritter()); var types = typeFinder.find(path); var specification = new Specification(path); foreach (var type in types) { var currentSpecification = specificationFinder.Find(type); specification.AddContext(currentSpecification); } specificationWritter.Write(specification); }
public SpecificationFinder_should() { finder = new SpecificationFinder(new ClassFinder(new MethodFinder())); }