/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }