public void CreateCodeEmployeeTerritoriesAfterUnmap() { TableNode tn; PrepareEmployeeTerritories(out tn); DatabaseNode dbn = (DatabaseNode)tn.Parent; IntermediateTableNode itn = (IntermediateTableNode)FindNode(dbn.Nodes, "EmployeeTerritories", typeof(IntermediateTableNode)); itn.UnmapIntermediateTable(null, EventArgs.Empty); ApplicationController.Instance.GenerateAssembly(); // There shouldn't be relations in the code }
public void UnmapIntermediateTable(IntermediateTableNode itn) { TableNode tn = itn.OriginalTableNode; int index = databaseNode.Nodes.IndexOf(itn); tn.Remove(); // Was inserted as node in itn. itn.Remove(); databaseNode.Nodes.Insert(index, tn); tn.TreeView.SelectedNode = tn; for (int tableNr = 0; tableNr < 2; tableNr++) { RelatedTableInfo rti = itn.IntermediateTable[tableNr]; RemoveRelationNodeFromTable(rti.Table, rti.ForeignKeyColumnName); } }
public void TestIntermediateTable() { TableNode tn; PrepareEmployeeTerritories(out tn); DatabaseNode dbn = (DatabaseNode)tn.Parent; IntermediateTableNode itn = (IntermediateTableNode)FindNode(dbn.Nodes, "EmployeeTerritories", typeof(IntermediateTableNode)); Assertion.AssertNotNull("IntermediateTableNode not found", itn); Assertion.AssertEquals("Wrong original table", tn, itn.OriginalTableNode); Assertion.AssertEquals("Wrong image", itn.SelectedImageIndex, 13); tn = (TableNode)FindNode(dbn.Nodes, "Employees"); RelationNode rn = (RelationNode)FindNode(tn.Nodes, "EmployeeID", typeof(RelationNode)); Assertion.AssertNotNull("Relation node should exist #1", rn); tn = (TableNode)FindNode(dbn.Nodes, "Territories"); rn = (RelationNode)FindNode(tn.Nodes, "TerritoryID", typeof(RelationNode)); Assertion.AssertNotNull("Relation node should exist #2", rn); // Now unmap and test itn.UnmapIntermediateTable(null, EventArgs.Empty); itn = (IntermediateTableNode)FindNode(dbn.Nodes, "EmployeeTerritories", typeof(IntermediateTableNode)); Assertion.AssertNull("itn should be null", itn); tn = (TableNode)FindNode(dbn.Nodes, "EmployeeTerritories", typeof(TableNode)); Assertion.AssertNotNull("Table node should be back", tn); tn = (TableNode)FindNode(dbn.Nodes, "Employees"); rn = (RelationNode)FindNode(tn.Nodes, "EmployeeID", typeof(RelationNode)); Assertion.AssertNull("Relation node shouldn't be there", rn); tn = (TableNode)FindNode(dbn.Nodes, "Territories"); rn = (RelationNode)FindNode(tn.Nodes, "TerritoryID", typeof(RelationNode)); Assertion.AssertNull("Relation node shouldn't be there #2", rn); }
public void MapIntermediateTable(TableNode tn) { IntermediateTable it = new IntermediateTable(tn.Text); IntermediateTableNode itn = new IntermediateTableNode(it, tn); IList tableNodes = databaseNode.TableNodes; tableNodes.Remove(tn); IntermediateTableWizardModel model = new IntermediateTableWizardModel(itn, tableNodes); IWizardController controller = ApplicationController.wizardControllerFactory.Create ("IntermediateTableWizController", "IntTblWiz", "Intermediate Table Wizard"); //controller.FrameSize = new Size(544, 416); DialogResult r = controller.Run(model); if (r == DialogResult.OK) { DatabaseNode parent = (DatabaseNode)tn.Parent; //tn.Parent.Nodes. Remove(tn); int index = parent.Nodes.IndexOf(tn); tn.Remove(); tn.Parent.Nodes.Insert(index, itn); itn.TreeView.SelectedNode = itn; itn.Nodes.Add(tn); // This ensures persisting the column nodes with file/save. RelatedTableInfo rti0 = it[0]; RelatedTableInfo rti1 = it[1]; TableNode relTn0 = null; TableNode relTn1 = null; RelationNode relNode0 = null; RelationNode relNode1 = null; foreach (TableNode loopTn in tableNodes) { if (loopTn.Text == rti0.Table) { relTn0 = loopTn; if (rti0.RelationDirection != RelationDirection.DirectedToMe) { ForeignIntermediateTableRelation fitr = new ForeignIntermediateTableRelation(rti0, tn.Text); relNode0 = new RelationNode(fitr, relTn0); relTn0.Nodes.Add(relNode0); } } if (loopTn.Text == rti1.Table) { relTn1 = loopTn; if (rti1.RelationDirection != RelationDirection.DirectedToMe) { ForeignIntermediateTableRelation fitr = new ForeignIntermediateTableRelation(rti1, tn.Text); relNode1 = new RelationNode(fitr, relTn1); relTn1.Nodes.Add(relNode1); } } } if (relNode0 != null) { relNode0.RelatedTableNode = relTn1; } if (relNode1 != null) { relNode1.RelatedTableNode = relTn0; } } }
public IntermediateTableWizardModel(IntermediateTableNode intTableNode, IList tableNodes) { this.intTableNode = intTableNode; this.tableNodes = tableNodes; }