EKG_Project.IO.R_Peaks_Data_Worker.Save C# (CSharp) Method

Save() public method

public Save ( ECG_Data data ) : void
data EKG_Project.Modules.ECG_Data
return void
        public void Save(ECG_Data data)
        {
            if (data is R_Peaks_Data)
            {
                R_Peaks_Data basicData = data as R_Peaks_Data;

                ECG_Worker ew = new ECG_Worker();
                XmlDocument file = new XmlDocument();
                string fileName = analysisName + "_Data.xml";
                file.Load(System.IO.Path.Combine(directory, fileName));
                XmlNode root = file.SelectSingleNode("EKG");

                XmlElement module = file.CreateElement(string.Empty, "module", string.Empty);
                string moduleName = this.GetType().Name;
                moduleName = moduleName.Replace("_Data_Worker", "");

                XmlNodeList existingModules = file.SelectNodes("EKG/module");
                foreach (XmlNode existingModule in existingModules)
                {
                    if (existingModule.Attributes["name"].Value == moduleName)
                    {
                        root.RemoveChild(existingModule);
                    }
                }

                module.SetAttribute("name", moduleName);
                root.AppendChild(module);

                List<Tuple<string, Vector<double>>> rPeaks = basicData.RPeaks;
                foreach (var tuple in rPeaks)
                {
                    XmlElement RPeaks = file.CreateElement(string.Empty, "RPeaks", string.Empty);
                    module.AppendChild(RPeaks);

                    XmlElement lead = file.CreateElement(string.Empty, "lead", string.Empty);
                    XmlText leadValue = file.CreateTextNode(tuple.Item1);
                    lead.AppendChild(leadValue);
                    RPeaks.AppendChild(lead);

                    XmlElement indices = file.CreateElement(string.Empty, "indices", string.Empty);
                    string indicesText = null;
                    foreach (var value in tuple.Item2)
                    {
                        indicesText += value.ToString() + " ";
                    }

                    XmlText indicesValue = file.CreateTextNode(indicesText);
                    indices.AppendChild(indicesValue);
                    RPeaks.AppendChild(indices);
                }

                List<Tuple<string, Vector<double>>> rrIntervals = basicData.RRInterval;
                foreach (var tuple in rrIntervals)
                {
                    XmlElement RRInterval = file.CreateElement(string.Empty, "RRInterval", string.Empty);
                    module.AppendChild(RRInterval);

                    XmlElement lead = file.CreateElement(string.Empty, "lead", string.Empty);
                    XmlText leadValue = file.CreateTextNode(tuple.Item1);
                    lead.AppendChild(leadValue);
                    RRInterval.AppendChild(lead);

                    XmlElement intervals = file.CreateElement(string.Empty, "intervals", string.Empty);
                    string intervalsText = null;
                    foreach (var value in tuple.Item2)
                    {
                        intervalsText += value.ToString() + " ";
                    }

                    XmlText intervalsValue = file.CreateTextNode(intervalsText);
                    intervals.AppendChild(intervalsValue);
                    RRInterval.AppendChild(intervals);
                }

                ew.InternalXMLFile = file;

                file.Save(System.IO.Path.Combine(directory, fileName));

            }
        }