示例#1
0
        public override void Execute(UMLRelationship r, ActionMap map, List <PreFile> prefiles)
        {
            UMLClass a            = null;
            UMLClass b            = null;
            UMLClass ac           = null;
            int      defaultDetsA = 0;
            int      defaultDetsB = 0;
            PreFile  prefA;
            PreFile  prefB;
            PreRET   temp;

            RelationshipHelper.GetClasses(r, ref a, ref b, this.IsAlternate, ref defaultDetsA, ref defaultDetsB);


            if (r is UMLAssociation)
            {
                ac = ((UMLAssociation)r).AssociationClass;
            }

            prefA = PreFileHelper.GetPreFileWithClass(a, prefiles);
            prefB = PreFileHelper.GetPreFileWithClass(b, prefiles);

            if (prefA == null)
            {
                if (prefB == null)
                {
                    prefA = new PreFile();
                    prefA.Rets.Add(new PreRET());
                    prefA.Rets.Add(new PreRET());
                    prefA.Rets[0].Classes.Add(a);
                    prefA.Rets[1].Classes.Add(b);
                    prefiles.Add(prefA);

                    if (ac != null)
                    {
                        prefA.Rets.Add(new PreRET());
                        prefA.Rets[2].Classes.Add(ac);
                    }
                }
                else
                {
                    temp = new PreRET();
                    temp.Classes.Add(a);
                    prefB.Rets.Add(temp);
                }
            }
            else
            {
                if (prefB == null)
                {
                    temp = new PreRET();
                    temp.Classes.Add(b);
                    prefA.Rets.Add(temp);
                }
            }
        }
示例#2
0
        public static void GetClasses(UMLRelationship r, ref UMLClass a, ref UMLClass b, bool isAlternate, ref int defaultDetsA, ref int defaultDetsB)
        {
            if (r is UMLAssociation)
            {
                if (isAlternate)
                {

                    switch (((UMLAssociation)r).End2.MultiplicityKind)
                    {
                        case MultiplicityKind.MANY:
                        case MultiplicityKind.ONETOMANY:
                        case MultiplicityKind.ZEROTOMANY: defaultDetsA = 1; break;
                    }

                    switch (((UMLAssociation)r).End1.MultiplicityKind)
                    {
                        case MultiplicityKind.MANY:
                        case MultiplicityKind.ONETOMANY:
                        case MultiplicityKind.ZEROTOMANY: defaultDetsB = 1; break;
                    }

                    a = ((UMLAssociation)r).End2.Participant;
                    b = ((UMLAssociation)r).End1.Participant;
                }
                else
                {

                    switch (((UMLAssociation)r).End1.MultiplicityKind)
                    {
                        case MultiplicityKind.MANY:
                        case MultiplicityKind.ONETOMANY:
                        case MultiplicityKind.ZEROTOMANY: defaultDetsA = 1; break;
                    }

                    switch (((UMLAssociation)r).End2.MultiplicityKind)
                    {
                        case MultiplicityKind.MANY:
                        case MultiplicityKind.ONETOMANY:
                        case MultiplicityKind.ZEROTOMANY: defaultDetsB = 1; break;
                    }

                    a = ((UMLAssociation)r).End1.Participant;
                    b = ((UMLAssociation)r).End2.Participant;
                }
            }
            else if (r is UMLGeneralization)
            {
                a = ((UMLGeneralization)r).Parent;
                b = ((UMLGeneralization)r).Child;
            }
            else if (r is UMLRealization)
            {
                a = ((UMLRealization)r).Supplier;
                b = ((UMLRealization)r).Client;
            }
        }
示例#3
0
        public static void GetClasses(UMLRelationship r, ref UMLClass a, ref UMLClass b, bool isAlternate, ref int defaultDetsA, ref int defaultDetsB)
        {
            if (r is UMLAssociation)
            {
                if (isAlternate)
                {
                    switch (((UMLAssociation)r).End2.MultiplicityKind)
                    {
                    case MultiplicityKind.MANY:
                    case MultiplicityKind.ONETOMANY:
                    case MultiplicityKind.ZEROTOMANY: defaultDetsA = 1; break;
                    }

                    switch (((UMLAssociation)r).End1.MultiplicityKind)
                    {
                    case MultiplicityKind.MANY:
                    case MultiplicityKind.ONETOMANY:
                    case MultiplicityKind.ZEROTOMANY: defaultDetsB = 1; break;
                    }

                    a = ((UMLAssociation)r).End2.Participant;
                    b = ((UMLAssociation)r).End1.Participant;
                }
                else
                {
                    switch (((UMLAssociation)r).End1.MultiplicityKind)
                    {
                    case MultiplicityKind.MANY:
                    case MultiplicityKind.ONETOMANY:
                    case MultiplicityKind.ZEROTOMANY: defaultDetsA = 1; break;
                    }

                    switch (((UMLAssociation)r).End2.MultiplicityKind)
                    {
                    case MultiplicityKind.MANY:
                    case MultiplicityKind.ONETOMANY:
                    case MultiplicityKind.ZEROTOMANY: defaultDetsB = 1; break;
                    }

                    a = ((UMLAssociation)r).End1.Participant;
                    b = ((UMLAssociation)r).End2.Participant;
                }
            }
            else if (r is UMLGeneralization)
            {
                a = ((UMLGeneralization)r).Parent;
                b = ((UMLGeneralization)r).Child;
            }
            else if (r is UMLRealization)
            {
                a = ((UMLRealization)r).Supplier;
                b = ((UMLRealization)r).Client;
            }
        }
