예제 #1
0
        static void WriteCsv(CsvZipPackage csvz, string csv)
        {
            Console.WriteLine($"Processing {Path.GetFileName(csv)}: ");
            var data     = CsvDataReader.Create(csv);
            var analyzer = new SchemaAnalyzer();

            Console.Write($"  Analyzing. ");
            var sw     = Stopwatch.StartNew();
            var result = analyzer.Analyze(data);

            Console.WriteLine(sw.Elapsed.ToString());

            var schema    = result.GetSchema();
            var csvSchema = new CsvSchema(schema);

            var csvOpts = new CsvDataReaderOptions {
                Schema = csvSchema
            };

            Console.Write($"  Writing.   ");
            data = CsvDataReader.Create(csv, csvOpts);
            sw   = Stopwatch.StartNew();
            var entry = csvz.CreateEntry(Path.GetFileName(csv));

            entry.WriteData(data);
            Console.WriteLine(sw.Elapsed.ToString());
        }
예제 #2
0
        public override int Execute(CommandContext context, AnalyzeSettings settings)
        {
            var filename = settings.File;
            var output   = settings.Schema ?? filename + ".schema";

            Stream oStream =
                output == "."
                                ? Console.OpenStandardOutput()
                                : File.Create(output);

            var tr = new StreamReader(filename);

            for (int i = 0; i < settings.Skip; i++)
            {
                tr.ReadLine();
            }

            var csv = CsvDataReader.Create(tr);
            var a   = new SchemaAnalyzer(new SchemaAnalyzerOptions {
                AnalyzeRowCount = settings.Lines
            });
            var re = a.Analyze(csv);
            var sb = re.GetSchemaBuilder();

            foreach (var col in sb)
            {
                // TODO: think more about how to handle columns size
                col.ColumnSize = null;
            }
            var schema = sb.Build();

            using var tw = new StreamWriter(oStream);
            tw.Write(schema.ToString().Replace(",", "," + Environment.NewLine));
            return(0);
        }
예제 #3
0
        private void UiAction_Generate()
        {
            PleaseWait.ShowPleaseWait("Connecting to database server", true, false);

            using (System.Data.Common.DbConnection conn = _projectDefinition.DbSettions.GetNewConnection())
                using (ExSchemaEngine schemaEngine = _projectDefinition.DbSettions.GetSchemaEngine(conn))
                {
                    // Connection to database
                    conn.Open();

                    // Let application catchup
                    Application.DoEvents();

                    // Reading database
                    PleaseWait.WaitingState = "Reading database schema";

                    // 1 ==========================
                    // Database schema reader
                    var schemaDatabase = new DbDatabase();
                    schemaDatabase.Provider = _projectDefinition.DbSettions.DatabaseProvider;

                    // shcema engine options
                    schemaEngine.SpecificOwner = _projectDefinition.DbSettions.DatabaseProvider == DatabaseProvider.Oracle
                                                 ? _projectDefinition.DbSettions.SqlUsername
                                                 : _projectDefinition.DbSettions.SchemaName;

                    // columns descriptions
                    schemaEngine.ReadColumnsDescription = _projectDefinition.CodeGenSettings.GenerateColumnsDescription;
                    schemaEngine.ReadTablesForeignKeys  = _projectDefinition.CodeGenSettings.GenerateTablesForeignKeys;
                    schemaEngine.ReadConstraintKeys     = _projectDefinition.CodeGenSettings.GenerateConstraintKeys;

                    // only selected tables
                    schemaEngine.OnlyReadSelectedItems = true;
                    schemaEngine.SelectedTables        = _projectDefinition.DbSettions.GetSelectedTablesList();
                    schemaEngine.SelectedViews         = _projectDefinition.DbSettions.GetSelectedViewsList();

                    // read database schema
                    schemaEngine.FillSchema(schemaDatabase);

                    PleaseWait.WaitingState = "Analyzing database schema";
                    // 2 ======================
                    var alanyzer = new SchemaAnalyzer(_projectDefinition, _patternProject, schemaDatabase);
                    alanyzer.AnalyzeAndRename();

                    PleaseWait.WaitingState = "Generating output files";
                    // 3 ==========================
                    // Start the generator
                    var engine = new Generator(_projectDefinition, _patternProject, schemaDatabase, schemaEngine);
                    engine.Generate();

                    // Update last generation
                    _projectDefinition.LastGeneration = DateTime.Now;

                    // 4 ==========================
                    // Reaload the form
                    Refresh_Form();

                    // Abort the please wait
                    PleaseWait.Abort();

                    // Data is modified
                    SetModified(true);

                    // to active tab
                    tabMainProject.SelectedTab = tabGenFiles;
                }
        }