/// <summary> /// Ajoute un Point de performances de vol à une Layer de la Pile /// Si la Layer n'existe pas, une Layer est créée pour accueillir le point /// </summary> /// <param name="newPerfPoint">Nouveau point de performance de vol</param> /// <param name="layerFactorValue">Facteur de la layer dans laquelle inscrire le point</param> /// <param name="serieFactorValue">Facteur de la série dans laquelle inscrire le point</param> /// <returns>True si l'ajout est réussi, False dans le cas contaire</returns> public bool add(PerfPoint newPerfPoint, double serieFactorValue, double layerFactorValue) { bool foundIt = false; bool success = false; // Recherche de la layer de même factorValue for (int count = 0; count < perfLayerList.Count; count++) { if (layerFactorValue == layerAt(count).factorValue) { foundIt = true; success = layerAt(count).add(newPerfPoint, serieFactorValue); break; } } // Pas de Layer ayant un facteur de même valeur, on cré une nouvelle layer if (!foundIt) { // Création d'une nouvelle layer PerfLayer newLayer = new PerfLayer(layerFactorValue, pointFactorName, pointFactorUnitCode, serieFactorName, serieFactorUnitCode, outputName, outputUnitCode); success = newLayer.add(newPerfPoint, serieFactorValue); if (success) { success = add(newLayer); } } return(success); }
/// <summary> /// Formate un élément XML pour refléter un objet PerfLayer /// </summary> /// <param name="pp">Objet PerfLayer</param> /// <returns>Un élément XML</returns> private XElement xmlPerfLayer(PerfLayer pl) { XElement xElem = new XElement("Layer", new XAttribute("Name", pl.outputName), new XAttribute("Key", pl.dataBaseKey), new XAttribute("Factor", pl.factorValue), new XAttribute("PointFactorName", pl.pointFactorName), new XAttribute("PointFactorUnitCode", pl.pointFactorUnitCode), new XAttribute("SerieFactorName", pl.serieFactorName), new XAttribute("SerieFactorUnitCode", pl.serieFactorUnitCode)); XElement xColElem = new XElement("Series"); // Ajout de chaque série de la Layer for (int count = 0; count < pl.count; count++) { xColElem.Add(xmlPerfSerie(pl.SerieAt(count))); } xElem.Add(xColElem); return(xElem); }
/* * SERVICES */ /// <summary> /// Ajoute une layer dans la pile /// </summary> /// <param name="newPerfLayer">Nouvelle layer à ajouter à la pile</param> /// <returns>True si l'ajout est réussi, False dans le cas contaire</returns> public bool add(PerfLayer newPerfLayer) { // Deux PerfLayer ne peuvent pas avoir le même factorValue foreach (PerfLayer pl in perfLayerList) { if (pl.Compare(pl, newPerfLayer) == 0) { return(false); } } // Insertion dans la liste classée, en réponse à une difficulté avec la fonction Sort() bool inserted = false; for (int count = 0; count < perfLayerList.Count; count++) { if (newPerfLayer.factorValue < layerAt(count).factorValue) { perfLayerList.Insert(count, newPerfLayer); inserted = true; } } // Si la layer n'a pas été insérée, c'est qu'il faut l'insérer à la fin de la liste if (!inserted) { perfLayerList.Add(newPerfLayer); } // Récupération des informations des dimensions pointFactorName = newPerfLayer.pointFactorName; pointFactorUnitCode = newPerfLayer.pointFactorUnitCode; serieFactorName = newPerfLayer.serieFactorName; serieFactorUnitCode = newPerfLayer.serieFactorUnitCode; // Le domaine de calcul est à redéfinir ranged = false; return(true); }