public List<Variable> getOrderedVariables(StructuredDataStructure structuredDataStructure)
{
DataStructureManager dsm = new DataStructureManager();
XmlDocument doc = (XmlDocument)structuredDataStructure.Extra;
XmlNode order;
if (doc == null)
{
doc = new XmlDocument();
XmlNode root = doc.CreateNode(System.Xml.XmlNodeType.Element, "extra", null);
doc.AppendChild(root);
}
if (doc.GetElementsByTagName("order").Count == 0)
{
if (structuredDataStructure.Variables.Count > 0)
{
order = doc.CreateNode(System.Xml.XmlNodeType.Element, "order", null);
foreach (Variable v in structuredDataStructure.Variables)
{
XmlNode variable = doc.CreateNode(System.Xml.XmlNodeType.Element, "variable", null);
variable.InnerText = v.Id.ToString();
order.AppendChild(variable);
}
doc.FirstChild.AppendChild(order);
structuredDataStructure.Extra = doc;
dsm.UpdateStructuredDataStructure(structuredDataStructure);
}
}
order = doc.GetElementsByTagName("order")[0];
List<Variable> orderedVariables = new List<Variable>();
if (structuredDataStructure.Variables.Count != 0)
{
foreach (XmlNode x in order)
{
foreach (Variable v in structuredDataStructure.Variables)
{
if (v.Id == Convert.ToInt64(x.InnerText))
orderedVariables.Add(v);
}
}
}
return orderedVariables;
}