예제 #1
0
 private static void TranslateAttributes(IHasPSMAttributes hasPsmAttributes, ChangesDetectorContext context)
 {
     foreach (PSMAttribute psmAttribute in hasPsmAttributes.PSMAttributes)
     {
         TranslateAttribute(psmAttribute, context);
     }
 }
 public static IList <EvolutionChange> Detect(Version v1, Version v2, IHasPSMAttributes hasAttributes)
 {
     return((from psmAttribute in hasAttributes.PSMAttributes
             where psmAttribute.GetInVersion(v1) == null && psmAttribute.GetInVersion(v2) != null
             select new HasAttributesAttributeAddedChange(hasAttributes, psmAttribute)
     {
         OldVersion = v1, NewVersion = v2
     }).Cast <EvolutionChange>().ToList());
 }
예제 #3
0
 internal override void CommandOperation()
 {
     if (AttributeContainer == null)
     {
         removedFrom = DeletedAttribute.Class;
     }
     else
     {
         removedFrom = AttributeContainer;
     }
     DeletedAttribute.RemoveMeFromModel();
     associatedElements.Add(removedFrom);
 }
 public HasAttributesAttributeAddedChange(IHasPSMAttributes hasAttributes, PSMAttribute newAttribute) : base(hasAttributes)
 {
     NewAttribute = newAttribute;
 }
예제 #5
0
 public ControlsPSMAttributes(IHasPSMAttributes attributeHolder, DiagramController diagramController)
 {
     AttributeHolder   = attributeHolder;
     DiagramController = diagramController;
 }
예제 #6
0
        private void FillTable()
        {
            // load all constructs in old version
            foreach (Element oldE in DiagramOldVersion.DiagramElements.Keys.Where(k => !(k is Comment)))
            {
                comboItemsList.Add(oldE);
                if (oldE is IHasAttributes)
                {
                    comboItemsList.AddRange(((IHasAttributes)oldE).Attributes);
                }
                if (oldE is IHasPSMAttributes)
                {
                    comboItemsList.AddRange(((IHasPSMAttributes)oldE).PSMAttributes);
                }
            }
            // load all constructs in new version
            List <Element> newElements = DiagramNewVersion.DiagramElements.Keys.Where(k => !(k is Comment)).ToList();

            // fill comboboxes with new version items

            ItemsList.Clear();
            foreach (Element newElement in newElements)
            {
                #region item

                MappingGridItem mappingGridItem = new MappingGridItem {
                    NewVersionConstructName = newElement.ToString(), NewVersionConstruct = newElement, Type = newElement.GetType().Name.Substring(1)
                };
                ItemsList.Add(mappingGridItem);
                IVersionedElement elementOldVersion = newElement.GetInVersion(OldVersion);
                if (elementOldVersion != null)
                {
                    mappingGridItem.OldVersionConstructName = elementOldVersion.ToString();
                    mappingGridItem.OldVersionConstruct     = (Element)elementOldVersion;
                    mappingGridItem.OriginalMapping         = mappingGridItem.OldVersionConstruct;
                }
                else
                {
                    Element found;
                    if (NameMatch(comboItemsList, newElement, out found))
                    {
                        mappingGridItem.OldVersionConstructName = found.ToString();
                        mappingGridItem.OldVersionConstruct     = found;
                    }
                }

                #endregion

                #region psm attributes

                if (newElement is IHasPSMAttributes)
                {
                    foreach (PSMAttribute attribute in ((IHasPSMAttributes)newElement).PSMAttributes)
                    {
                        MappingGridItem attributeItem = new MappingGridItem
                        {
                            NewVersionConstructName = attribute.ToString(),
                            NewVersionConstruct     = attribute,
                            Type = String.Format("PSMA in {0}", newElement)
                        };
                        attributeItem.Color = Brushes.DarkGreen;
                        IHasPSMAttributes elementOldVersionHA = null;
                        if (mappingGridItem.OldVersionConstruct != null)
                        {
                            elementOldVersionHA = (IHasPSMAttributes)mappingGridItem.OldVersionConstruct;
                        }
                        IVersionedElement atOld = attribute.GetInVersion(OldVersion);
                        if (atOld != null)
                        {
                            attributeItem.OldVersionConstruct     = (Element)atOld;
                            attributeItem.OriginalMapping         = mappingGridItem.OldVersionConstruct;
                            attributeItem.OldVersionConstructName = attributeItem.OldVersionConstruct.ToString();
                        }
                        else if (elementOldVersionHA != null)
                        {
                            PSMAttribute found;
                            if (NameMatch(elementOldVersionHA.PSMAttributes, attribute, out found))
                            {
                                attributeItem.OldVersionConstruct     = found;
                                attributeItem.OldVersionConstructName = attributeItem.OldVersionConstruct.ToString();
                            }
                        }
                        ItemsList.Add(attributeItem);
                    }
                }
                #endregion

                #region pim attributes

                else if (newElement is IHasAttributes)
                {
                    foreach (Property attribute in ((IHasAttributes)newElement).Attributes)
                    {
                        MappingGridItem attributeItem = new MappingGridItem
                        {
                            NewVersionConstructName = attribute.ToString(),
                            NewVersionConstruct     = attribute,
                            Type = String.Format("PSMA in {0}", newElement)
                        };
                        attributeItem.Color = Brushes.DarkGreen;
                        IHasAttributes elementOldVersionHA = null;
                        if (mappingGridItem.OldVersionConstruct != null)
                        {
                            elementOldVersionHA = (IHasAttributes)mappingGridItem.OldVersionConstruct;
                        }
                        IVersionedElement atOld = attribute.GetInVersion(OldVersion);
                        if (atOld != null)
                        {
                            attributeItem.OldVersionConstruct     = (Element)atOld;
                            attributeItem.OriginalMapping         = mappingGridItem.OldVersionConstruct;
                            attributeItem.OldVersionConstructName = attributeItem.OldVersionConstruct.ToString();
                        }
                        else if (elementOldVersionHA != null)
                        {
                            Property found;
                            if (NameMatch(elementOldVersionHA.Attributes, attribute, out found))
                            {
                                attributeItem.OldVersionConstruct     = found;
                                attributeItem.OldVersionConstructName = attributeItem.OldVersionConstruct.ToString();
                            }
                        }
                        ItemsList.Add(attributeItem);
                    }
                }

                #endregion
            }

            mapToColumn.ItemsSource = comboItemsList;
            dataGrid1.ItemsSource   = ItemsList;

            lUnmapped.Content = ItemsList.Count(i => i.OldVersionConstruct == null);
        }
