/// <summary> /// inserts a typepanne to "typepanne.xml". /// </summary> /// <param name="expert">The object holding the data</param> /// <returns></returns> private static bool insert(TypePanne failureType) { try { XmlDocument XmlDoc = new XmlDocument(); XPathNavigator Navigator; XPathNodeIterator Nodes; Int32 ID; /* Variable utilisée pour savoir quel est l'ID qu'il faut affecter au nouveau * noeud créé */ string rslt = Helper.service.LoadFile("typepanne.xml").ToString(); StreamWriter sw = new StreamWriter(System.Windows.Forms.Application.StartupPath + "\\temp.xml"); sw.Write(rslt); sw.Close(); XmlDoc.Load(System.Windows.Forms.Application.StartupPath + "\\temp.xml"); Navigator = XmlDoc.CreateNavigator(); /* Recherche du noeud MaxID pour déterminer quelle sera l'ID du nouveau * procedure. */ string ExpXPath = "//MaxID"; Nodes = Navigator.Select(Navigator.Compile(ExpXPath)); Nodes.MoveNext(); /* On place l'ID le plus élevé du document dans la variable ID */ ID = Nodes.Current.ValueAsInt; /* On incrémente la valeur du noeud MaxID car une fois notre nouveau noeud * créé, l'ID le plus élevé du document sera aussi incrémenté */ Nodes.Current.SetValue((ID + 1).ToString()); /* On se place sur le noeud ayant l'ID le plus élevé */ //ExpXPath = "//type[@id='" + ID.ToString() + "']"; Nodes = Navigator.Select(Navigator.Compile(ExpXPath)); if (Nodes.Count != 0) { Nodes.MoveNext(); /* On crée le noeud principal (procedure). */ Nodes.Current.InsertElementAfter("", "type", "", ""); /* On se place sur le noeud ainsi créé. */ Nodes.Current.MoveToNext(XPathNodeType.Element); ID++; /* On incrémente ID pour que sa valeur soit identique à celle se * trouvant dans le noeud MaxID. */ /* Encodage des données */ Nodes.Current.CreateAttribute("", "id", "", ID.ToString()); Nodes.Current.AppendChildElement("", "libelle", "", failureType.getName()); Nodes.Current.AppendChildElement("", "description", "", failureType.getDescription()); //XmlDoc.Save((Stream)Helper.service.LoadFile("typepanne.xml"); Helper.service.SaveXmlFile("typepanne.xml", XmlDoc); } else { return(false); } } catch (System.IO.FileNotFoundException x) { }catch (Exception x) {// System.Windows.Forms.MessageBox.Show(x.ToString()); } return(true); }
public static bool Add(TypePanne failureType) { //If the file exists we insert a new element. if (Helper.service.FileExists("typepanne.xml")) { return(insert(failureType)); } else //Otherwise we create the file and insert the first elemet. { return(firstAdd(failureType)); } }
public static TypePanne GetById(int id) { /* On déclare et on crée une instance des variables nécéssaires pour la recherche */ TypePanne type = new TypePanne(); try { string rslt = Helper.service.LoadFile("typepanne.xml").ToString(); StreamWriter sw = new StreamWriter(System.Windows.Forms.Application.StartupPath + "\\temp.xml"); sw.Write(rslt); sw.Close(); //XPathDocument XPathDocu = new XPathDocument((Stream)Helper.service.LoadFile("Experts.xml")); XPathDocument XPathDocu = new XPathDocument(System.Windows.Forms.Application.StartupPath + "\\temp.xml"); XPathNavigator Navigator; XPathNodeIterator Nodes; /* On affecte false à la * /* On crée un navigateur */ Navigator = XPathDocu.CreateNavigator(); string ExpXPath = "//type[@id='" + id + "']"; /* On lance la recherche */ Nodes = Navigator.Select(Navigator.Compile(ExpXPath)); /* On vérifie si la recherche a été fructueuse */ if (Nodes.Count != 0) { Nodes.MoveNext(); // NOTE: Necéssaire pour se placer sur le noeud recherché /* Encodage des données dans la classe Etape */ type.setId(id); Nodes.Current.MoveToFirstChild(); /* On se déplace sur le premier noeud * enfant "Libelle" */ type.setName(Nodes.Current.Value); Nodes.Current.MoveToNext(); // On se déplace sur le noeud suivant "Description" type.setDescription(Nodes.Current.Value); Nodes.Current.MoveToNext(); } /* Si aucun expert n'a été trouvé */ else { type = null; } } catch (System.IO.FileNotFoundException x) { }catch (Exception x) { System.Windows.Forms.MessageBox.Show(x.ToString()); } /* Renvoi de toutes les données dans une instance de la classe "etape" */ return(type); }
/// <summary> /// Creates the file "typepanne.xml" and inserts the first typepanne to it. /// </summary> /// <param name="expert">The object holding the data.</param> /// <returns></returns> private static bool firstAdd(TypePanne failureType) { try { XmlWriterSettings wSettings = new XmlWriterSettings(); wSettings.Indent = true; MemoryStream ms = new MemoryStream(); XmlWriter xw = XmlWriter.Create(ms, wSettings);// Write Declaration xw.WriteStartDocument(); // Write the root node xw.WriteStartElement("TypePanne"); // Write the expert and the expert elements xw.WriteStartElement("type"); xw.WriteStartAttribute("id"); xw.WriteString("0"); xw.WriteEndAttribute(); //---------------- xw.WriteStartElement("libelle"); xw.WriteString(failureType.getName()); xw.WriteEndElement(); //----------------- xw.WriteStartElement("description"); xw.WriteString(failureType.getDescription()); xw.WriteEndElement(); //----------------- xw.WriteEndElement(); xw.WriteStartElement("MaxID"); xw.WriteString("0"); xw.WriteEndElement(); // Close the document xw.WriteEndDocument(); // Flush the write xw.Flush(); Byte[] buffer = new Byte[ms.Length]; buffer = ms.ToArray(); string xmlOutput = System.Text.Encoding.UTF8.GetString(buffer); //File.WriteAllText((Stream)Helper.service.LoadFile("typepanne.xml", xmlOutput); Helper.service.CreateXmlFile("typepanne.xml", xmlOutput); } catch (System.IO.FileNotFoundException x) { }catch (Exception x) {// System.Windows.Forms.MessageBox.Show(x.ToString()); } return(true); }
/// <summary> /// Modifies the DailureType Data. /// </summary> /// <param name="login">The id of the target FailureType object.</param> /// <param name="admin">The object that holds the new data.</param> /// <returns></returns> public static bool Update(int id, TypePanne failureType) { try { /* On utilise un XmlDocument et non un XPathDocument car ce dernier ne permet * pas l'édition des données XML. */ XmlDocument XmlDoc = new XmlDocument(); XPathNavigator Navigator; XPathNodeIterator Nodes; string rslt = Helper.service.LoadFile("typepanne.xml").ToString(); StreamWriter sw = new StreamWriter(System.Windows.Forms.Application.StartupPath + "\\temp.xml"); sw.Write(rslt); sw.Close(); XmlDoc.Load(System.Windows.Forms.Application.StartupPath + "\\temp.xml"); Navigator = XmlDoc.CreateNavigator(); string ExpXPath = "//type[@id='" + id.ToString() + "']"; Nodes = Navigator.Select(Navigator.Compile(ExpXPath)); if (Nodes.Count != 0) { /* Encodage des nouvelles données */ Nodes.MoveNext(); Nodes.Current.MoveToFirstAttribute(); Nodes.Current.SetValue(failureType.getId().ToString()); Nodes.Current.MoveToParent(); Nodes.Current.MoveToFirstChild(); //System.Windows.Forms.MessageBox.Show(Nodes.Current.Name.ToString() + " | " + Nodes.Current.Value.ToString()); Nodes.Current.SetValue(failureType.getName()); Nodes.Current.MoveToNext(XPathNodeType.Element); Nodes.Current.SetValue(failureType.getDescription()); //XmlDoc.Save((Stream)Helper.service.LoadFile("typepanne.xml"); Helper.service.SaveXmlFile("typepanne.xml", XmlDoc); } else { return(false); } } catch (System.IO.FileNotFoundException x) { }catch (Exception x) { System.Windows.Forms.MessageBox.Show(x.ToString()); } return(true); }
private void lnkLbl_ExistantFailureType_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { //get the list of types of failure frm_ListOf frm = new frm_ListOf(Subject.FailureTypeSbjct); frm.ShowDialog(); if (frm.Tag != null) { this.failureType = (TypePanne)frm.Tag; txtBx_FailureType.Text = this.failureType.getName(); FailureTypeDesc = this.failureType.getDescription(); this.Failure = null; txtBx_Failure.Clear(); } }
private void btn_Save_DataBase_Click(object sender, EventArgs e) { //try { // //Remember that this button could be used to add new elements to the DB as it could be used to update them. //Put in mind to treat this issue.Abdelalim // //Check for emty fields. if (Check_Fields()) { if (this.procedure.steps.Count > 0) { //Set the procedure final values this.procedure.setName(txtBx_Title.Text); this.procedure.setDescription(txtBx_Description.Text); //Set the failuretype final values if (this.failureType == null) { this.failureType = new TypePanne(); } this.failureType.setName(txtBx_FailureType.Text); this.failureType.setDescription(FailureTypeDesc); //Set the failure final values if (this.Failure == null) { this.Failure = new Panne(); } this.Failure.setName(txtBx_Failure.Text); this.Failure.setDescription(FailureDesc); this.failureType.addPanne(Failure); //Add new proecedure. if (this._Operation == Operation.AddNew) { //If no existing Failure type is chosen create new one. if (this.failureType == null) { //Get the Id of the new failure type (type de panne). this.failureType = new TypePanne(); this.failureType.setName(txtBx_FailureType.Text); this.failureType.setDescription(FailureTypeDesc); } //If no existing Failure is chosen create new one. if (this.Failure == null) { this.Failure = new Panne(); this.Failure.setName(txtBx_Failure.Text); this.Failure.setDescription(FailureDesc); //Add _Failure to the list of failures of the FailureType object. this.failureType.addPanne(this.Failure); } //Addthe procedure to the Failure's list of procedures. this.Failure.addProcedure(procedure); //Save the failure type (le type de panne). if (!failureType.Exists())//If a new type is created we save it to the data base. { failureType.Add(); Failure.Add();// Save the failure to the DB since it belongs to a newly created FailureType. } else//If the FailureType exists we check for the the failure(panne). //Save the failure (la panne). { failureType.Update(failureType.getId()); if (!Failure.Exists())//If a new type is created we save it to the data base. { Failure.Add(); } else { Failure.Update(Failure.getId()); } } // //Saving the procedure. // procedure.AddToDB(); //MessageBox.Show("Proc.Steps.count: " + this.procedure.getEtapes().Count, "frm_AddProcedure.btn_Save"); //Save the steps. foreach (Etape step in this.procedure.getEtapes()) { //Associates each step with the current procedure. //procedure.addEtape(step); step.setprocedure(this.procedure); //MessageBox.Show("Etape.Proc: " + step.getprocedure().getId(), "frm_AddProcedure.btn_Save"); //Save the step and its objects to the file etape.xml. step.Add(); } } else//Update an existing procedure. { //Addthe procedure to the Failure's list of procedures. this.Failure.addProcedure(procedure); //MessageBox.Show("Falure.name: " + Failure.getId(), "frm_AddPrecedure.btn_Save"); // //Saving the procedure. // procedure.Update(this.procedure.getId()); //Save the steps. if (StepsRemoved) { //Remove all the steps of the current procedure from the data base. //MessageBox.Show("Proc.steps.count: " + this.procedure.getEtapes().Count, "frm_AddProcedure.btn_Save"); Etape.RemoveByProcedure(this.procedure.getId()); } //In case we allow the user to update the failure and its type from this GUI. //Update the FailureType. failureType.Update(failureType.getId()); //Update the failure (la panne). Failure.Update(Failure.getId()); //MessageBox.Show("Steps.Count: "+this.procedure.getEtapes().Count, "frm_AddProcedure.btn_Save"); foreach (Etape step in this.procedure.steps) { //Associates each step with the current procedure. step.setprocedure(this.procedure); //If the current step exists in the DB means we're about to update it. if (step.Exists()) { step.Update(step.getId()); } else { //Save the step and its objects to the file etape.xml. step.Add(); //MessageBox.Show("Step "+step.getName()+" added","frm_AddProcedure.btn_Save"); } } } } else { MessageBox.Show(this, "La procedure doit avoir au minimum une étape.", "Message d'erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } else { MessageBox.Show(this, "Remplir les champs importants d'abord.", "Message d'erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } MessageBox.Show(this, "Opération terminée avec succès.", "Message d'information", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Tag = this.procedure; this.Close(); } //catch (Exception x) { MessageBox.Show(x.ToString()); } }
public frm_AddProcedure(TypePanne type, Panne failure, Procedure procedure, Operation operation) { InitializeComponent(); //Initialize the attributes. failureType = type; Failure = failure; this.procedure = procedure; this.StepsRemoved = false; this._Operation = operation; //Use the GUI to add a new procedure. if (this._Operation == Operation.AddNew) { if (this.procedure == null) { this.procedure = new Procedure(); //Create the list of steps for the current procedure. this.procedure.steps = new List <Etape>(); } } //Use the GUI to update a procedure. else { if (type != null) { //txtBx_FailureType.ReadOnly = true; //txtBx_FailureType.Enabled = false; txtBx_FailureType.Text = failureType.getName(); FailureTypeDesc = type.getDescription(); } else { MessageBox.Show("Type est null", "frm_AddProcedure.Constructor"); throw new ArgumentNullException(); } if (failure != null) { //txtBx_Failure.ReadOnly = true; //txtBx_Failure.Enabled = false; txtBx_Failure.Text = failure.getName(); FailureDesc = failure.getDescription(); } else { MessageBox.Show("Panne est null", "frm_AddProcedure.Constructor"); throw new ArgumentNullException(); } if (this.procedure != null) { txtBx_Title.Text = this.procedure.getName(); txtBx_Description.Text = this.procedure.getDescription(); if (this.procedure.steps != null && this.procedure.steps.Count > 0) { foreach (Etape step in this.procedure.getEtapes()) { //Fill the list view with the step's data. ListViewItem item = new ListViewItem(new string[] { step.getId().ToString(), step.getName(), step.getDescription() }); lstVew_Steps.Items.Add(item); } } } else { MessageBox.Show("Procedure est null", "frm_AddProcedure.Constructor"); throw new ArgumentNullException(); } } //Set the value of the Id textBox. txtBx_Id.Text = this.procedure.getId().ToString(); #region Load the form text fields to Fields list. Fields.Add(txtBx_Title); if (failureType == null) { Fields.Add(txtBx_FailureType); } if (Failure == null) { Fields.Add(txtBx_Failure); } #endregion #region Load the form labels to FieldLabels list. FieldLabels.Add(lbl_Title); if (failureType == null) { FieldLabels.Add(lbl_FailureType); } if (Failure == null) { FieldLabels.Add(lbl_Failure); } #endregion }
/// <summary> /// Returns the list of the types of failure. /// </summary> /// <returns></returns> public static List <TypePanne> GetAllFailureTypes() { /* On déclare et on crée une instance des variables nécéssaires pour la recherche */ List <TypePanne> types = new List <TypePanne>(); TypePanne type = new TypePanne(); try { string rslt = Helper.service.LoadFile("typepanne.xml").ToString(); StreamWriter sw = new StreamWriter(System.Windows.Forms.Application.StartupPath + "\\temp.xml"); sw.Write(rslt); sw.Close(); //XPathDocument XPathDocu = new XPathDocument((Stream)Helper.service.LoadFile("Experts.xml")); XPathDocument XPathDocu = new XPathDocument(System.Windows.Forms.Application.StartupPath + "\\temp.xml"); XPathNavigator Navigator; XPathNodeIterator Nodes; /* On affecte false à la * /* On crée un navigateur */ Navigator = XPathDocu.CreateNavigator(); string ExpXPath = "//type"; /* On lance la recherche */ Nodes = Navigator.Select(Navigator.Compile(ExpXPath)); /* On vérifie si la recherche a été fructueuse */ //System.Windows.Forms.MessageBox.Show("Node.count. "+Nodes.Count,"XMLFailureType.GetAllFailureTypes"); if (Nodes.Count != 0) { // NOTE: Necéssaire pour se placer sur le noeud recherché /* Encodage des données dans la classe Etape */ int tillCount = 0; while (tillCount < Nodes.Count) { Nodes.MoveNext(); type = new TypePanne(); type.setId(Convert.ToInt32(Nodes.Current.GetAttribute("id", ""))); //System.Windows.Forms.MessageBox.Show("Attrib. " + Nodes.Current.GetAttribute("id", ""), "XMLFailureType.GetAllFailureTypes"); Nodes.Current.MoveToFirstChild(); /* On se déplace sur le premier noeud * enfant "Libelle" */ //System.Windows.Forms.MessageBox.Show("Current: " + Nodes.Current.Name + " Current.Value " + Nodes.Current.Value, "XMLFailureType.GetAllFailureTypes"); type.setName(Nodes.Current.Value); //System.Windows.Forms.MessageBox.Show("libelle. " + Nodes.Current.Value, "XMLFailureType.GetAllFailureTypes"); Nodes.Current.MoveToNext(); // On se déplace sur le noeud suivant "Description" //System.Windows.Forms.MessageBox.Show("Description. " + Nodes.Current.Value, "XMLFailureType.GetAllFailureTypes"); type.setDescription(Nodes.Current.Value); //System.Windows.Forms.MessageBox.Show("Type.Description. " +type.getDescription() , "XMLFailureType.GetAllFailureTypes"); types.Add(type); tillCount++; Nodes.Current.MoveToParent(); } } /* Si aucun expert n'a été trouvé */ else { type = null; } } catch (System.IO.FileNotFoundException x) { } catch (Exception x) { System.Windows.Forms.MessageBox.Show(x.ToString()); } /* Renvoi de toutes les données dans une instance de la classe "etape" */ return(types); }
public frm_ListOf(Subject sbjct, TypePanne type) { InitializeComponent(); this.Sbjct = sbjct; this.Typepanne = type; }