示例#1
0
        public static DotNetType GetDotNetType(string databaseTypeName, ColumnInfo column)
        {
            DotNetType type;
            DotNetType processedType = null;
            string     processedName;

            switch (databaseTypeName)
            {
            case "SQLServer2005":
            case "SQLServerExpress":
            case "SQLCE":
                type          = SqlServerTypes.GetDotNetType(column.TypeName, DatabaseTypes.SqlServer);
                processedName = Scripts.PostProcessSqlServerType(column, type.Name);
                break;

            case "Oracle":
                type          = OracleTypes.GetDotNetType(column.TypeName, DatabaseTypes.Oracle);
                processedName = Scripts.PostProcessOracleType(column, type.Name);
                break;

            case "MySQL":
                type          = MySqlTypes.GetDotNetType(column.TypeName, DatabaseTypes.MySql);
                processedName = Scripts.PostProcessMySqlType(column, type.Name);
                break;

            case "PostgreSQL":
                type          = PostgreSqlTypes.GetDotNetType(column.TypeName, DatabaseTypes.PostgreSql);
                processedName = Scripts.PostProcessPostgreSqlType(column, type.Name);
                break;

            case "Firebird":
                type          = FirebirdTypes.GetDotNetType(column.TypeName, DatabaseTypes.Firebird);
                processedName = Scripts.PostProcessFirebirdType(column, type.Name);
                break;

            case "SQLite":
                type          = SQLiteTypes.GetDotNetType(column.TypeName, DatabaseTypes.SQLite);
                processedName = Scripts.PostProcessSQLiteType(column, type.Name);
                break;

            default: throw new NotImplementedException("Database type not handled yet: " + databaseTypeName);
            }
            processedType = DotNetTypes.SingleOrDefault(t => t.Name.ToLowerInvariant() == processedName.ToLowerInvariant());

            if (processedType == null)
            {
                throw new Exception(string.Format("Post-processing script returned null for type [{0}]", type.Name));
            }

            return(processedType);
        }
示例#2
0
        private static void AddMap(List <DatabaseTypeMap> mapCollection, XmlNodeList nodes)
        {
            foreach (XmlNode node in nodes)
            {
                string typeName       = node.Attributes["type"].Value;
                string dotnetTypeName = node.Attributes["dotnet"].Value;

                DotNetType      dotnetType = DotNetTypes.SingleOrDefault(t => t.Name.ToLowerInvariant() == dotnetTypeName.ToLowerInvariant());
                DatabaseTypeMap map        = mapCollection.SingleOrDefault(c => c.TypeName.ToLowerInvariant() == typeName.ToLowerInvariant());

                if (map != null)
                {
                    map.DotNetType = dotnetType;
                }
                else
                {
                    mapCollection.Add(new DatabaseTypeMap(typeName, dotnetType));
                }
            }
        }
        public static string GetDefaultDatabaseType(this List <DatabaseTypeMap> maps, Utility.DatabaseTypes dbType, string dotnetTypeName)
        {
            DotNetType dotNetType = GetDotNetTypeinternalFromDotNetType(maps, dotnetTypeName, dbType);

            if (dotNetType == null)
            {
                return(null);
            }

            switch (dbType)
            {
            case Utility.DatabaseTypes.Firebird: return(dotNetType.FirebirdName);

            case Utility.DatabaseTypes.MySql: return(dotNetType.MySqlName);

            case Utility.DatabaseTypes.Oracle: return(dotNetType.OracleName);

            case Utility.DatabaseTypes.PostgreSql: return(dotNetType.PostgreSqlName);

            case Utility.DatabaseTypes.SqlServer: return(dotNetType.SqlServerName);

            default: throw new NotImplementedException("Database type not handled yet: " + dbType.ToString());
            }
        }
        private string GetDisplayTextForTypeUsages(string heading, IEnumerable<DatabaseTypeMap> maps, DotNetType dotNetType)
        {
            var filteredMaps = maps.Where(s => s.DotNetType == dotNetType);

            if (filteredMaps.Count() > 0)
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine(string.Format("{0}{0}{0}<b>{1}</b>", SPACE, heading));

                foreach (DatabaseTypeMap map in filteredMaps)
                    sb.AppendLine(string.Format("<br/>{0}{0}{0}{0}{1}", SPACE, map.TypeName));

                sb.AppendLine(string.Format("<br/><br/>", heading));
                return sb.ToString();
            }
            return "";
        }
        private void dataGridViewCSharp_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {
            if (BusyPopulating)
                return;

            DataGridView grid = (DataGridView)sender;

            for (int i = 0; i < e.RowCount; i++)
            {
                DataGridViewRow row = grid.Rows[e.RowIndex + i - 1];
                DotNetType dotnetType = new DotNetType();
                Utility.DotNetTypes.Add(dotnetType);
                row.Tag = dotnetType;
            }
        }
示例#6
0
        private string GetDisplayText(DotNetType dotNetType)
        {
            if (dotNetType == null)
                return "";

            return dotNetType.Name;
        }
        public static string GetVbType(this List <DatabaseTypeMap> maps, string typeName, Utility.DatabaseTypes databaseType)
        {
            DotNetType t = GetDotNetTypeinternalFromDatabaseType(maps, typeName, databaseType);

            return(t == null ? null : t.VbName);
        }
