예제 #1
0
        private void IdentifyGroupNodes()
        {
            groupNodes = new List <PSMElement>();
            foreach (PSMElement element in Diagram.DiagramElements.Keys.OfType <PSMElement>())
            {
                PSMClass psmClass = element as PSMClass;
                if (psmClass == null)
                {
                    continue;
                }
                if (!psmClass.EncompassesContentForParentSignificantNode() &&
                    !psmClass.EncompassesAttributesForParentSignificantNodeOrSelf())
                {
                    continue;
                }

                if (!psmClass.HasElementLabel)
                {
                    groupNodes.Add(element);
                    continue;
                }
                if (changesByTarget.ContainsKey(psmClass))
                {
                    ClassElementNameChange elc =
                        (ClassElementNameChange)
                        changesByTarget[psmClass].FirstOrDefault(
                            change => change is ClassElementNameChange && change.Element == psmClass);
                    if (elc != null && elc.ElementLabelAdded)
                    {
                        groupNodes.Add(element);
                        continue;
                    }
                }
            }
        }
예제 #2
0
        public static IList <EvolutionChange> Detect(Version v1, Version v2, PSMClass psmClass)
        {
            List <EvolutionChange> result = new List <EvolutionChange>();

            if (((PSMClass)psmClass.GetInVersion(v1)).ElementName != ((PSMClass)psmClass.GetInVersion(v2)).ElementName)
            {
                ClassElementNameChange c = new ClassElementNameChange(psmClass)
                {
                    OldVersion = v1, NewVersion = v2
                };
                result.Add(c);
            }

            return(result);
        }