示例#4
0
        //PreFile Methods
        #region PreFile Methods

        public static PreFile GetPreFileWithClass(UMLClass c, List<PreFile> prefiles)
        {
            foreach (PreFile p in prefiles)
            {
                foreach (PreRET r in p.Rets)
                {
                    foreach (UMLClass d in r.Classes)
                    {
                        if (d.Guid.Equals(c.Guid))
                        {
                            return p;
                        }
                    }
                }
            }
            return null;
        }
示例#5
0
        //PreFile Methods
        #region PreFile Methods

        public static PreFile GetPreFileWithClass(UMLClass c, List <PreFile> prefiles)
        {
            foreach (PreFile p in prefiles)
            {
                foreach (PreRET r in p.Rets)
                {
                    foreach (UMLClass d in r.Classes)
                    {
                        if (d.Guid.Equals(c.Guid))
                        {
                            return(p);
                        }
                    }
                }
            }
            return(null);
        }
示例#6
0
        //PreRET Methods
        #region PreRET Methods
        public static List<PreRET> GetPreRETsWithClass(UMLClass c, PreFile p)
        {
            List<PreRET> rets = new List<PreRET>();

            foreach (PreRET r in p.Rets)
            {
                foreach (UMLClass d in r.Classes)
                {
                    if (d.Guid.Equals(c.Guid))
                    {
                        rets.Add(r);
                    }
                }
            }
            if (rets.Count == 0)
            {
                return null;
            }
            else
            {
                return rets;
            }
        }
示例#7
0
        //PreRET Methods
        #region PreRET Methods
        public static List <PreRET> GetPreRETsWithClass(UMLClass c, PreFile p)
        {
            List <PreRET> rets = new List <PreRET>();

            foreach (PreRET r in p.Rets)
            {
                foreach (UMLClass d in r.Classes)
                {
                    if (d.Guid.Equals(c.Guid))
                    {
                        rets.Add(r);
                    }
                }
            }
            if (rets.Count == 0)
            {
                return(null);
            }
            else
            {
                return(rets);
            }
        }
示例#8
0
        public void CheckIfTheObjectIsClicked_WhenPointNotNull_ShouldReturnBool(UMLClass rectangle, Point point, bool expected)
        {
            bool actual = rectangle.CheckIfTheObjectIsClicked(point);

            Assert.AreEqual(expected, actual);
        }
示例#9
0
        public override void Execute(UMLRelationship r, ActionMap map, List <PreFile> prefiles)
        {
            UMLClass a            = null;
            UMLClass b            = null;
            int      defaultDetsA = 0;
            int      defaultDetsB = 0;
            PreFile  prefA;
            PreFile  prefB;
            PreRET   temp;

            RelationshipHelper.GetClasses(r, ref a, ref b, this.IsAlternate, ref defaultDetsA, ref defaultDetsB);

            prefA = PreFileHelper.GetPreFileWithClass(a, prefiles);
            prefB = PreFileHelper.GetPreFileWithClass(b, prefiles);

            if (prefA == null)
            {
                if (prefB == null)
                {
                    prefA = new PreFile();
                    prefA.Rets.Add(new PreRET());
                    prefA.Rets.Add(new PreRET());
                    prefA.Rets[0].Classes.Add(a);
                    prefA.Rets[1].Classes.Add(b);
                    prefA.Rets[1].Parents.Add(prefA.Rets[0]);

                    prefiles.Add(prefA);
                }
                else
                {
                    temp = new PreRET();
                    temp.Classes.Add(a);
                    prefB.Rets.Add(temp);

                    foreach (PreRET ret in PreFileHelper.GetPreRETsWithClass(b, prefB))
                    {
                        ret.Parents.Add(temp);
                    }
                }
            }
            else
            {
                if (prefB == null)
                {
                    temp = new PreRET();
                    temp.Classes.Add(b);
                    prefA.Rets.Add(temp);

                    foreach (PreRET ret in PreFileHelper.GetPreRETsWithClass(a, prefA))
                    {
                        temp.Parents.Add(ret);
                    }
                }
                else
                {
                    foreach (PreRET retparent in PreFileHelper.GetPreRETsWithClass(a, prefA))
                    {
                        foreach (PreRET retchild in PreFileHelper.GetPreRETsWithClass(b, prefB))
                        {
                            retchild.Parents.Add(retparent);
                            //Merging to form the Real RET is done in the FileProcessing
                        }
                    }

                    prefA.Merge(prefB);
                    prefiles.Remove(prefB);
                }
            }
        }
