Ejemplo n.º 1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
 {
     if (e.Error != null)
     {
         Controller.ReportError(e.Error);
     }
     // Reset FoldersHaveBeenCreated back to false, because the user might re-generate after this run is now finished.
     FoldersHaveBeenCreated = false;
     m_workerStatus         = WorkerStatusTypes.Idle;
     RaiseFinishedEvent();
 }
Ejemplo n.º 2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
 {
     try
     {
         RootFolder = null;
         SetupFolders();
         AnalyseFiles();
         return;
     }
     catch (Exception ex)
     {
         Controller.ReportError(ex);
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Performs an in depth diff by breaking code files into their constituent parts (functions, properties
        /// etc, so that these elements can be diffed without regard to their ordering.
        /// </summary>
        /// <param name="diffFile"></param>
        private void PerformSuperDiff(ref DiffFile diffFile)
        {
            try
            {
                switch (Path.GetExtension(diffFile.Path).ToLower())
                {
                case ".cs":
                    Providers.CSharpFormatter formatter = new Providers.CSharpFormatter(diffFile.Path);
                    formatter.CreateObjectModel = true;
                    formatter.RaiseError       += formatter_RaiseError;

                    try
                    {
                        // TODO: get the code for each file type (user, generated, prevGen), then
                        // break into classes, functions etc, and  perform a diff3 on each entity.
                        // We REALLY need to store these results in the objects, so that this process
                        // happens once, when the initial population occurs, and doesn't need to happen
                        // again when the user clicks a childTreeListNode to display the text and conflicts.

                        // Reset the DiffType
                        diffFile.DiffType = TypeOfDiff.ExactCopy;

                        if (File.Exists(diffFile.FilePathPrevGen))
                        {
                            formatter.Reset();
                            formatter.CodeFilePath = diffFile.FilePathPrevGen;
                            formatter.GetFormattedCode(Slyce.Common.Utility.ReadTextFile(diffFile.FilePathPrevGen));
                            diffFile.CodeRootParent = formatter.Controller.Root;
                            diffFile.CodeRootParent.SortAllMembers();
                        }
                        if (File.Exists(diffFile.FilePathTemplate))
                        {
                            formatter.Reset();
                            formatter.CodeFilePath = diffFile.FilePathTemplate;
                            formatter.GetFormattedCode(Slyce.Common.Utility.ReadTextFile(diffFile.FilePathTemplate));
                            diffFile.CodeRootTemplate = formatter.Controller.Root;
                            diffFile.CodeRootTemplate.SortAllMembers();
                        }
                        if (File.Exists(diffFile.FilePathUser))
                        {
                            formatter.Reset();
                            formatter.CodeFilePath = diffFile.FilePathUser;
                            formatter.GetFormattedCode(Slyce.Common.Utility.ReadTextFile(diffFile.FilePathUser));
                            diffFile.CodeRootUser = formatter.Controller.Root;
                            diffFile.CodeRootUser.SortAllMembers();

                            // TODO: this check of whether the code object model has been correctly created must get removed from the final build
                            //string code = diffFile.CodeRootUser.ToString();
                            //formatter.Reset();
                            //formatter.ParseCode(code);

                            //if (!diffFile.CodeRootUser.IsTheSame(ArchAngel.Providers.CodeProvider.Controller.Root))
                            //{
                            //    throw new InvalidProgramException("The code object model has not been written correctly: " + ArchAngel.Providers.CodeProvider.CSharp.BaseConstruct.ComparisonDifference);
                            //}
                        }
                    }
                    catch (Exception ex)
                    {
                        diffFile.ParseErrorDescription = ex.Message;
                    }
                    bool ignoreAllOmits = false;

                    if (File.Exists(diffFile.FilePathTemplate) &&
                        !File.Exists(diffFile.FilePathUser))
                    {
                        // If the user file is missing, then all code objects are also going to be missing and
                        // will therefore get marked at 'Omit = true', but infact we need to generate them.
                        ignoreAllOmits = true;
                    }
                    TypeOfDiff resultingDiffType;
                    Providers.CodeProvider.CSharp.Utility utility = new Providers.CodeProvider.CSharp.Utility();
                    diffFile.CodeRootAll = utility.CreateCombinedCodeRoot(diffFile.CodeRootTemplate, diffFile.CodeRootUser, diffFile.CodeRootParent, out resultingDiffType, ignoreAllOmits);
                    diffFile.CodeRootAll.SortAllMembers();
                    diffFile.DiffType = resultingDiffType;

                    break;

                default:
                    // No SuperDiff available for this type of file (no parser created yet).
                    break;
                }
            }
            catch (Exception ex)
            {
                Controller.ReportError(ex);
            }
        }
Ejemplo n.º 4
0
        private void RefreshDatabasesAsync()
        {
            Font originalFont = comboBoxServers.Font;
            Font boldFont     = new Font(comboBoxServers.Font, FontStyle.Bold);

            try
            {
                string   server               = (string)GetCrossThreadProperty(comboBoxServers, "Text");
                string   userName             = (string)GetCrossThreadProperty(textBoxUserName, "Text");
                string   password             = (string)GetCrossThreadProperty(textBoxPassword, "Text");
                bool     useItegratedSecurity = (bool)GetCrossThreadProperty(checkBoxUseIntegratedSecurity, "Checked");
                string[] databaseNames        = new string[0];

                switch (DatabaseType)
                {
#if USE_SMO
                case ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServerDmo:
                    databaseNames = ArchAngel.SQLServerDAL_DMO.Database.GetDatabases(server, userName, password, ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServerDmo, useItegratedSecurity);
                    break;

                case ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServerSmo:
                    databaseNames = ArchAngel.SQLServerDAL_SMO.Database.GetDatabases(server, userName, password, ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServerSmo, useItegratedSecurity);
                    break;
#endif
                case ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServer2000:
                    databaseNames = ArchAngel.Providers.Database.SQLServerDAL_2000.Database.GetDatabases(server, userName, password, ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServer2000, useItegratedSecurity);
                    break;

                case ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServer2005:
                    databaseNames = ArchAngel.Providers.Database.SQLServerDAL_2005.Database.GetDatabases(server, userName, password, ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServer2005, useItegratedSecurity);
                    break;

                case ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServerExpress:
                    databaseNames = ArchAngel.Providers.Database.SQLServerDAL_Express.Database.GetDatabases(server, userName, password, ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServer2005, useItegratedSecurity);
                    break;

                default:
                    MessageBox.Show("This type of database is not yet handled: " + DatabaseType.ToString());
                    break;
                }
                CallCrossThreadMethod(comboBoxServers.Items, "Clear", null);
                SetCrossThreadProperty(comboBoxDatabases, "Text", "");
                SetCrossThreadProperty(comboBoxDatabases, "Font", originalFont);
                SetCrossThreadProperty(comboBoxDatabases, "ForeColor", Color.Black);

                foreach (string databaseName in databaseNames)
                {
                    CallCrossThreadMethod(comboBoxDatabases.Items, "Add", new object[] { databaseName });
                }
                if (comboBoxDatabases.Items.Count > 0)
                {
                    SetCrossThreadProperty(comboBoxDatabases, "SelectedIndex", 0);
                }
            }
            catch (Exception ex)
            {
                SetCrossThreadProperty(comboBoxDatabases, "Text", "");
                SetCrossThreadProperty(comboBoxDatabases, "Font", originalFont);
                SetCrossThreadProperty(comboBoxDatabases, "ForeColor", Color.Black);

                if (ex.InnerException != null && ex.InnerException.Message.IndexOf("Login failed for user") >= 0)
                {
                    MessageBox.Show("The username or password is incorrect.", "Invalid login", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else if (ex.InnerException != null && ex.InnerException.Message.ToLower().IndexOf("an error has occurred while establishing a connection to the server") >= 0)
                {
                    MessageBox.Show(string.Format("'{0}' cannot be found, or you don't have access to it.", comboBoxServers.Text), "Database not found", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else
                {
                    Controller.ReportError(ex);
                }
            }
            finally
            {
                SetCrossThreadProperty(this, "Cursor", Cursors.Default);
            }
        }
Ejemplo n.º 5
0
        private void RefreshServersAsync()
        {
            Font originalFont = comboBoxServers.Font;
            Font boldFont     = new Font(comboBoxServers.Font, FontStyle.Bold);

            try
            {
                string[] registeredServerNames = new string[0];

                switch (DatabaseType)
                {
#if USE_SMO
                case ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServerDmo:
                    registeredServerNames = ArchAngel.SQLServerDAL_DMO.SQLServer.GetSqlServers();
                    break;

                case ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServerSmo:
                    registeredServerNames = ArchAngel.SQLServerDAL_SMO.SQLServer.GetSqlServers();
                    break;
#endif
                case ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServer2000:
                    registeredServerNames = ArchAngel.Providers.Database.SQLServerDAL_2000.SQLServer.GetSqlServers();
                    break;

                case ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServer2005:
                    registeredServerNames = ArchAngel.Providers.Database.SQLServerDAL_2005.SQLServer.GetSqlServers();
                    break;

                case ArchAngel.Providers.Database.BLL.ConnectionStringHelper.DatabaseTypes.SQLServerExpress:
                    registeredServerNames = ArchAngel.Providers.Database.SQLServerDAL_Express.SQLServer.GetSqlServers();
                    break;

                default:
                    MessageBox.Show("This type of database is not yet handled: " + DatabaseType.ToString());
                    break;
                }
                CallCrossThreadMethod(comboBoxServers.Items, "Clear", null);
                SetCrossThreadProperty(comboBoxServers, "Text", "");
                SetCrossThreadProperty(comboBoxServers, "Font", originalFont);
                SetCrossThreadProperty(comboBoxServers, "ForeColor", Color.Black);

                foreach (string server in registeredServerNames)
                {
                    CallCrossThreadMethod(comboBoxServers.Items, "Add", new object[] { server });
                }
                if (comboBoxServers.Items.Count > 0)
                {
                    SetCrossThreadProperty(comboBoxServers, "SelectedIndex", 0);
                }
            }
            catch (Exception ex)
            {
                SetCrossThreadProperty(comboBoxServers, "Text", "");
                SetCrossThreadProperty(comboBoxServers, "Font", originalFont);
                SetCrossThreadProperty(comboBoxServers, "ForeColor", Color.Black);
                Controller.ReportError(ex);
            }
            finally
            {
                SetCrossThreadProperty(this, "Cursor", Cursors.Default);
            }
        }