Exemple #1
0
        public SelectTable(string data, string id, string name)
        {
            Dictionary <string, string> dic = new Dictionary <string, string>(); // Color matching

            table = new Table();
            table.SetId(id);
            table.SetName(name);
            table.columns = new List <Column>();
            // Loops through all the columns for this table.
            int columnCounter = 0;

            while (true)
            {
                columnCounter++;
                Column col = new Column();
                col.SetName(data.Substring(0, data.IndexOf(":")));
                col.SetId("T:" + name + "-C:" + columnCounter);
                // If column exists elsewhere, use same color.
                if (dic.ContainsKey(col.GetName()))
                {
                    col.SetColor(dic[col.GetName()]);
                }
                else
                {
                    string c = DatabaseBuilder.GetRandomColor();
                    dic.Add(col.GetName(), c);
                    col.SetColor(c);
                }
                col.fields = new List <string>();
                data       = data.Substring(data.IndexOf("[") + 1);

                // Loops through all the fields for this column.
                do
                {
                    if (data.IndexOf(",") != -1 && data.IndexOf(",") < data.IndexOf("]"))
                    {
                        col.AddField(data.Substring(0, data.IndexOf(",")));
                        data = data.Substring(data.IndexOf(",") + 1); // There's a 'next' field
                    }
                    else
                    {
                        col.AddField(data.Substring(0, data.IndexOf("]")));
                        data = data.Substring(data.IndexOf("]") + 1);
                        break;
                    }
                } while (true);
                table.AddColumn(col);
                if (data.Substring(0, 1).Equals(","))
                {
                    data = data.Substring(1); // There's a 'next' column
                }
                else
                {
                    data = data.Substring(1);
                    break;
                }
            }
        }
Exemple #2
0
        // Returns a duplicate of the main DB, but with colors specific to foreign key references.
        public static Database ChangeColorsForKeys(string tabId, string colId)
        {
            Database db = new Database();

            db = DatabaseBuilder.Clone(VedicDatabase.db);
            db.SetName("Analytic_3");
            Table[] tabs     = VedicDatabase.db.tables.ToArray();
            int     tabIndex = -1;
            int     colIndex = -1;

            for (int j = 0; j < VedicDatabase.db.tables.Count; j++)
            {
                if (VedicDatabase.db.tables[j].GetId() == tabId)
                {
                    tabIndex = j;
                    break;
                }
            }
            if (tabIndex < 0)
            {
                return(VedicDatabase.db);
            }
            for (int k = 0; k < VedicDatabase.db.tables[tabIndex].columns.Count; k++)
            {
                if (VedicDatabase.db.tables[tabIndex].columns[k].GetId() == colId)
                {
                    colIndex = k;
                    break;
                }
            }
            if (colIndex < 0)
            {
                return(VedicDatabase.db);
            }

            for (int m = 0; m < db.tables.Count; m++)
            {
                for (int n = 0; n < db.tables[m].columns.Count; n++)
                {
                    db.tables[m].columns[n].SetColor("#000000");
                }
            }
            db.tables[tabIndex].columns[colIndex].SetColor("#FF0000");
            if (VedicDatabase.db.tables[tabIndex].columns[colIndex].keys.Count > 0)
            {
                for (int x = 0; x < VedicDatabase.db.tables[tabIndex].columns[colIndex].keys.Count; x++)
                {
                    bool foundIt = false;
                    for (int y = 0; y < VedicDatabase.db.tables.Count; y++)
                    {
                        if (VedicDatabase.db.tables[y].GetName() == VedicDatabase.db.tables[tabIndex].columns[colIndex].keys[x].Item1)
                        {
                            for (int z = 0; z < VedicDatabase.db.tables[y].columns.Count; z++)
                            {
                                if (VedicDatabase.db.tables[y].columns[z].GetName() == VedicDatabase.db.tables[tabIndex].columns[colIndex].keys[x].Item2)
                                {
                                    db.tables[y].columns[z].SetColor("#0000FF");
                                    foundIt = true;
                                    break;
                                }
                            }
                        }
                        if (foundIt)
                        {
                            break;
                        }
                    }
                }
            }
            return(db);
        }