예제 #1
0
        /// <summary>
        /// retourne la liste des type de retour des proprietes dynamiques des classes
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="nsmgr"></param>
        /// <returns></returns>
        public static List <List <TypeRetour> > TypeRetourMethodesClasses(XmlDocument doc, XmlNamespaceManager nsmgr)
        {
            XmlNodeList               nodeList2;
            XmlElement                root = doc.DocumentElement;
            List <List <string> >     ListeTypesRetourClasses = new List <List <string> >();
            List <List <TypeRetour> > TypesRetourClasses      = new List <List <TypeRetour> >();

            for (int i = 1; i < Classe.NombreClasses(doc, nsmgr) + 1; i++)
            {
                if (Methode.NombreMethodesClasse(doc, nsmgr)[i - 1] != 0)
                {
                    for (int cmp = 0; cmp < Methode.NombreMethodesClasse(doc, nsmgr)[i - 1]; cmp++)
                    {
                        ListeTypesRetourClasses.Add(new List <string>());
                        string xpath = @"// w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + i + "] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading3']][4] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading4']][" + (cmp + 1) + "] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading5']][3] / following-sibling:: w:tbl / w:tr /w:tc  [count(. | // w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + i + "] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading3']][4] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading4']][" + (cmp + 1) + "] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading5']][4] / preceding-sibling::w:tbl / w:tr /w:tc)= count(// w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + i + "] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading3']][4] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading4']][" + (cmp + 1) + "] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading5']][4] / preceding-sibling::w:tbl / w:tr /w:tc)]";


                        nodeList2 = root.SelectNodes(xpath, nsmgr);

                        foreach (XmlNode isbn2 in nodeList2)
                        {
                            ListeTypesRetourClasses[cmp].Add(isbn2.InnerText);
                        }
                        TypesRetourClasses.Add(ListeATypeRetour(ListeTypesRetourClasses[cmp]));
                    }
                }
            }
            return(TypesRetourClasses);
        }
예제 #2
0
        /// <summary>
        /// Permet de retourner une liste des constructeurs par defaut des classes presentes dans le fichier
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="nsmgr"></param>
        /// <returns></returns>
        public static List <ConstructeurParDefaut> ConstructeursParDefaut(XmlDocument doc, XmlNamespaceManager nsmgr)
        {
            List <List <ParametreEntrant> > parametresEntrants     = ParametreEntrant.GetParametresEntrantsConstructeurParDefautClasse(doc, nsmgr);
            List <ConstructeurParDefaut>    constructeursParDefaut = new List <ConstructeurParDefaut>();
            List <string> descriptions = GetDescriptionContrainteParDefaut(doc, nsmgr);
            List <string> algorithmes  = GetAlgorithmeContrainteParDefaut(doc, nsmgr);

            for (int i = 0; i < Classe.NombreClasses(doc, nsmgr); i++)
            {
                constructeursParDefaut.Add(new ConstructeurParDefaut(descriptions[i], parametresEntrants[i], algorithmes[i]));
            }
            return(constructeursParDefaut);
        }
예제 #3
0
        /// <summary>
        /// Renvoie la liste des constructeurs ( par defaut et initialisation )
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="nsmgr"></param>
        /// <returns></returns>
        public static List <Constructeur> Constructeurs(XmlDocument doc, XmlNamespaceManager nsmgr)
        {
            List <ConstructeurParDefaut>      constructeursParDefaut      = ConstructeurParDefaut.ConstructeursParDefaut(doc, nsmgr);
            List <ConstructeurInitialisation> constructeursInitialisation = ConstructeurInitialisation.ConstructeursInitialisation(doc, nsmgr);
            List <Constructeur> constructeurs = new List <Constructeur>();


            for (int i = 0; i < Classe.NombreClasses(doc, nsmgr); i++)
            {
                constructeurs.Add(new Constructeur(constructeursParDefaut[i], constructeursInitialisation[i]));
            }
            return(constructeurs);
        }
