private void ViewItem_Expanded(object sender, EventArgs e, DataTreeItem citem) { if (!citem.ChildSearched) { SetRelationsDataItem(citem); } }
public void SetAreaInitializer(DataTreeAreaInitializer initParam) { View = AgentUICoreMediator.GetAgentUICoreMediator.UIManager.GetViewOfDataTree(); View.DataAreaConfirmed += View_DataAreaConfirmed; View.ContextMenuLoaded += View_ContextMenuLoaded; AreaInitializer = initParam; if (AreaInitializer.FirstDataItem != null) { DataTreeItem item = ToDataItemNode(null, AreaInitializer.FirstDataItem, true, false); foreach (var rItem in AreaInitializer.RelationshipTails) { DataTreeItem citem = ToRelationItemNode(item, item.DataItem, rItem, false, !initParam.RelationshipTailsLoaded); item.ChildNodes.Add(citem); if (initParam.RelationshipTailsLoaded) { SetRelationsDataItem(citem); } else { citem.ViewItem.Expanded += (sender, e) => ViewItem_Expanded(sender, e, citem); } } item.ChildSearched = true; } }
public void Select(DP_DataView dataInstance) { DataTreeItem item = GetDataTreeItem(dataInstance); if (item != null) { item.ViewItem.IsSelected = true; } }
//private void ViewMenu_Cliecked(object sender, EventArgs e, DynamicContextMenu menu) //{ // menu.OnClicked(); //} private DataTreeItem ToRelationItemNode(DataTreeItem parentItem, DP_DataView relatedItem, EntityRelationshipTailDTO relation, bool selectable, bool tempChild) { DataTreeItem item = new DataTreeItem(); item.DataItem = relatedItem; item.Relation = relation; item.ItemType = DataTreeItemType.Relation; item.ViewItem = parentItem.ViewItem.AddNode(relation.EntityPath, selectable, tempChild); //item.ViewItem.ContextMenuLoaded += (sender, e) => ViewItem_ContextMenuLoaded(sender, e, item); DataTreeItems.Add(item); return(item); }
private void SetRelationsDataItem(DataTreeItem citem) { var requester = AgentUICoreMediator.GetAgentUICoreMediator.GetRequester(); var searchDataTuple = AgentUICoreMediator.GetAgentUICoreMediator.RelationshipTailDataManager.GetTargetSearchItemFromRelationshipTail(citem.DataItem, citem.Relation); DR_SearchViewRequest request = new DR_SearchViewRequest(requester, searchDataTuple); var searchResult = AgentUICoreMediator.GetAgentUICoreMediator.requestRegistration.SendSearchViewRequest(request); citem.ViewItem.ClearChildNodes(); foreach (var relatedItem in searchResult.ResultDataItems) { var relatedkeyColumns = relatedItem.KeyProperties; citem.ChildNodes.Add(ToDataItemNode(citem, relatedItem, true, AreaInitializer.ExpandableMore)); } citem.ChildSearched = true; }
private DataTreeItem ToDataItemNode(DataTreeItem parentItem, DP_DataView relatedItem, bool selectable, bool tempChild) { DataTreeItem item = new DataTreeItem(); item.DataItem = relatedItem; item.ItemType = DataTreeItemType.DataItem; if (parentItem == null) { item.ViewItem = View.AddRootNode(item.DataItem.ViewInfo, selectable, tempChild); } else { item.ViewItem = parentItem.ViewItem.AddNode(item.DataItem.ViewInfo, selectable, tempChild); } DataTreeItems.Add(item); return(item); }
private static List <DataTreeItem> readBranch(GameObject rootGameObject) { CheckNodeName(rootGameObject); List <DataTreeItem> list = new List <DataTreeItem>(); for (int i = 0; i < rootGameObject.transform.childCount; ++i) { GameObject go = rootGameObject.transform.GetChild(i).gameObject; ReddotEditItem rei = go.GetComponent <ReddotEditItem>(); DataTreeItem dti = new DataTreeItem(); dti.go = go; if (!rei.luaScriptName.Equals("")) { dti.luaScriptName = rei.luaScriptName; dti.luaFunctionName = rei.luaFunctionName; } if (dti.go.transform.childCount > 0) { dti.children = readBranch(go); } else { CheckNodeName(dti.go); } dti.paramList = rei.paramList; dti.shuldPassParam = rei.shuldPassParam; list.Add(dti); if (dti.shuldPassParam) { for (int j = 0; j < dti.paramList.Count; ++j) { if (dti.paramList[j].IndexOf(".") >= 0) { Debug.LogError("参数名不合法: " + dti.go.name); } } } } return(list); }
private static void GenerateCodeToString(ref string str, DataTreeItem dataTreeItem) { for (int i = 0; i < dataTreeItem.children.Count; ++i) { GenerateCodeToString(ref str, dataTreeItem.children[i]); } str = str + "function ReddotManager:" + dataTreeItem.gen_funcname + "("; if (dataTreeItem.shuldPassParam) { for (int i = 0; i < dataTreeItem.paramList.Count; ++i) { if (i > 0) { str = str + ", "; } str = str + dataTreeItem.paramList[i]; } } str = str + ")\n"; str = str + " return " + dataTreeItem.gen_funcCode; str = str + "end\n\n"; }
private void PopulateFunctions(TreeNode parentNode) { try { var itemCache = new SortedList<string, DataTreeItem>(); //Current Items foreach (var function in this.CurrentDatabase.FunctionList) { var dti = new DataTreeItem(function.Name, function) { SourceItem = function }; if (this.NewDatabase.FunctionList.Contains(function.Name)) dti.Name = this.NewDatabase.FunctionList.GetItem(function.Name).Name; //Check for deleted status if (!this.NewDatabase.FunctionList.Contains(function.Name)) dti.State = nHydrate.DataImport.ImportStateConstants.Deleted; else if (this.NewDatabase.FunctionList.GetItem(function.Name).CorePropertiesHash != function.CorePropertiesHash) { dti.State = nHydrate.DataImport.ImportStateConstants.Modified; dti.TargetItem = this.NewDatabase.FunctionList.GetItem(function.Name); } else if (this.NewDatabase.FunctionList.GetItem(function.Name).FieldList.GetCorePropertiesHash() != function.FieldList.GetCorePropertiesHash()) { dti.State = nHydrate.DataImport.ImportStateConstants.Modified; dti.TargetItem = this.NewDatabase.FunctionList.GetItem(function.Name); } if (!itemCache.ContainsKey(function.Name.ToLower())) itemCache.Add(function.Name.ToLower(), dti); } //Added Items foreach (var t in this.NewDatabase.FunctionList) { if (!this.CurrentDatabase.FunctionList.Contains(t.Name)) itemCache.Add(t.Name.ToLower(), new DataTreeItem(t.Name, nHydrate.DataImport.ImportStateConstants.Added) { TargetItem = t }); } //Now add to tree foreach (var functionKey in itemCache.Keys) { var newNode = new TreeNode(itemCache[functionKey].Name); newNode.Checked = false; newNode.Tag = itemCache[functionKey]; parentNode.Nodes.Add(newNode); var oldFunction = this.CurrentDatabase.FunctionList.GetItem(functionKey); var newFunction = this.NewDatabase.FunctionList.GetItem(functionKey); if (oldFunction == null) oldFunction = new nHydrate.DataImport.Function(); if (newFunction == null) newFunction = new nHydrate.DataImport.Function(); //Create list of all columns (new and old) var columns = new SortedList<string, DataTreeItem>(); foreach (var column in oldFunction.FieldList) { var dti = new DataTreeItem(column.Name); //Check for deleted status if (this.NewDatabase.FunctionList.Contains(itemCache[oldFunction.Name.ToLower()].Name)) { var statusColumn = this.NewDatabase.FunctionList.GetItem(itemCache[oldFunction.Name.ToLower()].Name).FieldList.FirstOrDefault(x => x.Name == column.Name); if (statusColumn == null) dti.State = nHydrate.DataImport.ImportStateConstants.Deleted; else if (column.CorePropertiesHash != statusColumn.CorePropertiesHash) dti.State = nHydrate.DataImport.ImportStateConstants.Modified; } columns.Add(column.Name.ToLower(), dti); } } } catch (Exception ex) { throw; } }
private void PopulateDataSchema(TreeNode parentNode) { try { var itemCache = new SortedList<string, DataTreeItem>(); //Current Tables foreach (var t in this.CurrentDatabase.EntityList) { var dti = new DataTreeItem(t.Name, t) { SourceItem = t }; if (this.NewDatabase.EntityList.Count(x => x.Name.ToLower() == t.Name.ToLower()) > 0) dti.Name = this.NewDatabase.EntityList.First(x => x.Name.ToLower() == t.Name.ToLower()).Name; //Check for deleted status if (this.NewDatabase.EntityList.Count(x => x.Name.ToLower() == t.Name.ToLower()) == 0) dti.State = nHydrate.DataImport.ImportStateConstants.Deleted; else if (this.NewDatabase.EntityList.First(x => x.Name.ToLower() == t.Name.ToLower()).CorePropertiesHash != t.CorePropertiesHash) { dti.State = nHydrate.DataImport.ImportStateConstants.Modified; dti.TargetItem = this.NewDatabase.EntityList.First(x => x.Name.ToLower() == t.Name.ToLower()); } else if (this.NewDatabase.EntityList.First(x => x.Name.ToLower() == t.Name.ToLower()).FieldList.GetCorePropertiesHash() != t.FieldList.GetCorePropertiesHash()) { dti.State = nHydrate.DataImport.ImportStateConstants.Modified; dti.TargetItem = this.NewDatabase.EntityList.First(x => x.Name.ToLower() == t.Name.ToLower()); } if (!itemCache.ContainsKey(t.Name.ToLower())) itemCache.Add(t.Name.ToLower(), dti); } //Added Tables foreach (var t in this.NewDatabase.EntityList) { if (this.CurrentDatabase.EntityList.Count(x => x.Name.ToLower() == t.Name.ToLower()) == 0) itemCache.Add(t.Name.ToLower(), new DataTreeItem(t.Name, nHydrate.DataImport.ImportStateConstants.Added) { TargetItem = t }); } //Now add to tree foreach (var tableKey in itemCache.Keys) { var tableNode = new TreeNode(itemCache[tableKey].Name); tableNode.Checked = false; tableNode.ImageIndex = 3; tableNode.Tag = itemCache[tableKey]; parentNode.Nodes.Add(tableNode); var oldTable = this.CurrentDatabase.EntityList.FirstOrDefault(x => x.Name.ToLower() == tableKey.ToLower()); var newTable = this.NewDatabase.EntityList.FirstOrDefault(x => x.Name.ToLower() == tableKey.ToLower()); if (oldTable == null) oldTable = new nHydrate.DataImport.Entity(); if (newTable == null) newTable = new nHydrate.DataImport.Entity(); //Create list of all columns (new and old) var columns = new SortedList<string, DataTreeItem>(); foreach (var column in oldTable.FieldList) { var dti = new DataTreeItem(column.Name); //Check for deleted status if (this.NewDatabase.EntityList.Count(x => x.Name.ToLower() == itemCache[oldTable.Name.ToLower()].Name.ToLower()) > 0) { var statusTable = this.NewDatabase.EntityList.FirstOrDefault(x => x.Name.ToLower() == itemCache[oldTable.Name.ToLower()].Name.ToLower()); if (statusTable != null) { var statusColumn = statusTable.FieldList.FirstOrDefault(x => x.Name.ToLower() == column.Name.ToLower()); if (statusColumn == null) dti.State = nHydrate.DataImport.ImportStateConstants.Deleted; else if (column.CorePropertiesHash != statusColumn.CorePropertiesHash) dti.State = nHydrate.DataImport.ImportStateConstants.Modified; } } columns.Add(column.Name.ToLower(), dti); } } } catch (Exception ex) { throw; } }
private void PopulateViews(TreeNode parentNode) { try { var itemCache = new SortedList <string, DataTreeItem>(); //Current Items foreach (var view in this.CurrentDatabase.ViewList) { var dti = new DataTreeItem(view.Name, view) { SourceItem = view }; if (this.NewDatabase.ViewList.Count(x => x.Name == view.Name) > 0) { dti.Name = this.NewDatabase.ViewList.FirstOrDefault(x => x.Name == view.Name).Name; } //Check for deleted status if (this.NewDatabase.ViewList.Count(x => x.Name == view.Name) == 0) { dti.State = nHydrate.DataImport.ImportStateConstants.Deleted; } else if (this.NewDatabase.ViewList.First(x => x.Name == view.Name).CorePropertiesHash != view.CorePropertiesHash) { dti.State = nHydrate.DataImport.ImportStateConstants.Modified; dti.TargetItem = this.NewDatabase.ViewList.First(x => x.Name == view.Name); } else if (this.NewDatabase.ViewList.First(x => x.Name == view.Name).FieldList.GetCorePropertiesHash() != view.FieldList.GetCorePropertiesHash()) { dti.State = nHydrate.DataImport.ImportStateConstants.Modified; dti.TargetItem = this.NewDatabase.ViewList.First(x => x.Name == view.Name); } if (!itemCache.ContainsKey(view.Name.ToLower())) { itemCache.Add(view.Name.ToLower(), dti); } } //Added Items foreach (var t in this.NewDatabase.ViewList) { if (this.CurrentDatabase.ViewList.Count(x => x.Name == t.Name) == 0) { itemCache.Add(t.Name.ToLower(), new DataTreeItem(t.Name, nHydrate.DataImport.ImportStateConstants.Added) { TargetItem = t }); } } //Now add to tree foreach (var viewKey in itemCache.Keys) { var viewNode = new TreeNode(itemCache[viewKey].Name); viewNode.Checked = false; viewNode.ImageIndex = 4; viewNode.Tag = itemCache[viewKey]; parentNode.Nodes.Add(viewNode); var oldView = this.CurrentDatabase.ViewList.FirstOrDefault(x => x.Name == viewKey); var newView = this.NewDatabase.ViewList.FirstOrDefault(x => x.Name == viewKey); if (oldView == null) { oldView = new nHydrate.DataImport.View(); } if (newView == null) { newView = new nHydrate.DataImport.View(); } //Create list of all columns (new and old) var columns = new SortedList <string, DataTreeItem>(); foreach (var column in oldView.FieldList) { var dti = new DataTreeItem(column.Name); //Check for deleted status if (this.NewDatabase.ViewList.Count(x => x.Name == itemCache[oldView.Name.ToLower()].Name) > 0) { var statusColumn = this.NewDatabase.ViewList.First(x => x.Name == itemCache[oldView.Name.ToLower()].Name).FieldList.FirstOrDefault(x => x.Name == column.Name); if (statusColumn == null) { dti.State = nHydrate.DataImport.ImportStateConstants.Deleted; } else if (column.CorePropertiesHash != statusColumn.CorePropertiesHash) { dti.State = nHydrate.DataImport.ImportStateConstants.Modified; } } columns.Add(column.Name.ToLower(), dti); } } } catch (Exception ex) { throw; } }
//private void PopulateRelationships(TreeNode parentNode) //{ // try // { // Random rnd = new Random(); // SortedList<string, DataTreeItem> relationList = new SortedList<string, DataTreeItem>(); // //Current Tables // foreach (Table t in this.CurrentDatabase.Tables) // { // //Remove invalid links. Something is very wrong // RelationCollection relationCollection = t.GetRelations(); // for (int ii = relationCollection.Count - 1; ii >= 0; ii--) // { // Relation relationshipItem = relationCollection[ii]; // int errorCount = 0; // foreach (ColumnRelationship relationshipLinkItem in relationshipItem.ColumnRelationships) // { // if ((relationshipLinkItem.ChildColumnRef == null) || (relationshipLinkItem.ParentColumnRef == null)) // errorCount++; // } // if (errorCount > 0) t.Relationships.RemoveAt(ii); // } // //Remove Errors // //If the table exists in the new graph... // foreach (Relation relation in relationCollection) // { // Table t2 = this.NewDatabase.Tables[t.Name]; // DataTreeItem dti = new DataTreeItem(relation.RoleName); // dti.Name = relation.ToLongString(); // if (t2 == null) // { // //The table was removed so the relationship was removed // dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; // } // else // { // //If the name changed then it was modified // Relation[] r2List = t2.GetRelations().GetFromMatch(relation); // if (r2List.Length == 0) // { // dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; // } // else if (r2List.Length == 1) // { // if (r2List[0].RoleName != relation.RoleName) // dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; // } // else if (r2List.Length > 1) // { // //There are multiple relationships for this table/column combination // bool found = false; // foreach (Relation r2 in r2List) // { // #region OLD CODE // //if (r2.RoleName == relation.RoleName) found = true; // //string parentTableName1 = ((Table)r2.ParentTableRef.Object).Name; // //string parentTableName2 = ((Table)relation.ParentTableRef.Object).Name; // //SortedDictionary<string, ColumnRelationship> list1 = new SortedDictionary<string,ColumnRelationship>(); // //foreach (ColumnRelationship cr in r2.ColumnRelationships) // //{ // // list1.Add(((Column)cr.ChildColumnRef.Object).Name, cr); // //} // //SortedDictionary<string, ColumnRelationship> list2 = new SortedDictionary<string, ColumnRelationship>(); // //foreach (ColumnRelationship cr in relation.ColumnRelationships) // //{ // // list2.Add(((Column)cr.ChildColumnRef.Object).Name, cr); // //} // //string parentColName1 = string.Empty; // //foreach (string key in list1.Keys) // //{ // // parentColName1 += key; // //} // //string parentColName2 = string.Empty; // //foreach (string key in list2.Keys) // //{ // // parentColName2 += key; // //} // ////string parentCol // //if ((parentTableName1 == parentTableName2) && (parentColName1 == parentColName2)) // // found = true; // #endregion // if (r2.Equals(relation)) found = true; // } // if (!found) // dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; // } // } // //If there is a duplicate then add a FAKE ROLE to it // if (relationList.ContainsKey(relation.ToLongString().ToLower())) // { // relation.RoleName = "ROLE" + rnd.Next(10000, 100000); // relationList.Add(relation.ToLongString().ToLower(), dti); // } // else // { // relationList.Add(relation.ToLongString().ToLower(), dti); // } // } // } // //Added Relationships // foreach (Table t in this.NewDatabase.Tables) // { // foreach (Reference reference in t.Relationships) // { // Relation r = (Relation)reference.Object; // string relationName = r.ToLongString(); // if (this.CurrentDatabase.Tables.Contains(t.Name)) // { // //If the old model has this table // Table t2 = this.CurrentDatabase.Tables[t.Name]; // if ((t2 != null) && (t2.GetRelations().GetFromMatch(r).Length == 0)) // relationList.Add(relationName.ToLower(), new DataTreeItem(relationName, DataTreeItem.DataTreeItemStateConstants.Added)); // } // else // { // //Table and Relation not in old model // if (!relationList.ContainsKey(relationName.ToLower())) // { // relationList.Add(relationName.ToLower(), new DataTreeItem(relationName, DataTreeItem.DataTreeItemStateConstants.Added)); // } // else // { // int loop = 1; // while (relationList.ContainsKey((relationName + "_RELATION" + loop).ToLower())) // { // loop++; // } // relationName += "_RELATION" + loop; // relationList.Add(relationName.ToLower(), new DataTreeItem(relationName, DataTreeItem.DataTreeItemStateConstants.Added)); // } // } // } // } // //Now add to tree // foreach (string relationKey in relationList.Keys) // { // var relationNode = new TreeNode(relationList[relationKey].Name); // relationNode.Tag = relationList[relationKey]; // if (relationList[relationKey].State == DataTreeItem.DataTreeItemStateConstants.Added) // relationNode.ForeColor = Color.Green; // if (relationList[relationKey].State == DataTreeItem.DataTreeItemStateConstants.Delete) // relationNode.ForeColor = Color.Red; // if (relationList[relationKey].State == DataTreeItem.DataTreeItemStateConstants.Modified) // relationNode.ForeColor = Color.Blue; // parentNode.Nodes.Add(relationNode); // } // this.BrandNodes(parentNode.Nodes); // } // catch (Exception ex) // { // throw; // } //} #endregion #region PopulateStoredProcedures //private void PopulateStoredProcedures(TreeNode parentNode) //{ // try // { // SortedList<string, DataTreeItem> itemCache = new SortedList<string, DataTreeItem>(); // //Current Items // foreach (CustomStoredProcedure storedProcedure in this.CurrentDatabase.CustomStoredProcedures) // { // DataTreeItem dti = new DataTreeItem(storedProcedure.Name); // if (this.NewDatabase.CustomStoredProcedures.Contains(storedProcedure.Name)) // dti.Name = this.NewDatabase.CustomStoredProcedures[storedProcedure.Name].Name; // //Check for deleted status // if (!this.NewDatabase.CustomStoredProcedures.Contains(storedProcedure.Name)) // dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; // else if (this.NewDatabase.CustomStoredProcedures[storedProcedure.Name].Name != storedProcedure.Name) // dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; // else if (this.NewDatabase.CustomStoredProcedures[storedProcedure.Name].GetColumns().GetCorePropertiesHash() != storedProcedure.GetColumns().GetCorePropertiesHash()) // dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; // itemCache.Add(storedProcedure.Name.ToLower(), dti); // } // //Added Items // foreach (CustomStoredProcedure t in this.NewDatabase.CustomStoredProcedures) // { // if (!this.CurrentDatabase.CustomStoredProcedures.Contains(t.Name)) // itemCache.Add(t.Name.ToLower(), new DataTreeItem(t.Name, DataTreeItem.DataTreeItemStateConstants.Added)); // } // //Now add to tree // foreach (string storedProcedureKey in itemCache.Keys) // { // var newNode = new TreeNode(itemCache[storedProcedureKey].Name); // newNode.Tag = itemCache[storedProcedureKey]; // if (itemCache[storedProcedureKey].State == DataTreeItem.DataTreeItemStateConstants.Added) // newNode.ForeColor = Color.Green; // if (itemCache[storedProcedureKey].State == DataTreeItem.DataTreeItemStateConstants.Delete) // newNode.ForeColor = Color.Red; // if (itemCache[storedProcedureKey].State == DataTreeItem.DataTreeItemStateConstants.Modified) // newNode.ForeColor = Color.Blue; // parentNode.Nodes.Add(newNode); // CustomStoredProcedure oldStoredProcedure = this.CurrentDatabase.CustomStoredProcedures[storedProcedureKey]; // CustomStoredProcedure newStoredProcedure = this.NewDatabase.CustomStoredProcedures[storedProcedureKey]; // if (oldStoredProcedure == null) oldStoredProcedure = new CustomStoredProcedure(this.CurrentDatabase.Root); // if (newStoredProcedure == null) newStoredProcedure = new CustomStoredProcedure(this.NewDatabase.Root); // //Create list of all columns (new and old) // SortedList<string, DataTreeItem> columns = new SortedList<string, DataTreeItem>(); // foreach (Reference r in oldStoredProcedure.Columns) // { // CustomStoredProcedureColumn column = (CustomStoredProcedureColumn)r.Object; // DataTreeItem dti = new DataTreeItem(column.Name); // //Check for deleted status // if (this.NewDatabase.CustomStoredProcedures.Contains(itemCache[oldStoredProcedure.Name.ToLower()].Name)) // { // CustomStoredProcedureColumn statusColumn = this.NewDatabase.CustomStoredProcedures[itemCache[oldStoredProcedure.Name.ToLower()].Name].GetColumns().FirstOrDefault(x => x.Name == column.Name); // if (statusColumn == null) // dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; // else if (column.CorePropertiesHash != statusColumn.CorePropertiesHash) // dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; // } // columns.Add(column.Name.ToLower(), dti); // } // //Added Columns // if (oldStoredProcedure.Name == string.Empty) // { // foreach (CustomStoredProcedureColumn column in this.NewDatabase.CustomStoredProcedures[storedProcedureKey].GetColumns()) // { // columns.Add(column.Name.ToLower(), new DataTreeItem(column.Name, DataTreeItem.DataTreeItemStateConstants.Added)); // } // } // else // { // if (this.NewDatabase.CustomStoredProcedures.Contains(itemCache[oldStoredProcedure.Name.ToLower()].Name)) // { // foreach (CustomStoredProcedureColumn column in this.NewDatabase.CustomStoredProcedures[itemCache[oldStoredProcedure.Name.ToLower()].Name].GetColumns()) // { // CustomStoredProcedureColumn statusColumn = this.CurrentDatabase.CustomStoredProcedures[itemCache[oldStoredProcedure.Name.ToLower()].Name].GetColumns().FirstOrDefault(x => x.Name == column.Name); // if (statusColumn == null) // columns.Add(column.Name.ToLower(), new DataTreeItem(column.Name, DataTreeItem.DataTreeItemStateConstants.Added)); // } // } // } // //Now load columns into tree // if (this.NewDatabase.CustomStoredProcedures.Contains(oldStoredProcedure.Name)) // { // foreach (string columnKey in columns.Keys) // { // var columnNode = new TreeNode(columns[columnKey].Name); // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Added) // columnNode.ForeColor = Color.Green; // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Delete) // columnNode.ForeColor = Color.Red; // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Modified) // columnNode.ForeColor = Color.Blue; // columnNode.Tag = columns[columnKey]; // newNode.Nodes.Add(columnNode); // } // } // } // this.BrandNodes(parentNode.Nodes); // } // catch (Exception ex) // { // throw; // } //} #endregion private void PopulateViews(TreeNode parentNode) { try { var itemCache = new SortedList<string, DataTreeItem>(); //Current Items foreach (CustomView view in this.CurrentDatabase.CustomViews) { var dti = new DataTreeItem(view.Name); if (this.NewDatabase.CustomViews.Contains(view.Name)) dti.Name = this.NewDatabase.CustomViews[view.Name].Name; //Check for deleted status if (!this.NewDatabase.CustomViews.Contains(view.Name)) dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; else if (this.NewDatabase.CustomViews[view.Name].Name != view.Name) dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; else if (this.NewDatabase.CustomViews[view.Name].GetColumns().GetCorePropertiesHash() != view.GetColumns().GetCorePropertiesHash()) dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; itemCache.Add(view.Name.ToLower(), dti); } //Added Items foreach (CustomView t in this.NewDatabase.CustomViews) { if (!this.CurrentDatabase.CustomViews.Contains(t.Name)) itemCache.Add(t.Name.ToLower(), new DataTreeItem(t.Name, DataTreeItem.DataTreeItemStateConstants.Added)); } //Now add to tree foreach (var viewKey in itemCache.Keys) { var viewNode = new TreeNode(itemCache[viewKey].Name); viewNode.Checked = true; viewNode.ImageIndex = 4; viewNode.Tag = itemCache[viewKey]; //if (itemCache[viewKey].State == DataTreeItem.DataTreeItemStateConstants.Added) // viewNode.ForeColor = Color.Green; //if (itemCache[viewKey].State == DataTreeItem.DataTreeItemStateConstants.Delete) // viewNode.ForeColor = Color.Red; //if (itemCache[viewKey].State == DataTreeItem.DataTreeItemStateConstants.Modified) // viewNode.ForeColor = Color.Blue; parentNode.Nodes.Add(viewNode); var oldView = this.CurrentDatabase.CustomViews[viewKey]; var newView = this.NewDatabase.CustomViews[viewKey]; if (oldView == null) oldView = new CustomView(this.CurrentDatabase.Root); if (newView == null) newView = new CustomView(this.NewDatabase.Root); //Create list of all columns (new and old) var columns = new SortedList<string, DataTreeItem>(); foreach (Reference r in oldView.Columns) { var column = (CustomViewColumn)r.Object; var dti = new DataTreeItem(column.Name); //Check for deleted status if (this.NewDatabase.CustomViews.Contains(itemCache[oldView.Name.ToLower()].Name)) { var statusColumn = this.NewDatabase.CustomViews[itemCache[oldView.Name.ToLower()].Name].GetColumns().FirstOrDefault(x => x.Name == column.Name); if (statusColumn == null) dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; else if (column.CorePropertiesHash != statusColumn.CorePropertiesHash) dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; } columns.Add(column.Name.ToLower(), dti); } #region Added Columns //if (oldView.Name == string.Empty) //{ // foreach (CustomViewColumn column in this.NewDatabase.CustomViews[viewKey].GetColumns()) // { // columns.Add(column.Name.ToLower(), new DataTreeItem(column.Name, DataTreeItem.DataTreeItemStateConstants.Added)); // } //} //else //{ // if (this.NewDatabase.CustomViews.Contains(itemCache[oldView.Name.ToLower()].Name)) // { // foreach (CustomViewColumn column in this.NewDatabase.CustomViews[itemCache[oldView.Name.ToLower()].Name].GetColumns()) // { // CustomViewColumn statusColumn = this.CurrentDatabase.CustomViews[itemCache[oldView.Name.ToLower()].Name].GetColumns().FirstOrDefault(x => x.Name == column.Name); // if (statusColumn == null) // columns.Add(column.Name.ToLower(), new DataTreeItem(column.Name, DataTreeItem.DataTreeItemStateConstants.Added)); // } // } //} ////Now load columns into tree //if (this.NewDatabase.CustomViews.Contains(oldView.Name)) //{ // foreach (string columnKey in columns.Keys) // { // var columnNode = new TreeNode(columns[columnKey].Name); // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Added) // columnNode.ForeColor = Color.Green; // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Delete) // columnNode.ForeColor = Color.Red; // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Modified) // columnNode.ForeColor = Color.Blue; // columnNode.Tag = columns[columnKey]; // viewNode.Nodes.Add(columnNode); // } //} #endregion } } catch (Exception ex) { throw; } }
private static void GenDataToCode(DataTreeItem dataTreeItem) { dataTreeItem.gen_funcname = "GetReddot_" + dataTreeItem.go.name; for (int i = 0; i < dataTreeItem.children.Count; ++i) { GenDataToCode(dataTreeItem.children[i]); } if ((!dataTreeItem.luaScriptName.Equals("")) && (!dataTreeItem.luaFunctionName.Equals(""))) { dataTreeItem.gen_funcCode = dataTreeItem.gen_funcCode + dataTreeItem.luaScriptName + "." + dataTreeItem.luaFunctionName + "("; for (int j = 0; j < dataTreeItem.paramList.Count; ++j) { if (j > 0) { dataTreeItem.gen_funcCode = ", "; } dataTreeItem.gen_funcCode = dataTreeItem.gen_funcCode + dataTreeItem.paramList[j]; } dataTreeItem.gen_funcCode = dataTreeItem.gen_funcCode + ")"; } else { //没有子节点,但是自己却没有获得红点的方法,那么这个节点是错误的,少录入了获取红点的调用的方法 if (dataTreeItem.children.Count == 0) { Debug.LogError("节点错误,该节点需要录入获取红点的调用的方法: " + dataTreeItem.go.name); } int childParamCount = 0; int childParamIndex = 0; for (int i = 0; i < dataTreeItem.children.Count; ++i) { if (dataTreeItem.children[i].shuldPassParam) { childParamCount = childParamCount + dataTreeItem.children[i].paramList.Count; } } for (int i = 0; i < dataTreeItem.children.Count; ++i) { DataTreeItem item = dataTreeItem.children[i]; if (i > 0) { dataTreeItem.gen_funcCode = dataTreeItem.gen_funcCode + " + "; } dataTreeItem.gen_funcCode = dataTreeItem.gen_funcCode + "self." + item.gen_funcname; if (childParamCount > 0 && item.shuldPassParam) { if (dataTreeItem.paramList.Count > 0) { if (dataTreeItem.paramList.Count != childParamCount) { Debug.LogError("子节点固定参数数量有误: " + dataTreeItem.go.name); } else { dataTreeItem.gen_funcCode = dataTreeItem.gen_funcCode + "("; for (int j = 0; j < item.paramList.Count; ++j) { if (j > 0) { dataTreeItem.gen_funcCode = dataTreeItem.gen_funcCode + ", "; } dataTreeItem.gen_funcCode = dataTreeItem.gen_funcCode + dataTreeItem.paramList[childParamIndex]; } dataTreeItem.gen_funcCode = dataTreeItem.gen_funcCode + ")"; } } else { Debug.LogError("节点错误,该节点必须调用第三方函数或者为子函数指定传参(paramList): " + dataTreeItem.go.name + " <-----> " + item.go.name); } } else { dataTreeItem.gen_funcCode = dataTreeItem.gen_funcCode + "()"; } } } dataTreeItem.gen_funcCode = dataTreeItem.gen_funcCode + "\n"; }
private void RemoveAllNodes(TreeNodeCollection nodeList, DataTreeItem.DataTreeItemStateConstants excludeType) { var delList = new List<TreeNode>(); foreach (TreeNode node in nodeList) { if (((DataTreeItem)node.Tag).State != excludeType) { delList.Add(node); } RemoveAllNodes(node.Nodes, excludeType); } foreach (var node in delList) { this.tvwAdd.Nodes.Remove(node); } }
private void PopulateDataSchema(TreeNode parentNode) { try { var tables = new SortedList <string, DataTreeItem>(); //Current Tables foreach (Table t in this.CurrentDatabase.Tables) { var dti = new DataTreeItem(t.Name); if (this.NewDatabase.Tables.Contains(t.Name)) { dti.Name = this.NewDatabase.Tables[t.Name].Name; } //Check for deleted status if (!this.NewDatabase.Tables.Contains(t.Name)) { dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; } else if (this.NewDatabase.Tables[t.Name].CorePropertiesHash != t.CorePropertiesHash) { dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; } else if (this.NewDatabase.Tables[t.Name].GetColumns().GetCorePropertiesHash() != t.GetColumns().GetCorePropertiesHash()) { dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; } tables.Add(t.Name.ToLower(), dti); } //Added Tables foreach (Table t in this.NewDatabase.Tables) { if (!this.CurrentDatabase.Tables.Contains(t.Name)) { tables.Add(t.Name.ToLower(), new DataTreeItem(t.Name, DataTreeItem.DataTreeItemStateConstants.Added)); } } //Now add to tree foreach (var tableKey in tables.Keys) { var tableNode = new TreeNode(tables[tableKey].Name); tableNode.Checked = true; tableNode.ImageIndex = 3; tableNode.Tag = tables[tableKey]; parentNode.Nodes.Add(tableNode); var oldTable = this.CurrentDatabase.Tables[tableKey]; var newTable = this.NewDatabase.Tables[tableKey]; if (oldTable == null) { oldTable = new Table(this.CurrentDatabase.Root); } if (newTable == null) { newTable = new Table(this.NewDatabase.Root); } //Create list of all columns (new and old) var columns = new SortedList <string, DataTreeItem>(); foreach (Reference r in oldTable.Columns) { var column = (Column)r.Object; var dti = new DataTreeItem(column.Name); //Check for deleted status if (this.NewDatabase.Tables.Contains(tables[oldTable.Name.ToLower()].Name)) { var statusColumn = this.NewDatabase.Tables[tables[oldTable.Name.ToLower()].Name].GetColumns().FirstOrDefault(x => x.Name == column.Name); if (statusColumn == null) { dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; } else if (column.CorePropertiesHash != statusColumn.CorePropertiesHash) { dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; } } columns.Add(column.Name.ToLower(), dti); } #region Added Columns //if (oldTable.Name == string.Empty) //{ // foreach (Column column in this.NewDatabase.Tables[tableKey].GetColumns()) // { // columns.Add(column.Name.ToLower(), new DataTreeItem(column.Name, DataTreeItem.DataTreeItemStateConstants.Added)); // } //} //else //{ // if (this.NewDatabase.Tables.Contains(tables[oldTable.Name.ToLower()].Name)) // { // foreach (Column column in this.NewDatabase.Tables[tables[oldTable.Name.ToLower()].Name].GetColumns()) // { // Column statusColumn = this.CurrentDatabase.Tables[tables[oldTable.Name.ToLower()].Name].GetColumns().FirstOrDefault(x => x.Name == column.Name); // if (statusColumn == null) // columns.Add(column.Name.ToLower(), new DataTreeItem(column.Name, DataTreeItem.DataTreeItemStateConstants.Added)); // } // } //} ////Now load columns into tree //if (this.NewDatabase.Tables.Contains(oldTable.Name)) //{ // foreach (string columnKey in columns.Keys) // { // var columnNode = new TreeNode(columns[columnKey].Name); // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Added) // columnNode.ForeColor = Color.Green; // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Delete) // columnNode.ForeColor = Color.Red; // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Modified) // columnNode.ForeColor = Color.Blue; // columnNode.Tag = columns[columnKey]; // tableNode.Nodes.Add(columnNode); // } //} #endregion } //this.BrandNodes(parentNode.Nodes); } catch (Exception ex) { throw; } }
//private void PopulateRelationships(TreeNode parentNode) //{ // try // { // Random rnd = new Random(); // SortedList<string, DataTreeItem> relationList = new SortedList<string, DataTreeItem>(); // //Current Tables // foreach (Table t in this.CurrentDatabase.Tables) // { // //Remove invalid links. Something is very wrong // RelationCollection relationCollection = t.GetRelations(); // for (int ii = relationCollection.Count - 1; ii >= 0; ii--) // { // Relation relationshipItem = relationCollection[ii]; // int errorCount = 0; // foreach (ColumnRelationship relationshipLinkItem in relationshipItem.ColumnRelationships) // { // if ((relationshipLinkItem.ChildColumnRef == null) || (relationshipLinkItem.ParentColumnRef == null)) // errorCount++; // } // if (errorCount > 0) t.Relationships.RemoveAt(ii); // } // //Remove Errors // //If the table exists in the new graph... // foreach (Relation relation in relationCollection) // { // Table t2 = this.NewDatabase.Tables[t.Name]; // DataTreeItem dti = new DataTreeItem(relation.RoleName); // dti.Name = relation.ToLongString(); // if (t2 == null) // { // //The table was removed so the relationship was removed // dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; // } // else // { // //If the name changed then it was modified // Relation[] r2List = t2.GetRelations().GetFromMatch(relation); // if (r2List.Length == 0) // { // dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; // } // else if (r2List.Length == 1) // { // if (r2List[0].RoleName != relation.RoleName) // dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; // } // else if (r2List.Length > 1) // { // //There are multiple relationships for this table/column combination // bool found = false; // foreach (Relation r2 in r2List) // { // #region OLD CODE // //if (r2.RoleName == relation.RoleName) found = true; // //string parentTableName1 = ((Table)r2.ParentTableRef.Object).Name; // //string parentTableName2 = ((Table)relation.ParentTableRef.Object).Name; // //SortedDictionary<string, ColumnRelationship> list1 = new SortedDictionary<string,ColumnRelationship>(); // //foreach (ColumnRelationship cr in r2.ColumnRelationships) // //{ // // list1.Add(((Column)cr.ChildColumnRef.Object).Name, cr); // //} // //SortedDictionary<string, ColumnRelationship> list2 = new SortedDictionary<string, ColumnRelationship>(); // //foreach (ColumnRelationship cr in relation.ColumnRelationships) // //{ // // list2.Add(((Column)cr.ChildColumnRef.Object).Name, cr); // //} // //string parentColName1 = string.Empty; // //foreach (string key in list1.Keys) // //{ // // parentColName1 += key; // //} // //string parentColName2 = string.Empty; // //foreach (string key in list2.Keys) // //{ // // parentColName2 += key; // //} // ////string parentCol // //if ((parentTableName1 == parentTableName2) && (parentColName1 == parentColName2)) // // found = true; // #endregion // if (r2.Equals(relation)) found = true; // } // if (!found) // dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; // } // } // //If there is a duplicate then add a FAKE ROLE to it // if (relationList.ContainsKey(relation.ToLongString().ToLower())) // { // relation.RoleName = "ROLE" + rnd.Next(10000, 100000); // relationList.Add(relation.ToLongString().ToLower(), dti); // } // else // { // relationList.Add(relation.ToLongString().ToLower(), dti); // } // } // } // //Added Relationships // foreach (Table t in this.NewDatabase.Tables) // { // foreach (Reference reference in t.Relationships) // { // Relation r = (Relation)reference.Object; // string relationName = r.ToLongString(); // if (this.CurrentDatabase.Tables.Contains(t.Name)) // { // //If the old model has this table // Table t2 = this.CurrentDatabase.Tables[t.Name]; // if ((t2 != null) && (t2.GetRelations().GetFromMatch(r).Length == 0)) // relationList.Add(relationName.ToLower(), new DataTreeItem(relationName, DataTreeItem.DataTreeItemStateConstants.Added)); // } // else // { // //Table and Relation not in old model // if (!relationList.ContainsKey(relationName.ToLower())) // { // relationList.Add(relationName.ToLower(), new DataTreeItem(relationName, DataTreeItem.DataTreeItemStateConstants.Added)); // } // else // { // int loop = 1; // while (relationList.ContainsKey((relationName + "_RELATION" + loop).ToLower())) // { // loop++; // } // relationName += "_RELATION" + loop; // relationList.Add(relationName.ToLower(), new DataTreeItem(relationName, DataTreeItem.DataTreeItemStateConstants.Added)); // } // } // } // } // //Now add to tree // foreach (string relationKey in relationList.Keys) // { // var relationNode = new TreeNode(relationList[relationKey].Name); // relationNode.Tag = relationList[relationKey]; // if (relationList[relationKey].State == DataTreeItem.DataTreeItemStateConstants.Added) // relationNode.ForeColor = Color.Green; // if (relationList[relationKey].State == DataTreeItem.DataTreeItemStateConstants.Delete) // relationNode.ForeColor = Color.Red; // if (relationList[relationKey].State == DataTreeItem.DataTreeItemStateConstants.Modified) // relationNode.ForeColor = Color.Blue; // parentNode.Nodes.Add(relationNode); // } // this.BrandNodes(parentNode.Nodes); // } // catch (Exception ex) // { // throw; // } //} #endregion #region PopulateStoredProcedures //private void PopulateStoredProcedures(TreeNode parentNode) //{ // try // { // SortedList<string, DataTreeItem> itemCache = new SortedList<string, DataTreeItem>(); // //Current Items // foreach (CustomStoredProcedure storedProcedure in this.CurrentDatabase.CustomStoredProcedures) // { // DataTreeItem dti = new DataTreeItem(storedProcedure.Name); // if (this.NewDatabase.CustomStoredProcedures.Contains(storedProcedure.Name)) // dti.Name = this.NewDatabase.CustomStoredProcedures[storedProcedure.Name].Name; // //Check for deleted status // if (!this.NewDatabase.CustomStoredProcedures.Contains(storedProcedure.Name)) // dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; // else if (this.NewDatabase.CustomStoredProcedures[storedProcedure.Name].Name != storedProcedure.Name) // dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; // else if (this.NewDatabase.CustomStoredProcedures[storedProcedure.Name].GetColumns().GetCorePropertiesHash() != storedProcedure.GetColumns().GetCorePropertiesHash()) // dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; // itemCache.Add(storedProcedure.Name.ToLower(), dti); // } // //Added Items // foreach (CustomStoredProcedure t in this.NewDatabase.CustomStoredProcedures) // { // if (!this.CurrentDatabase.CustomStoredProcedures.Contains(t.Name)) // itemCache.Add(t.Name.ToLower(), new DataTreeItem(t.Name, DataTreeItem.DataTreeItemStateConstants.Added)); // } // //Now add to tree // foreach (string storedProcedureKey in itemCache.Keys) // { // var newNode = new TreeNode(itemCache[storedProcedureKey].Name); // newNode.Tag = itemCache[storedProcedureKey]; // if (itemCache[storedProcedureKey].State == DataTreeItem.DataTreeItemStateConstants.Added) // newNode.ForeColor = Color.Green; // if (itemCache[storedProcedureKey].State == DataTreeItem.DataTreeItemStateConstants.Delete) // newNode.ForeColor = Color.Red; // if (itemCache[storedProcedureKey].State == DataTreeItem.DataTreeItemStateConstants.Modified) // newNode.ForeColor = Color.Blue; // parentNode.Nodes.Add(newNode); // CustomStoredProcedure oldStoredProcedure = this.CurrentDatabase.CustomStoredProcedures[storedProcedureKey]; // CustomStoredProcedure newStoredProcedure = this.NewDatabase.CustomStoredProcedures[storedProcedureKey]; // if (oldStoredProcedure == null) oldStoredProcedure = new CustomStoredProcedure(this.CurrentDatabase.Root); // if (newStoredProcedure == null) newStoredProcedure = new CustomStoredProcedure(this.NewDatabase.Root); // //Create list of all columns (new and old) // SortedList<string, DataTreeItem> columns = new SortedList<string, DataTreeItem>(); // foreach (Reference r in oldStoredProcedure.Columns) // { // CustomStoredProcedureColumn column = (CustomStoredProcedureColumn)r.Object; // DataTreeItem dti = new DataTreeItem(column.Name); // //Check for deleted status // if (this.NewDatabase.CustomStoredProcedures.Contains(itemCache[oldStoredProcedure.Name.ToLower()].Name)) // { // CustomStoredProcedureColumn statusColumn = this.NewDatabase.CustomStoredProcedures[itemCache[oldStoredProcedure.Name.ToLower()].Name].GetColumns().FirstOrDefault(x => x.Name == column.Name); // if (statusColumn == null) // dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; // else if (column.CorePropertiesHash != statusColumn.CorePropertiesHash) // dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; // } // columns.Add(column.Name.ToLower(), dti); // } // //Added Columns // if (oldStoredProcedure.Name == string.Empty) // { // foreach (CustomStoredProcedureColumn column in this.NewDatabase.CustomStoredProcedures[storedProcedureKey].GetColumns()) // { // columns.Add(column.Name.ToLower(), new DataTreeItem(column.Name, DataTreeItem.DataTreeItemStateConstants.Added)); // } // } // else // { // if (this.NewDatabase.CustomStoredProcedures.Contains(itemCache[oldStoredProcedure.Name.ToLower()].Name)) // { // foreach (CustomStoredProcedureColumn column in this.NewDatabase.CustomStoredProcedures[itemCache[oldStoredProcedure.Name.ToLower()].Name].GetColumns()) // { // CustomStoredProcedureColumn statusColumn = this.CurrentDatabase.CustomStoredProcedures[itemCache[oldStoredProcedure.Name.ToLower()].Name].GetColumns().FirstOrDefault(x => x.Name == column.Name); // if (statusColumn == null) // columns.Add(column.Name.ToLower(), new DataTreeItem(column.Name, DataTreeItem.DataTreeItemStateConstants.Added)); // } // } // } // //Now load columns into tree // if (this.NewDatabase.CustomStoredProcedures.Contains(oldStoredProcedure.Name)) // { // foreach (string columnKey in columns.Keys) // { // var columnNode = new TreeNode(columns[columnKey].Name); // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Added) // columnNode.ForeColor = Color.Green; // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Delete) // columnNode.ForeColor = Color.Red; // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Modified) // columnNode.ForeColor = Color.Blue; // columnNode.Tag = columns[columnKey]; // newNode.Nodes.Add(columnNode); // } // } // } // this.BrandNodes(parentNode.Nodes); // } // catch (Exception ex) // { // throw; // } //} #endregion private void PopulateViews(TreeNode parentNode) { try { var itemCache = new SortedList <string, DataTreeItem>(); //Current Items foreach (CustomView view in this.CurrentDatabase.CustomViews) { var dti = new DataTreeItem(view.Name); if (this.NewDatabase.CustomViews.Contains(view.Name)) { dti.Name = this.NewDatabase.CustomViews[view.Name].Name; } //Check for deleted status if (!this.NewDatabase.CustomViews.Contains(view.Name)) { dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; } else if (this.NewDatabase.CustomViews[view.Name].Name != view.Name) { dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; } else if (this.NewDatabase.CustomViews[view.Name].GetColumns().GetCorePropertiesHash() != view.GetColumns().GetCorePropertiesHash()) { dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; } itemCache.Add(view.Name.ToLower(), dti); } //Added Items foreach (CustomView t in this.NewDatabase.CustomViews) { if (!this.CurrentDatabase.CustomViews.Contains(t.Name)) { itemCache.Add(t.Name.ToLower(), new DataTreeItem(t.Name, DataTreeItem.DataTreeItemStateConstants.Added)); } } //Now add to tree foreach (var viewKey in itemCache.Keys) { var viewNode = new TreeNode(itemCache[viewKey].Name); viewNode.Checked = true; viewNode.ImageIndex = 4; viewNode.Tag = itemCache[viewKey]; //if (itemCache[viewKey].State == DataTreeItem.DataTreeItemStateConstants.Added) // viewNode.ForeColor = Color.Green; //if (itemCache[viewKey].State == DataTreeItem.DataTreeItemStateConstants.Delete) // viewNode.ForeColor = Color.Red; //if (itemCache[viewKey].State == DataTreeItem.DataTreeItemStateConstants.Modified) // viewNode.ForeColor = Color.Blue; parentNode.Nodes.Add(viewNode); var oldView = this.CurrentDatabase.CustomViews[viewKey]; var newView = this.NewDatabase.CustomViews[viewKey]; if (oldView == null) { oldView = new CustomView(this.CurrentDatabase.Root); } if (newView == null) { newView = new CustomView(this.NewDatabase.Root); } //Create list of all columns (new and old) var columns = new SortedList <string, DataTreeItem>(); foreach (Reference r in oldView.Columns) { var column = (CustomViewColumn)r.Object; var dti = new DataTreeItem(column.Name); //Check for deleted status if (this.NewDatabase.CustomViews.Contains(itemCache[oldView.Name.ToLower()].Name)) { var statusColumn = this.NewDatabase.CustomViews[itemCache[oldView.Name.ToLower()].Name].GetColumns().FirstOrDefault(x => x.Name == column.Name); if (statusColumn == null) { dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; } else if (column.CorePropertiesHash != statusColumn.CorePropertiesHash) { dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; } } columns.Add(column.Name.ToLower(), dti); } #region Added Columns //if (oldView.Name == string.Empty) //{ // foreach (CustomViewColumn column in this.NewDatabase.CustomViews[viewKey].GetColumns()) // { // columns.Add(column.Name.ToLower(), new DataTreeItem(column.Name, DataTreeItem.DataTreeItemStateConstants.Added)); // } //} //else //{ // if (this.NewDatabase.CustomViews.Contains(itemCache[oldView.Name.ToLower()].Name)) // { // foreach (CustomViewColumn column in this.NewDatabase.CustomViews[itemCache[oldView.Name.ToLower()].Name].GetColumns()) // { // CustomViewColumn statusColumn = this.CurrentDatabase.CustomViews[itemCache[oldView.Name.ToLower()].Name].GetColumns().FirstOrDefault(x => x.Name == column.Name); // if (statusColumn == null) // columns.Add(column.Name.ToLower(), new DataTreeItem(column.Name, DataTreeItem.DataTreeItemStateConstants.Added)); // } // } //} ////Now load columns into tree //if (this.NewDatabase.CustomViews.Contains(oldView.Name)) //{ // foreach (string columnKey in columns.Keys) // { // var columnNode = new TreeNode(columns[columnKey].Name); // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Added) // columnNode.ForeColor = Color.Green; // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Delete) // columnNode.ForeColor = Color.Red; // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Modified) // columnNode.ForeColor = Color.Blue; // columnNode.Tag = columns[columnKey]; // viewNode.Nodes.Add(columnNode); // } //} #endregion } } catch (Exception ex) { throw; } }
private void PopulateDataSchema(TreeNode parentNode) { try { var tables = new SortedList<string, DataTreeItem>(); //Current Tables foreach (Table t in this.CurrentDatabase.Tables) { var dti = new DataTreeItem(t.Name); if (this.NewDatabase.Tables.Contains(t.Name)) dti.Name = this.NewDatabase.Tables[t.Name].Name; //Check for deleted status if (!this.NewDatabase.Tables.Contains(t.Name)) dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; else if (this.NewDatabase.Tables[t.Name].CorePropertiesHash != t.CorePropertiesHash) dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; else if (this.NewDatabase.Tables[t.Name].GetColumns().GetCorePropertiesHash() != t.GetColumns().GetCorePropertiesHash()) dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; tables.Add(t.Name.ToLower(), dti); } //Added Tables foreach (Table t in this.NewDatabase.Tables) { if (!this.CurrentDatabase.Tables.Contains(t.Name)) tables.Add(t.Name.ToLower(), new DataTreeItem(t.Name, DataTreeItem.DataTreeItemStateConstants.Added)); } //Now add to tree foreach (var tableKey in tables.Keys) { var tableNode = new TreeNode(tables[tableKey].Name); tableNode.Checked = true; tableNode.ImageIndex = 3; tableNode.Tag = tables[tableKey]; parentNode.Nodes.Add(tableNode); var oldTable = this.CurrentDatabase.Tables[tableKey]; var newTable = this.NewDatabase.Tables[tableKey]; if (oldTable == null) oldTable = new Table(this.CurrentDatabase.Root); if (newTable == null) newTable = new Table(this.NewDatabase.Root); //Create list of all columns (new and old) var columns = new SortedList<string, DataTreeItem>(); foreach (Reference r in oldTable.Columns) { var column = (Column)r.Object; var dti = new DataTreeItem(column.Name); //Check for deleted status if (this.NewDatabase.Tables.Contains(tables[oldTable.Name.ToLower()].Name)) { var statusColumn = this.NewDatabase.Tables[tables[oldTable.Name.ToLower()].Name].GetColumns().FirstOrDefault(x => x.Name == column.Name); if (statusColumn == null) dti.State = DataTreeItem.DataTreeItemStateConstants.Delete; else if (column.CorePropertiesHash != statusColumn.CorePropertiesHash) dti.State = DataTreeItem.DataTreeItemStateConstants.Modified; } columns.Add(column.Name.ToLower(), dti); } #region Added Columns //if (oldTable.Name == string.Empty) //{ // foreach (Column column in this.NewDatabase.Tables[tableKey].GetColumns()) // { // columns.Add(column.Name.ToLower(), new DataTreeItem(column.Name, DataTreeItem.DataTreeItemStateConstants.Added)); // } //} //else //{ // if (this.NewDatabase.Tables.Contains(tables[oldTable.Name.ToLower()].Name)) // { // foreach (Column column in this.NewDatabase.Tables[tables[oldTable.Name.ToLower()].Name].GetColumns()) // { // Column statusColumn = this.CurrentDatabase.Tables[tables[oldTable.Name.ToLower()].Name].GetColumns().FirstOrDefault(x => x.Name == column.Name); // if (statusColumn == null) // columns.Add(column.Name.ToLower(), new DataTreeItem(column.Name, DataTreeItem.DataTreeItemStateConstants.Added)); // } // } //} ////Now load columns into tree //if (this.NewDatabase.Tables.Contains(oldTable.Name)) //{ // foreach (string columnKey in columns.Keys) // { // var columnNode = new TreeNode(columns[columnKey].Name); // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Added) // columnNode.ForeColor = Color.Green; // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Delete) // columnNode.ForeColor = Color.Red; // if (columns[columnKey].State == DataTreeItem.DataTreeItemStateConstants.Modified) // columnNode.ForeColor = Color.Blue; // columnNode.Tag = columns[columnKey]; // tableNode.Nodes.Add(columnNode); // } //} #endregion } //this.BrandNodes(parentNode.Nodes); } catch (Exception ex) { throw; } }