public void ShouldNotRejectSameLink() { DataContract source = new DataContract(Store); DataContract target = new DataContract(Store); DataContractBaseCanBeContainedOnContracts link = new DataContractBaseCanBeContainedOnContracts(source, target); ModelElementReference dataElement = new ModelElementReference(Store); dataElement.SetLinkedElement(link.Id); source.DataMembers.Add(dataElement); bool result = AggregationConnectionBuilder.CanAcceptSourceAndTarget(source, target); Assert.IsTrue(result); }
private void UpdatedElement(ModelElementReference element, ElementPropertyChangedEventArgs e) { if (element != null) { if (element.Name.Equals(e.OldValue)) { element.Name = e.NewValue.ToString(); } if (element.Type.Equals(e.OldValue)) { element.Type = e.NewValue.ToString(); } } }
private ModelElementReference GetDataElement(LinkedElementCollection <DataMember> dataElements, Guid linkId) { ModelElementReference dataElementFound = null; foreach (DataMember dataElement in dataElements) { ModelElementReference dataContractDataElement = dataElement as ModelElementReference; if (dataContractDataElement != null && dataContractDataElement.ModelElementGuid == linkId) { dataElementFound = dataContractDataElement; break; } } return(dataElementFound); }
public static ElementLink Connect(ModelElement source, ModelElement target, string targetDataElementName) { Guard.ArgumentNotNull(source, "source"); Guard.ArgumentNotNull(target, "target"); if (CanAcceptSourceAndTarget(source, target)) { if (source is DataContractBase) { if (target is DataContract) { DataContractBase sourceAccepted = (DataContractBase)source; Contract targetAccepted = (Contract)target; ElementLink result = new DataContractBaseCanBeContainedOnContracts(sourceAccepted, targetAccepted); if (DomainClassInfo.HasNameProperty(result)) { DomainClassInfo.SetUniqueName(result); } using (Transaction transaction = targetAccepted.Store.TransactionManager.BeginTransaction()) { ModelElementReference dataElement = target.Store.ElementFactory.CreateElement(ModelElementReference.DomainClassId) as ModelElementReference; dataElement.ModelElementGuid = result.Id; dataElement.Type = sourceAccepted.Name; LinkedElementCollection <DataMember> members = ((DataContract)target).DataMembers; dataElement.Name = GetDataElementName(sourceAccepted.Name, targetAccepted.Name, members); members.Add(dataElement); transaction.Commit(); } return(result); } } } Debug.Fail("Having agreed that the connection can be accepted we should never fail to make one."); throw new InvalidOperationException(); }
private List<DataMember> LoadLinkedElements(DataContractBase sourceElement) { DataContract targetElement = new DataContract(Store); targetElement.Name = DataContractLinkedElementType; DataContractBaseCanBeContainedOnContracts link = new DataContractBaseCanBeContainedOnContracts(sourceElement, targetElement); List<DataMember> dataElements = new List<DataMember>(); ModelElementReference element1 = new ModelElementReference(Store); element1.Name = sourceElement.Name; element1.Type = sourceElement.Name; element1.SetLinkedElement(link.Id); dataElements.Add(element1); return dataElements; }
public void ShouldGetNewNameOnMultipleTargets() { DataContract source = new DataContract(Store); source.Name = "Source"; DataContract target = new DataContract(Store); target.Name = "Target"; DataContractBaseCanBeContainedOnContracts link = new DataContractBaseCanBeContainedOnContracts(source, target); ModelElementReference dataElement = new ModelElementReference(Store); dataElement.Name = "DcdeName"; dataElement.SetLinkedElement(link.Id); source.DataMembers.Add(dataElement); AggregationConnectionBuilder.Connect(source, target); Assert.AreEqual(1, target.DataMembers.Count); dataElement = (ModelElementReference)target.DataMembers[0]; Assert.AreEqual("Source", dataElement.Name); AggregationConnectionBuilder.Connect(source, target); Assert.AreEqual(2, target.DataMembers.Count); dataElement = (ModelElementReference)target.DataMembers[1]; Assert.AreEqual("Source1", dataElement.Name); AggregationConnectionBuilder.Connect(source, target); Assert.AreEqual(3, target.DataMembers.Count); dataElement = (ModelElementReference)target.DataMembers[2]; Assert.AreEqual("Source2", dataElement.Name); }