예제 #4
0
        /// <summary>
        /// Fonction qui permet de recuperer la liste des algorithmes des contraintes par defaut de toutes les classes
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="nsmgr"></param>
        /// <returns></returns>
        public static List <string> GetAlgorithmeContrainteParDefaut(XmlDocument doc, XmlNamespaceManager nsmgr)
        {
            XmlNodeList   nodeList2;
            XmlElement    root = doc.DocumentElement;
            List <string> ListeAlgorithmesContraintesParDefautClasse = new List <string>();


            int n = 1;

            for (int i = 1; i < Classe.NombreClasses(doc, nsmgr) + 1; i++)

            {
                string xpath = @"// w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + n + "] / following:: w:p [ w:pPr / w:pStyle [@w:val='Heading3']][2]/ following:: w:p [ w:pPr / w:pStyle [@w:val='Heading4']][1]/following:: w:p [ w:pPr / w:pStyle [@w:val='Heading5']][3]/ following-sibling::w:p [count(. | // w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + n + "] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading3']][2]/following:: w:p [ w:pPr / w:pStyle [@w:val='Heading4']][2] /preceding-sibling::w:p)= count(// w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + n + "] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading3']][2]/following:: w:p [ w:pPr / w:pStyle [@w:val='Heading4']][2]/preceding-sibling::w:p)]";

                string xpath2 = @"// w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + n + "] / following:: w:p [ w:pPr / w:pStyle [@w:val='Heading3']][2]/ following:: w:p [ w:pPr / w:pStyle [@w:val='Heading4']][1]/following:: w:p [ w:pPr / w:pStyle [@w:val='Heading5']][3]/ following-sibling::w:p [count(. | // w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + (n + 1) + "] / preceding-sibling::w:p)= count(// w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + (n + 1) + "] /preceding-sibling::w:p)]";

                string xpath3 = xpath + "[count(. |" + xpath2 + ")" + "= count(" + xpath2 + ")]";
                var    res    = "";

                nodeList2 = root.SelectNodes(xpath3, nsmgr);
                foreach (XmlNode isbn2 in nodeList2)
                {
                    res = res + (isbn2.InnerText);
                }
                if (res != " ")
                {
                    ListeAlgorithmesContraintesParDefautClasse.Add(res);
                }
                if (res == " ")
                {
                    ListeAlgorithmesContraintesParDefautClasse.Add("none");
                }

                n = n + 1;
            }
            while (ListeAlgorithmesContraintesParDefautClasse.Count < Classe.NombreClasses(doc, nsmgr))
            {
                ListeAlgorithmesContraintesParDefautClasse.Add("none");
            }

            return(ListeAlgorithmesContraintesParDefautClasse);
        }
예제 #5
0
        /// <summary>
        /// Fonction qui renvoie la liste de toutes les prorietes dynamiques des classes
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="nsmgr"></param>
        /// <returns></returns>
        public static List <List <ProprieteDynamique> > ProprietesDynamiques(XmlDocument doc, XmlNamespaceManager nsmgr)
        {
            List <List <ProprieteDynamique> > proprietesDynamiques     = new List <List <ProprieteDynamique> >();
            List <List <string> >             nomsProprietesDynamiques = NomsProprietesDynamiquesClasses(doc, nsmgr);
            List <string>             descriptionsProprietesDynamiques = DescriptionsProprietesDynamiquesClasses(doc, nsmgr);
            List <string>             algorithmesProprietesDynamiques  = AlgorithmesProprietesDynamiquesClasses(doc, nsmgr);
            List <List <TypeRetour> > typesRetour = TypeRetour.TypeRetourProprietesDynamiquesClasses(doc, nsmgr);

            for (int i = 1; i < Classe.NombreClasses(doc, nsmgr) + 1; i++)
            {
                if (NombreProprietesDynamiques(doc, nsmgr)[i - 1] != 0)
                {
                    List <ProprieteDynamique> proprietesDynamiquesClasse = new List <ProprieteDynamique>();

                    for (int cmp = 0; cmp < NombreProprietesDynamiques(doc, nsmgr)[i - 1]; cmp++)
                    {
                        proprietesDynamiquesClasse.Add(new ProprieteDynamique(nomsProprietesDynamiques[i - 1][cmp], typesRetour[cmp], descriptionsProprietesDynamiques[cmp], algorithmesProprietesDynamiques[cmp]));
                    }
                    proprietesDynamiques.Add(proprietesDynamiquesClasse);
                }
            }
            return(proprietesDynamiques);
        }
예제 #6
0
        /// <summary>
        /// Fonction qui renvoie la liste de toutes les prorietes dynamiques des classes
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="nsmgr"></param>
        /// <returns></returns>
        public static List <List <Methode> > Methodes(XmlDocument doc, XmlNamespaceManager nsmgr)
        {
            List <List <Methode> >          proprietesDynamiques = new List <List <Methode> >();
            List <List <string> >           nomsMethodes         = NomsMethodesClasses(doc, nsmgr);
            List <string>                   descriptionsMethodes = DescriptionsMethodesClasses(doc, nsmgr);
            List <string>                   algorithmesMethodes  = AlgorithmesMethodesClasses(doc, nsmgr);
            List <List <TypeRetour> >       typesRetour          = TypeRetour.TypeRetourMethodesClasses(doc, nsmgr);
            List <List <ParametreEntrant> > parametresEntrants   = ParametreEntrant.ParametresEntrantsMethodesClasses(doc, nsmgr);

            for (int i = 1; i < Classe.NombreClasses(doc, nsmgr) + 1; i++)
            {
                if (NombreMethodesClasse(doc, nsmgr)[i - 1] != 0)
                {
                    List <Methode> methodesClasse = new List <Methode>();

                    for (int cmp = 0; cmp < NombreMethodesClasse(doc, nsmgr)[i - 1]; cmp++)
                    {
                        methodesClasse.Add(new Methode(nomsMethodes[i - 1][cmp], descriptionsMethodes[cmp], parametresEntrants[cmp], algorithmesMethodes[cmp], typesRetour[cmp]));
                    }
                    proprietesDynamiques.Add(methodesClasse);
                }
            }
            return(proprietesDynamiques);
        }
예제 #7
0
        /// <summary>
        /// retourne les algorithmes des proprietes dynamiques des classes
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="nsmgr"></param>
        /// <returns></returns>
        public static List <string> AlgorithmesProprietesDynamiquesClasses(XmlDocument doc, XmlNamespaceManager nsmgr)
        {
            XmlNodeList   nodeList2;
            XmlElement    root = doc.DocumentElement;
            List <string> ListeDescriptionsProprietesDynamiquesClasse = new List <string>();

            for (int i = 1; i < Classe.NombreClasses(doc, nsmgr) + 1; i++)
            {
                if (NombreProprietesDynamiques(doc, nsmgr)[i - 1] == 0)
                {
                    ListeDescriptionsProprietesDynamiquesClasse.Add("None");
                }

                else
                {
                    for (int cmp = 0; cmp < NombreProprietesDynamiques(doc, nsmgr)[i - 1]; cmp++)
                    {
                        if ((i < Classe.NombreClasses(doc, nsmgr) + 1 && cmp < NombreProprietesDynamiques(doc, nsmgr)[i - 1]) || (i == Classe.NombreClasses(doc, nsmgr) + 1 && cmp < NombreProprietesDynamiques(doc, nsmgr)[i - 1]))
                        {
                            string xpath2 = @"// w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following::w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + i + "]/ following:: w:p [ w:pPr / w:pStyle [@w:val='Heading3']][3]/ following:: w:p [ w:pPr / w:pStyle [@w:val='Heading4']][" + (cmp + 1) + "]/following :: w:p [ w:pPr / w:pStyle [@w:val='Heading5']][3] /following-sibling:: w:p [count(. | // w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following::w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + i + "]/ following:: w:p [ w:pPr / w:pStyle [@w:val='Heading3']][3]/ following:: w:p [ w:pPr / w:pStyle [@w:val='Heading4']][" + (cmp + 2) + "] / preceding-sibling::w:p )= count(// w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2]/following::w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + i + "]/ following:: w:p [ w:pPr / w:pStyle [@w:val='Heading3']][3]/ following:: w:p [ w:pPr / w:pStyle [@w:val='Heading4']][" + (cmp + 2) + "] / preceding-sibling::w:p)]";

                            var res = "";


                            nodeList2 = root.SelectNodes(xpath2, nsmgr);

                            foreach (XmlNode isbn2 in nodeList2)
                            {
                                res = res + (isbn2.InnerText);
                            }
                            ListeDescriptionsProprietesDynamiquesClasse.Add(res);
                        }

                        if (i < Classe.NombreClasses(doc, nsmgr) + 1 && cmp == NombreProprietesDynamiques(doc, nsmgr)[i - 1])
                        {
                            string xpath = @"// w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + i + "] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading3']][3]/following :: w:p [ w:pPr / w:pStyle [@w:val='Heading4']][" + cmp + 1 + "] /following :: w:p [ w:pPr / w:pStyle [@w:val='Heading5']][3] / following-sibling:: w:p [count(. | // w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following::w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + (cmp + 1) + "]/ following:: w:p [ w:pPr / w:pStyle [@w:val='Heading3']][4] / preceding-sibling::w:p )= count(// w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2]/following::w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + (cmp + 1) + "]/ following:: w:p [ w:pPr / w:pStyle [@w:val='Heading3']][4] / preceding-sibling::w:p)]";
                            var    res   = "";
                            nodeList2 = root.SelectNodes(xpath, nsmgr);

                            foreach (XmlNode isbn2 in nodeList2)
                            {
                                res = res + (isbn2.InnerText);
                            }

                            ListeDescriptionsProprietesDynamiquesClasse.Add(res);
                        }



                        if (i == Classe.NombreClasses(doc, nsmgr) && cmp == NombreProprietesDynamiques(doc, nsmgr)[i - 1])
                        {
                            string xpath = @"// w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + i + "] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading3']][3] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading4']][" + (cmp + 1) + "] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading5']][3] / following-sibling::w:p  [count(. | // w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + (i + 1) + "] / preceding-sibling::w:p)= count(// w:p [ w:pPr / w:pStyle [@w:val='Heading1']][2] /following:: w:p [ w:pPr / w:pStyle [@w:val='Heading2']][" + (i + 1) + "] / preceding-sibling::w:p)]";

                            nodeList2 = root.SelectNodes(xpath, nsmgr);

                            foreach (XmlNode isbn2 in nodeList2)
                            {
                                ListeDescriptionsProprietesDynamiquesClasse.Add(isbn2.InnerText);
                            }
                        }
                    }
                }
            }

            return(ListeDescriptionsProprietesDynamiquesClasse);
        }