private void IntTblWiz2_Load(object sender, System.EventArgs e) { Frame.Description = "Choose, if the relation is directed or bidirectional."; RelatedTableInfo rti1 = model.IntermediateTableNode.IntermediateTable[0]; RelatedTableInfo rti2 = model.IntermediateTableNode.IntermediateTable[1]; RelationDirection dir = rti1.RelationDirection; if (dir == RelationDirection.Bidirectional) { radioBi.Checked = true; } else if (dir == RelationDirection.DirectedFromMe) { radioFromMe.Checked = true; } else { radioToMe.Checked = true; } this.lblBi.Text = rti1.Table + " <-> " + rti2.Table; this.lblFromMe.Text = rti1.Table + " -> " + rti2.Table; this.lblToMe.Text = rti1.Table + " <- " + rti2.Table; // This would be the right view to specify a relation name. // But we don't implement it, because it doesn't make much sense, // as long as a mapping table can't be mapped twice. }
public override void OnLeaveView() { RelatedTableInfo rti = model.IntermediateTableNode.IntermediateTable[model.Index]; rti.IsElement = radioElement.Checked; rti.IsComposite = radioComposite.Checked; if (rti.RelationDirection == RelationDirection.Bidirectional && model.Index == 1 && rti.IsComposite) { RelatedTableInfo rti2 = model.IntermediateTableNode.IntermediateTable[0]; if (rti2.IsComposite) { MessageBox.Show("Only one side of a bidirectional relation can be a composite. Setting '" + rti2.Type + "." + rti2.FieldName + "' to Assoziation."); } rti2.IsComposite = false; } if (radioArrayList.Checked) { rti.CodingStyle = CodingStyle.ArrayList; } if (radioIList.Checked) { rti.CodingStyle = CodingStyle.IList; } if (radioNDOArrayList.Checked) { rti.CodingStyle = CodingStyle.NDOArrayList; } }
public override void FromXml(XmlElement element) { base.FromXml(element); this.tableName = element.Attributes["TableName"].Value; this.relatedTableInfo = new RelatedTableInfo(); XmlElement tiElement = (XmlElement)element.SelectSingleNode("RelatedTableInfo"); this.relatedTableInfo.FromXml(tiElement); }
public void FromXml(XmlElement element) { this.name = element.Attributes["Name"].Value; for (int i = 0; i < 2; i++) { XmlElement tiElement = (XmlElement)element.SelectSingleNode("TableInfo" + i); tableInfo[i] = new RelatedTableInfo(); tableInfo[i].FromXml(tiElement); } }
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 override void OnLeaveView() { RelatedTableInfo rti1 = model.IntermediateTableNode.IntermediateTable[0]; RelatedTableInfo rti2 = model.IntermediateTableNode.IntermediateTable[1]; if (radioBi.Checked) { rti1.RelationDirection = RelationDirection.Bidirectional; } else if (radioFromMe.Checked) { rti1.RelationDirection = RelationDirection.DirectedFromMe; } else { rti1.RelationDirection = RelationDirection.DirectedToMe; } rti2.RelationDirection = RelationDirectionClass.Reverse(rti1.RelationDirection); }
public ForeignIntermediateTableRelation(RelatedTableInfo relatedTableInfo, string tableName) { this.relatedTableInfo = relatedTableInfo; this.tableName = tableName; base.IsForeign = true; }
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 IntermediateTable(string name) { tableInfo[0] = new RelatedTableInfo(); tableInfo[1] = new RelatedTableInfo(); this.name = name; }
private void IntTblWiz3_Load(object sender, System.EventArgs e) { RelatedTableInfo rti = model.IntermediateTableNode.IntermediateTable[model.Index]; string description = "Enter the field name of the relation in the class '" + rti.Type + "'. "; description += "The relation type Composite couples the life cycle of the related object to the life cycle of the parent.\n\n"; description += "If the cardinality is n, the coding style determines, which type is used for the relation variable. Otherwise the type of the relation variable is the related class."; Frame.Description = description; lblClass.Text = rti.Type; if (rti.FieldName == string.Empty) { RelatedTableInfo otherRti = model.IntermediateTableNode.IntermediateTable[(model.Index + 1) % 2]; string name; if (rti.IsElement) { name = model.FindTable(rti.Table).Table.ClassName; } else { name = otherRti.Table.Replace(" ", string.Empty); } rti.FieldName = name.Substring(0, 1).ToLower() + name.Substring(1); } if (rti.IsElement) { radioElement.Checked = true; } else { radioList.Checked = true; } if (rti.IsComposite) { radioComposite.Checked = true; } else { radioAssoziation.Checked = true; } gbCodingStyle.Enabled = !rti.IsElement; if (rti.CodingStyle == CodingStyle.ArrayList) { radioArrayList.Checked = true; } else if (rti.CodingStyle == CodingStyle.IList) { radioIList.Checked = true; } else { radioNDOArrayList.Checked = true; } #if !NDO11 radioArrayList.Text = "List<T>"; radioIList.Text = "IList<T>"; radioNDOArrayList.Visible = false; #endif this.txtFieldName.DataBindings.Add("Text", rti, "FieldName"); }