Beispiel #1
0
        public MegaSolutionWizardPresenter(KickstartWizardModel kickstartWizard, IKickstartService kickstartService, IKickstartWizardService kickstartWizardService, IMessageBoxDisplayService messageBoxDisplayService, IKickstartWizardView kickstartWizardView, IMenuView menuView, IProjectView projectView, IProtoFileView protoFileView, IDatabaseSqlView databaseSqlView, IGenerationView generationView, IProtoToKProtoConverter protoToKProtoConverter)
        {
            _kickstartService         = kickstartService;
            _kickstartWizardService   = kickstartWizardService;
            _messageBoxDisplayService = messageBoxDisplayService;
            _kickstartWizardView      = kickstartWizardView;
            _menuView               = menuView;
            _protoFileView          = protoFileView;
            _databaseSqlView        = databaseSqlView;
            _generationView         = generationView;
            _projectView            = projectView;
            _protoToKProtoConverter = protoToKProtoConverter;

            kickstartWizardView.Load += KickstartWizardViewLoad;

            kickstartWizardView.NextClicked  += KickstartWizardViewNextClicked;
            kickstartWizardView.PreviousStep += KickstartWizardViewPreviousStep;
            protoFileView.ProtoTextChanged   += ProtoFileViewProtoTextChanged;
            databaseSqlView.GenerateStoredProcAsEmbeddedQueryChanged += (a, b) =>
            {
                _kickstartWizardModel.GenerateStoredProcAsEmbeddedQuery = _databaseSqlView.GenerateStoredProcAsEmbeddedQuery;
                return(Task.CompletedTask);
            };

            databaseSqlView.SqlStoredProcTextChanged += (a, b) =>
            {
                _kickstartWizardModel.SqlStoredProcText = _databaseSqlView.SqlStoredProcText;
                return(Task.CompletedTask);
            };

            databaseSqlView.SqlTableTextChanged += (a, b) =>
            {
                _kickstartWizardModel.SqlTableText = _databaseSqlView.SqlTableText;
                return(Task.CompletedTask);
            };

            databaseSqlView.SqlTableTypeTextChanged += (a, b) =>
            {
                _kickstartWizardModel.SqlTableTypeText = _databaseSqlView.SqlTableTypeText;
                return(Task.CompletedTask);
            };

            _kickstartWizardModel = kickstartWizard;

            kickstartWizardView.AddView(menuView);
            kickstartWizardView.AddView(protoFileView);
            kickstartWizardView.AddView(databaseSqlView);
            kickstartWizardView.AddView(generationView);

            //where should this go in MVP ?
            _projectView.SolutionName = _kickstartWizardModel.SolutionName;
            _projectView.CompanyName  = _kickstartWizardModel.CompanyName;
            _projectView.ProjectName  = _kickstartWizardModel.ProjectName;
        }
