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);
		}
Exemplo n.º 2
0
 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 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);
        }
Exemplo n.º 5
0
        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);
		}