Beispiel #1
0
        public GenerateTestDataUI(IActivateItems activator, ICommandExecution command) : base(activator)
        {
            InitializeComponent();

            var dataGeneratorFactory = new DataGeneratorFactory();

            int yLoc = 0;

            foreach (Type t in dataGeneratorFactory.GetAvailableGenerators())
            {
                var ui = new DataGeneratorUI();
                ui.Generator = dataGeneratorFactory.Create(t, new Random());
                ui.Location  = new Point(0, yLoc);
                yLoc        += ui.Height;
                pDatasets.Controls.Add(ui);
            }

            lblDirectory.Visible = false;

            EnableOrDisableGoButton();

            if (command != null)
            {
                BuildHelpWorkflow(command);
            }

            helpIcon1.SetHelpText("Tutorial", "Click for tutorial", HelpWorkflow);
        }
Beispiel #2
0
        private void btnGenerate_Click(object sender, EventArgs e)
        {
            var uis = pDatasets.Controls.OfType <DataGeneratorUI>().Where(ui => ui.Generate).ToArray();

            if (!uis.Any())
            {
                MessageBox.Show("At least one dataset must be selected");
                return;
            }

            try
            {
                if (started)
                {
                    MessageBox.Show("Generation already in progress");
                    return;
                }

                started = true;


                var r = _seed.HasValue ? new Random(_seed.Value):new Random();


                var identifiers = new PersonCollection();
                identifiers.GeneratePeople(populationSize, r);

                if (cbLookups.Checked)
                {
                    DataGenerator.WriteLookups(_extractDirectory);
                }

                //run them at the same time
                if (!_seed.HasValue)
                {
                    foreach (DataGeneratorUI ui in uis)
                    {
                        Executing.Add(ui);
                        ui.BeginGeneration(identifiers, _extractDirectory);
                        DataGeneratorUI ui1 = ui;
                        ui.Completed += () => { Executing.Remove(ui1); AnnounceIfComplete(); };
                    }
                }
                else
                {
                    Queue <DataGeneratorUI> queue = new Queue <DataGeneratorUI>(uis);
                    Execute(identifiers, queue, queue.Dequeue(), r);
                }

                UsefulStuff.GetInstance().ShowFolderInWindowsExplorer(_extractDirectory);
            }
            catch (Exception exception)
            {
                ExceptionViewer.Show(exception);
            }
        }
Beispiel #3
0
        private void Execute(PersonCollection identifiers, Queue <DataGeneratorUI> queue, DataGeneratorUI current, Random r)
        {
            if (current == null)
            {
                return;
            }

            //tell form it is running
            Executing.Add(current);

            var dataGeneratorFactory = new DataGeneratorFactory();

            //reset the current generator to use the seed provided
            current.Generator = dataGeneratorFactory.Create(current.Generator.GetType(), r);


            current.BeginGeneration(identifiers, _extractDirectory);

            //when it is complete
            current.Completed += () =>
            {
                if (queue.Count != 0)
                {
                    Execute(identifiers, queue, queue.Dequeue(), r);
                }

                Executing.Remove(current);
                AnnounceIfComplete();
            };
        }