Beispiel #2
0
        public void RunStarted(object automationObject, Dictionary <string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
        {
            var resultOfPrompt = MessageBox.Show("Use winforms?", "", MessageBoxButtons.YesNo);

            AppDomain currentDomain = AppDomain.CurrentDomain;

            currentDomain.AssemblyResolve += CurrentDomainOnAssemblyResolve;


            _dte = (DTE)automationObject;

            _projectDirectory = replacementsDictionary["$destinationdirectory$"];

            var serviceCollection = new ServiceCollection();

            serviceCollection.AddLogging();
            //var logger = new LoggerConfiguration()
            //    .CreateLogger();

            var configuration = new ConfigurationBuilder()
                                .AddJsonFile(Path.Combine(AssemblyDirectory, "appsettings.json"), false)
                                .Build();

            serviceCollection.AddSingleton(configuration);

            //serviceCollection.AddSingleton(typeof(ILogger<>), typeof(Logger<>));

            //serviceCollection.AddSingleton(typeof(Serilog.ILogger), logger);
            var serviceProvider = serviceCollection.ConfigureContainer();

            var loggerFactory = serviceProvider.GetService <ILoggerFactory>();

            ConfigureLogger(loggerFactory);

            var prereqChecker = serviceProvider.GetService <IPrereqChecker>();

            if (!prereqChecker.CheckGrpcNugets())
            {
                MessageBox.Show("Grpc tools (Nugets) have not been installed");
                throw new WizardBackoutException();
            }

            _kickstartWizardPresenter = serviceProvider.GetRequiredService <IKickstartWizardPresenter>();
            var kickstartService = serviceProvider.GetRequiredService <IKickstartService>();


            //List<KSolutionGroup> unfiliteredSolutionGroupList = service.GetSolutionGroupListFromCode(); ;
            //pass1
            //read metadata from code/sql/proto files into K objects
            //unfiliteredSolutionGroupList = service.GetSolutionGroupListFromExcel();
            var kickstartWizard = new KickstartWizardModel()
            {
                SolutionName = replacementsDictionary["$specifiedsolutionname$"],
                CompanyName  = "Company",
                ProjectName  = replacementsDictionary["$specifiedsolutionname$"],
                // _dialog.AvailableTemplateSolutions = unfiliteredSolutionGroupList.SelectMany(g => g.Solution).ToList();

                ProjectDirectory = _projectDirectory
            };

            if (resultOfPrompt == DialogResult.Yes)
            {
                _dialog = new KickstartWizardDialog();
            }
            else
            {
                _dialog = new KickstartWizardDialogWeb();
            }

            var menuView = new MenuStep();

            menuView.Tag = new MenuPresenter(kickstartWizard, menuView);

            /*   _kickstartWizardPresenter = new KickstartWizardPresenter(kickstartWizard, kickstartService,
             *     new KickstartWizardService( new ProtoToKProtoConverter(configuration), new SProtoFileToProtoFileConverter(), new KDataLayerProjectToKProtoFileConverter(), new DbToKSolutionConverter(new SqlServerTableTypeReader(), new SqlServerTableReader(), new SqlServerTableToCTableConverter(), new SqlServerViewReader(), new SqlServerViewToCViewConverter()), new DataLayerServiceFactory(null)),
             *     new MessageBoxDisplayService(), _dialog, menuView, _dialog.ProjectView, new ProtoFileStep(), new DatabaseSqlStep(), new GenerationStep(), new ProtoToKProtoConverter(configuration) );
             */
            _dialog.Tag = _kickstartWizardPresenter;
            var exclusiveProject = Boolean.Parse(replacementsDictionary["$exclusiveproject$"]);
            var parentWindow     = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle; // Control.FromHandle(new IntPtr(_dte.ActiveWindow.HWnd));
            var result           = (DialogResult)_dialog.ShowDialog(parentWindow);

            if (result == DialogResult.Cancel)
            {
                throw new WizardBackoutException();
            }

            replacementsDictionary["$specifiedsolutionname$"] = kickstartWizard.SolutionName;

            if (exclusiveProject)
            {
                if (kickstartWizard.SelectedTemplateSolutions.Count > 1 || kickstartWizard.SelectedTemplateSolutions.Count > 1)
                {
                    //open the root "master" solution
                    var solutionName = $"{kickstartWizard.SolutionName}.sln";

                    var fullSolutionPath = Path.Combine(kickstartWizard.ProjectDirectory, solutionName);

                    _dte.Solution.Open(fullSolutionPath);
                }
                else
                {
                    _dte.Solution.Open(kickstartWizard.SelectedTemplateSolutions.First().GeneratedSolution.SolutionPath);
                }
            }
            else
            {
                foreach (var solution2 in kickstartWizard.SelectedTemplateSolutions)
                {
                    foreach (var project in solution2.GeneratedSolution.Project)
                    {
                        try
                        {
                            _dte.Solution.AddFromFile(project.Path);
                        }
                        catch
                        {
                        }
                    }
                }
            }

            throw new WizardCancelledException();
        }