示例#10
0
        public override void Execute(UMLRelationship r, ActionMap map, List <PreFile> prefiles)
        {
            UMLClass a            = null;
            UMLClass b            = null;
            UMLClass ac           = null;
            int      defaultDetsA = 0;
            int      defaultDetsB = 0;
            PreFile  prefA;
            PreFile  prefB;

            RelationshipHelper.GetClasses(r, ref a, ref b, this.IsAlternate, ref defaultDetsA, ref defaultDetsB);


            if (r is UMLAssociation)
            {
                ac = ((UMLAssociation)r).AssociationClass;
            }

            prefA = PreFileHelper.GetPreFileWithClass(a, prefiles);
            prefB = PreFileHelper.GetPreFileWithClass(b, prefiles);

            if (prefA == null)
            {
                if (prefB == null)
                {
                    prefA = new PreFile();
                    prefA.Rets.Add(new PreRET());
                    prefA.Rets[0].Classes.Add(a);
                    prefA.Rets[0].Classes.Add(b);

                    if (ac != null)
                    {
                        prefA.Rets[0].Classes.Add(ac);
                    }

                    prefiles.Add(prefA);
                }
                else
                {
                    foreach (PreRET ret in PreFileHelper.GetPreRETsWithClass(b, prefB))
                    {
                        ret.Classes.Add(a);
                        if (ac != null)
                        {
                            ret.Classes.Add(ac);
                        }
                    }
                }
            }
            else
            {
                if (prefB == null)
                {
                    foreach (PreRET ret in PreFileHelper.GetPreRETsWithClass(a, prefA))
                    {
                        ret.Classes.Add(b);
                        if (ac != null)
                        {
                            ret.Classes.Add(ac);
                        }
                    }
                }
                else
                {
                    foreach (PreRET reta in PreFileHelper.GetPreRETsWithClass(a, prefA))
                    {
                        foreach (PreRET retb in PreFileHelper.GetPreRETsWithClass(b, prefB))
                        {
                            reta.Merge(retb);
                            prefB.Rets.Remove(retb);

                            if (ac != null)
                            {
                                reta.Classes.Add(ac);
                            }
                        }
                    }

                    prefA.Merge(prefB);
                    prefiles.Remove(prefB);
                }
            }
        }
示例#11
0
        public override void Execute(UMLRelationship r, ActionMap map, List <PreFile> prefiles)
        {
            UMLClass a = null;
            UMLClass b = null;
            int      defaultDetsA = 0;
            int      defaultDetsB = 0;
            PreFile  temp, tempA, tempB;

            RelationshipHelper.GetClasses(r, ref a, ref b, this.IsAlternate, ref defaultDetsA, ref defaultDetsB);

            //1st File
            if ((tempA = PreFileHelper.GetPreFileWithClass(a, prefiles)) == null)
            {
                tempA = new PreFile();
                tempA.Rets.Add(new PreRET());
                tempA.Rets[0].Classes.Add(a);
                prefiles.Add(tempA);
            }
            tempA.DefaultDets += defaultDetsA;

            //2nd File
            if ((tempB = PreFileHelper.GetPreFileWithClass(b, prefiles)) == null)
            {
                tempB = new PreFile();
                tempB.Rets.Add(new PreRET());
                tempB.Rets[0].Classes.Add(b);
                prefiles.Add(tempB);
            }

            tempB.DefaultDets += defaultDetsB;

            //3rd File (only if there is an Association-Class)
            if (r is UMLAssociation)
            {
                if (((UMLAssociation)r).AssociationClass != null)
                {
                    UMLClass dependencyClass             = null;
                    UMLClass associationClass            = ((UMLAssociation)r).AssociationClass;
                    UMLDependencyCollection dependencies = associationClass.GetDependencies();

                    foreach (UMLDependency d in dependencies)
                    {
                        d.Client   = Helper.GetDependencyClient <UMLClass>(d.Guid);
                        d.Supplier = Helper.GetDependencySupplier <UMLClass>(d.Guid);

                        if ((d.Client.Guid == associationClass.Guid && d.Supplier.Guid == a.Guid) ||
                            (d.Supplier.Guid == associationClass.Guid && d.Client.Guid == a.Guid))
                        {
                            dependencyClass = a;
                        }
                        else if ((d.Client.Guid == associationClass.Guid && d.Supplier.Guid == b.Guid) ||
                                 (d.Supplier.Guid == associationClass.Guid && d.Client.Guid == b.Guid))
                        {
                            dependencyClass = b;
                        }
                    }
                    if (dependencyClass == null)
                    {
                        //temp = PreFileHelper.GetPreFileWithClass(a, prefiles);
                        //if (temp == null)
                        temp = new PreFile();
                        temp.Rets.Add(new PreRET());
                        temp.Rets[0].Classes.Add(((UMLAssociation)r).AssociationClass);
                        prefiles.Add(temp);
                    }
                    else if (dependencyClass == a)
                    {
                        PreRET pret = new PreRET();
                        pret.Classes.Add(associationClass);
                        tempA.Rets.Add(pret);
                    }
                    else if (dependencyClass == b)
                    {
                        PreRET pret = new PreRET();
                        pret.Classes.Add(associationClass);
                        tempB.Rets.Add(pret);
                    }
                }
            }
        }