예제 #7
0
        public override void Execute(object parameter)
        {
            IHasPSMAttributes hasAttributes = (IHasPSMAttributes)GetElement();

            SelectItemsDialog selectVersion = new SelectItemsDialog();
            List <Version>    _versions     = new List <Version>(CurrentProject.VersionManager.Versions.Where(ver => ver.Number < hasAttributes.Version.Number));
            Version           v;

            if (_versions.Count > 1)
            {
                selectVersion.UseRadioButtons = true;
                selectVersion.SetItems(_versions);
                selectVersion.ShortMessage = "Select version";
                selectVersion.LongMessage  = "Select version to map to.";
                selectVersion.Title        = "Select version";

                if (selectVersion.ShowDialog() != true || selectVersion.selectedObjects.Count != 1)
                {
                    return;
                }
                v = (Version)selectVersion.selectedObjects[0];
            }
            else
            {
                v = _versions[0];
            }

            SelectItemsDialog selectAttributes = new SelectItemsDialog();

            selectAttributes.UseRadioButtons = true;
            selectAttributes.SetItems(hasAttributes.PSMAttributes);
            selectAttributes.ShortMessage = "Select attribute";
            selectAttributes.LongMessage  = "Select attribute for mapping.";
            selectAttributes.Title        = "Select attribute";
            selectAttributes.SelectItem(hasAttributes.PSMAttributes.FirstOrDefault(a => a.GetInVersion(v) == null));
            if (selectAttributes.ShowDialog() != true || selectAttributes.selectedObjects.Count != 1)
            {
                return;
            }

            IVersionedElement selectedAttribute = (IVersionedElement)selectAttributes.selectedObjects[0];
            Version           currentVersion    = selectedAttribute.Version;

            Diagram diagram = (Diagram)ActiveDiagramView.Diagram.GetInVersion(v);

            if (diagram == null)
            {
                XCaseYesNoBox.ShowOK("Diagram not present", "Diagram does not exist in this version. ");
                return;
            }


            List <Element> _candidates = new List <Element>();

            foreach (var element in ((IHasPSMAttributes)hasAttributes.GetInVersion(v)).PSMAttributes.Where
                         (e => e.GetType() == selectedAttribute.GetType() && e.IsFirstVersion && e.GetInVersion(currentVersion) == null))
            {
                _candidates.Add(element);
            }

            if (_candidates.Count == 0)
            {
                XCaseYesNoBox.ShowOK("Not found", "No possible elements found for this item. ");
                return;
            }

            SelectItemsDialog selectElement = new SelectItemsDialog();

            selectElement.UseRadioButtons = true;
            selectElement.SetItems(_candidates);
            Element guess = _candidates.FirstOrDefault(c => c.ToString() == selectedAttribute.ToString());

            selectElement.SelectItem(guess);
            selectElement.ShortMessage = "Select element";
            selectElement.LongMessage  = "Select element to map to.";
            selectElement.Title        = "Select element";

            if (selectElement.ShowDialog() != true || selectElement.selectedObjects.Count != 1)
            {
                return;
            }

            Element el = (Element)selectElement.selectedObjects[0];

            CurrentProject.VersionManager.RegisterBranch(el, selectedAttribute, currentVersion, true, el.Version);
        }
예제 #8
0
 public HasAttributesAttributeRemovedChange(IHasPSMAttributes hasAttributes, PSMAttribute removedAttribute)
     : base(hasAttributes)
 {
     RemovedAttribute = removedAttribute;
 }
예제 #9
0
 protected HasAttributesChange(IHasPSMAttributes hasAttributes)
 {
     Element = hasAttributes;
 }