コード例 #1
0
ファイル: Program.cs プロジェクト: HerrDmitry/Importer
        static int Main(string[] args)
        {
            bool hasError = false;
            var  result   = 0;

            try
            {
                Logger.GetLogger().MessageAsync("Hello world");
                var configPath = args.FirstOrDefault(x => x.ToUpper().StartsWith("/C:"))?.Substring(3);
                if (string.IsNullOrEmpty(configPath))
                {
                    PrintUsage();
                    Logger.GetLogger().Flush();
                    return(-1);
                }

                var importerConfig = ImporterConfiguration.ReadConfiguration(configPath);
                var df             = new DataFlow(importerConfig);

                return(0);


                var config = new Configuration.Configuration(configPath);
                var files  = new System.Collections.Generic.Dictionary <string, string>(config.Files);
                foreach (var a in args)
                {
                    if (ExtractFile(a, out Tuple <string, string> file))
                    {
                        files[file.Item1] = file.Item2;
                    }
                }
                var readers = config.GetReaders();
                var writers = config.GetWriters();

                foreach (var reader in config.GetReaders())
                {
                    if (!files.TryGetValue(reader.Key, out string file) || string.IsNullOrWhiteSpace(file))
                    {
                        Logger.GetLogger().ErrorAsync($"No file defined for reader configuration {reader.Key}");
                        hasError = true;
                        break;
                    }

                    reader.Value.SetDataSource(new BufferedTextReader(File.OpenRead(file)));
                }

                foreach (var writer in config.GetWriters())
                {
                    if (!files.TryGetValue(writer.Key, out string file) || string.IsNullOrWhiteSpace(file))
                    {
                        Logger.GetLogger().ErrorAsync($"No file defined for writer configuration {writer.Key}");
                        hasError = true;
                        break;
                    }


                    if (File.Exists(file))
                    {
                        File.Delete(file);
                    }

                    FileWriter errorOutput = null;
                    if (files.TryGetValue(ERROR_OUTPUT_NAME, out string errorFile))
                    {
                        if (File.Exists(errorFile))
                        {
                            File.Delete(errorFile);
                        }

                        errorOutput = new FileWriter();
                        errorOutput.SetDataDestination(File.Open(errorFile, FileMode.Create, FileAccess.Write, FileShare.Read));
                    }

                    writer.Value.SetDataDestination(File.Open(file, FileMode.Create, FileAccess.Write, FileShare.Read), errorOutput);
                }

                var processor = new Processor(config);
                processor.ProcessAsync().Wait();
            }
            catch (Exception ex)
            {
                Logger.GetLogger().ErrorAsync(ex.Message);
                hasError = true;
            }
            finally
            {
                if (hasError)
                {
                    Logger.GetLogger().ErrorAsync("Execution failed");
                    result = -1;
                }
                Logger.GetLogger().Flush();
            }
            return(result);
        }