internal void Enforce(ISet <CheckResultProduct2Structure> result, LL.MDE.DataModels.XML.Tag fmStructures) { foreach (CheckResultProduct2Structure match in result) { // Extracting variables binded in source domains LL.MDE.DataModels.EnAr.Package productP = match.matchDomainProductP.productP; string productName = match.matchDomainProductP.productName; LL.MDE.DataModels.EnAr.Element productPE = match.matchDomainProductP.productPE; string productID = match.matchDomainProductP.productID; LL.MDE.DataModels.XML.Tag fmStructureRefs = match.matchDomainFmStructureRefs.fmStructureRefs; LL.MDE.DataModels.XML.Tag fmStructureElements = match.matchDomainFmStructureElements.fmStructureElements; // Assigning variables binded in the where clause // Enforcing each enforced domain MatchDomainFmStructures targetMatchDomainFmStructures = EnforceFmStructures(productID, productName, fmStructures); // Retrieving variables binded in the enforced domains LL.MDE.DataModels.XML.Tag fmStructure = targetMatchDomainFmStructures.fmStructure; LL.MDE.DataModels.XML.Attribute structureId = targetMatchDomainFmStructures.structureId; LL.MDE.DataModels.XML.Tag longName1 = targetMatchDomainFmStructures.longName1; LL.MDE.DataModels.XML.Tag l41 = targetMatchDomainFmStructures.l41; LL.MDE.DataModels.XML.Attribute lAttr1 = targetMatchDomainFmStructures.lAttr1; // Calling other relations as defined in the where clause new RelationCreateProjectStructureLink(editor, transformation).CheckAndEnforce(structureId, fmStructureRefs); new RelationAddStructureRoot(editor, transformation).CheckAndEnforce(productP, fmStructure, fmStructureElements); } }
internal MatchDomainFmStructures EnforceFmStructures(string productID, string productName, LL.MDE.DataModels.XML.Tag fmStructures) { MatchDomainFmStructures match = new MatchDomainFmStructures(); // Contructing fmStructures LL.MDE.DataModels.XML.Tag fmStructure = null; fmStructure = (LL.MDE.DataModels.XML.Tag)editor.CreateNewObjectInField(fmStructures, "childTags"); // Contructing fmStructure editor.AddOrSetInField(fmStructure, "tagname", "FM-STRUCTURE"); LL.MDE.DataModels.XML.Attribute structureId = null; structureId = (LL.MDE.DataModels.XML.Attribute)editor.CreateNewObjectInField(fmStructure, "attributes"); LL.MDE.DataModels.XML.Tag longName1 = null; longName1 = (LL.MDE.DataModels.XML.Tag)editor.CreateNewObjectInField(fmStructure, "childTags"); // Contructing structureId editor.AddOrSetInField(structureId, "name", "ID"); editor.AddOrSetInField(structureId, "value", productID); // Contructing longName1 editor.AddOrSetInField(longName1, "tagname", "LONG-NAME"); LL.MDE.DataModels.XML.Tag l41 = null; l41 = (LL.MDE.DataModels.XML.Tag)editor.CreateNewObjectInField(longName1, "childTags"); // Contructing l41 editor.AddOrSetInField(l41, "tagname", "L-4"); editor.AddOrSetInField(l41, "value", productName); LL.MDE.DataModels.XML.Attribute lAttr1 = null; lAttr1 = (LL.MDE.DataModels.XML.Attribute)editor.CreateNewObjectInField(l41, "attributes"); // Contructing lAttr1 editor.AddOrSetInField(lAttr1, "name", "L"); editor.AddOrSetInField(lAttr1, "value", "Product2Structure"); // Return newly binded variables match.fmStructures = fmStructures; match.fmStructure = fmStructure; match.structureId = structureId; match.longName1 = longName1; match.l41 = l41; match.lAttr1 = lAttr1; return(match); }