示例#8
0
        private void buttonOk_Click(object sender, EventArgs e)
        {
            if (checkBoxExisting.Checked && comboBoxCSharpTypes.SelectedItem == null)
            {
                MessageBox.Show(this, "Please select a .Net type.", "Missing value", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (checkBoxNew.Checked && (string.IsNullOrWhiteSpace(textBoxDotNetType.Text) || string.IsNullOrWhiteSpace(textBoxCSharpType.Text)))
            {
                MessageBox.Show(this, "You need to enter .Net and C# types.", "Missing values", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            DotNetType dotnetType = null;

            if (checkBoxExisting.Checked)
            {
                dotnetType = Utility.DotNetTypes.SingleOrDefault(testc => testc.Name == comboBoxCSharpTypes.Text);
            }
            else
            {
                Utility.DotNetTypes.SingleOrDefault(t => t.Name.ToLowerInvariant() == textBoxDotNetType.Text.Trim().ToLowerInvariant());

                if (dotnetType == null)
                {
                    dotnetType = new DotNetType()
                    {
                        Name = textBoxDotNetType.Text.Trim(), CSharpName = textBoxCSharpType.Text.Trim()
                    };
                    ArchAngel.Interfaces.ProjectOptions.TypeMappings.Utility.DotNetTypes.Add(dotnetType);
                }
            }
            List <DatabaseTypeMap> maps;

            switch (Database)
            {
            case Utility.DatabaseTypes.Firebird:
                maps = Utility.FirebirdTypes;
                break;

            case Utility.DatabaseTypes.MySql:
                maps = Utility.MySqlTypes;
                break;

            case Utility.DatabaseTypes.Oracle:
                maps = Utility.OracleTypes;
                break;

            case Utility.DatabaseTypes.PostgreSql:
                maps = Utility.PostgreSqlTypes;
                break;

            case Utility.DatabaseTypes.SqlServer:
                maps = Utility.SqlServerTypes;
                break;

            case Utility.DatabaseTypes.SQLite:
                maps = Utility.SQLiteTypes;
                break;

            default:
                throw new NotImplementedException("Database type not handled yet: " + Database.ToString());
            }
            DatabaseTypeMap newDBType = new DatabaseTypeMap("", null);

            newDBType.TypeName   = labelDatabaseType.Text;
            newDBType.DotNetType = dotnetType;
            maps.Add(newDBType);
            DotNetType = dotnetType;
            Utility.SaveSettings();
            Close();
        }
示例#9
0
        private static void LoadSettings(string xml)
        {
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);

            foreach (XmlNode node in doc.SelectNodes(@"type-maps/dotnet-types/dotnet"))
            {
                string name       = node.Attributes["name"].Value;
                string csharpType = node.Attributes["csharp"].Value;
                string vbType     = node.Attributes["vb"].Value;
                string sqlServer  = node.Attributes["sqlserver"].Value;
                string oracle     = node.Attributes["oracle"].Value;
                string mysql      = node.Attributes["mysql"].Value;
                string postgresql = node.Attributes["postgresql"].Value;
                string firebird   = node.Attributes["firebird"].Value;
                string sqlite     = node.Attributes["sqlite"] != null ? node.Attributes["sqlite"].Value : "";

                DotNetType dotNetType = DotNetTypes.SingleOrDefault(u => u.Name.ToLowerInvariant() == name.ToLowerInvariant());

                if (dotNetType != null)
                {
                    dotNetType.CSharpName     = csharpType;
                    dotNetType.VbName         = csharpType;
                    dotNetType.SqlServerName  = sqlServer;
                    dotNetType.OracleName     = oracle;
                    dotNetType.MySqlName      = mysql;
                    dotNetType.PostgreSqlName = postgresql;
                    dotNetType.FirebirdName   = firebird;
                    dotNetType.SQLiteName     = sqlite;
                }
                else
                {
                    DotNetTypes.Add(new DotNetType(name, csharpType, vbType, sqlServer, oracle, mysql, postgresql, firebird, sqlite));
                }
            }
            AddMap(SqlServerTypes, doc.SelectNodes(@"type-maps/sql-server-maps/map"));
            AddMap(OracleTypes, doc.SelectNodes(@"type-maps/oracle-maps/map"));
            AddMap(MySqlTypes, doc.SelectNodes(@"type-maps/mysql-maps/map"));
            AddMap(PostgreSqlTypes, doc.SelectNodes(@"type-maps/postgresql-maps/map"));
            AddMap(FirebirdTypes, doc.SelectNodes(@"type-maps/firebird-maps/map"));
            AddMap(SQLiteTypes, doc.SelectNodes(@"type-maps/sqlite-maps/map"));

            if (doc.SelectSingleNode(@"type-maps/scripts/sqlserver") != null)
            {
                PostProcessSciptSqlServer = doc.SelectSingleNode(@"type-maps/scripts/sqlserver").InnerText;
            }

            if (doc.SelectSingleNode(@"type-maps/scripts/oracle") != null)
            {
                PostProcessSciptOracle = doc.SelectSingleNode(@"type-maps/scripts/oracle").InnerText;
            }

            if (doc.SelectSingleNode(@"type-maps/scripts/mysql") != null)
            {
                PostProcessSciptMySql = doc.SelectSingleNode(@"type-maps/scripts/mysql").InnerText;
            }

            if (doc.SelectSingleNode(@"type-maps/scripts/postgresql") != null)
            {
                PostProcessSciptPostgreSql = doc.SelectSingleNode(@"type-maps/scripts/postgresql").InnerText;
            }

            if (doc.SelectSingleNode(@"type-maps/scripts/firebird") != null)
            {
                PostProcessSciptFirebird = doc.SelectSingleNode(@"type-maps/scripts/firebird").InnerText;
            }

            if (doc.SelectSingleNode(@"type-maps/scripts/sqlite") != null)
            {
                PostProcessSciptSQLite = doc.SelectSingleNode(@"type-maps/scripts/sqlite").InnerText;
            }
        }