public override MocaNode serializeToMocaTree(MocaNode actNode) { MocaNode dummyNode = null; EcoreUtil.computeLowerUpperBound(ConnectorEnd.getRealConnectorEnd().Cardinality, ref lowerBound, ref upperBound); if (ConnectorEnd.getRealConnectorEnd().End == "Client") { dummyNode = actNode.appendChildNode("ClientReference"); SQLElement clientEClass = Repository.GetElementByID(this.EaConnector.getRealConnector().ClientID); typeGUID = clientEClass.ElementGUID; refGUID = this.EaConnector.getRealConnector().ConnectorGUID + "Client"; if (this.EaConnector.getRealConnector().SupplierEnd.Role != "") { oppositeGUID = this.EaConnector.getRealConnector().ConnectorGUID + "Supplier"; } containment = this.EaConnector.getRealConnector().SupplierEnd.Aggregation == 2; } else if (ConnectorEnd.getRealConnectorEnd().End == "Supplier") { dummyNode = actNode.appendChildNode("SupplierReference"); SQLElement supplierEClass = Repository.GetElementByID(this.EaConnector.getRealConnector().SupplierID); typeGUID = supplierEClass.ElementGUID; refGUID = this.EaConnector.getRealConnector().ConnectorGUID + "Supplier"; if (this.EaConnector.getRealConnector().ClientEnd.Role != "") { oppositeGUID = this.EaConnector.getRealConnector().ConnectorGUID + "Client"; } containment = this.EaConnector.getRealConnector().ClientEnd.Aggregation == 2; } if (Navigable) { MocaNode ereferenceNode = dummyNode.appendChildNode("EReference"); ereferenceNode.appendChildAttribute("typeGuid", typeGUID); if ((ConnectorEnd.Role == "" || ConnectorEnd.getRealConnectorEnd().Role == null)) { ereferenceNode.appendChildAttribute("name", this.Name); } else { ereferenceNode.appendChildAttribute("name", ConnectorEnd.getRealConnectorEnd().Role); } ereferenceNode.appendChildAttribute(Main.GuidStringName, refGUID); ereferenceNode.appendChildAttribute("lowerBound", lowerBound); ereferenceNode.appendChildAttribute("upperBound", upperBound); ereferenceNode.appendChildAttribute("containment", (containment + "").ToLower()); if (oppositeGUID != "") { ereferenceNode.appendChildAttribute("oppositeGuid", oppositeGUID); } } return(dummyNode); }
public static void configureConnectorEnd(SQLRepository sqlRepository, EA.ConnectorEnd sourceOrTarget, int valueId, String cardinality) { EA.Element targetEClass = sqlRepository.GetElementByID(valueId).getRealElement(); sourceOrTarget.Role = targetEClass.Name.Substring(0, 1).ToLower() + targetEClass.Name.Substring(1, targetEClass.Name.Length - 1); // If the association end has a cardinality larger than 1, add a 'plural s' to the role name. String lowerBound = ""; String upperBound = ""; EcoreUtil.computeLowerUpperBound(cardinality, ref lowerBound, ref upperBound); if (upperBound == EcoreUtil.ARBITRARY_MANY_MULTIPLICITY_PLACEHOLDER || int.Parse(upperBound) > 1) { sourceOrTarget.Role = sourceOrTarget.Role + "s"; } sourceOrTarget.Cardinality = cardinality; sourceOrTarget.Update(); }
private String checkCardinality(String cardinality) { if (cardinality != "") { string lowerBound = ""; string upperBound = ""; int lb = int.MinValue; int ub = int.MinValue; EcoreUtil.computeLowerUpperBound(cardinality, ref lowerBound, ref upperBound); try { lb = int.Parse(lowerBound); if (lb < 0) { throw new Exception(); } } catch { return("multiplicity is invalid: " + cardinality); } if (upperBound == "*") { return(""); } try { ub = int.Parse(upperBound); if ((ub < 0 || lb > ub) && ub != -1) { throw new Exception(); } } catch { return("multiplicity is invalid: " + cardinality); } } return(""); }
public void TestComputeLowerUpperBound_SingleCardinality() { EcoreUtil.computeLowerUpperBound("1", ref lowerBound, ref upperBound); AreEqualLowerAndUpperBounds("1", lowerBound, "1", upperBound); }
public void TestComputeLowerUpperBound_ZeroOrMore() { EcoreUtil.computeLowerUpperBound("0..*", ref lowerBound, ref upperBound); AreEqualLowerAndUpperBounds("0", lowerBound, EcoreUtil.ARBITRARY_MANY_MULTIPLICITY_PLACEHOLDER, upperBound); }
public void TestComputeLowerUpperBound_OneOrTwo() { EcoreUtil.computeLowerUpperBound("1..2", ref lowerBound, ref upperBound); AreEqualLowerAndUpperBounds("1", lowerBound, "2", upperBound); }