public bool SaveTree(string fileName, GenTree tree) { XDocument xmlTree = new XDocument(); XElement root = new XElement("tree"); try { root.SetAttributeValue("name", tree.Name); root.SetAttributeValue("createDate", tree.DateOfCreate.ToString()); root.SetAttributeValue("lastEditDate", tree.DateOfLastEdit.ToString()); root.SetAttributeValue("id", tree.ID); root.SetAttributeValue("information", tree.Information); XElement xPersons = new XElement("persons"); List<Person> persons = tree.Persons.GetPersonsList(); PersonToXml personToXml = new PersonToXml(); XElement xPerson; foreach (Person person in persons) { if (personToXml.AddToElement(person, out xPerson)) { xPersons.Add(xPerson); } else return false; } root.Add(xPersons); XElement xTable = new XElement("table"); List<RelationBetweenTwoPerson> relations = tree.Relations.GetRelationList(); RelationToXml relationToXml = new RelationToXml(); XElement xRelation; foreach(RelationBetweenTwoPerson relation in relations) { if (!relationToXml.AddToElement(relation, out xRelation)) { return false; } else xTable.Add(xRelation); } root.Add(xTable); xmlTree.Add(root); xmlTree.Save(fileName); return true; } catch (Exception) { return false; } }
public bool OpenTree(string fileName, out GenTree tree,bool isReadInformationOnly=false) { try { if (File.Exists(fileName)) { XmlTextReader xmlFile = new XmlTextReader(fileName); XDocument xmlTree = XDocument.Load(xmlFile); XElement root = xmlTree.Root; string treename = root.Attribute("name").Value; DateTime createTime = DateTime.Parse(root.Attribute("createDate").Value); DateTime lastEditTime = DateTime.Parse(root.Attribute("lastEditDate").Value); int id = Int32.Parse(root.Attribute("id").Value); string information = root.Attribute("information").Value; if (isReadInformationOnly) { tree = new GenTree(createTime, lastEditTime, treename, information, id,null, null); return true; } List<Person> personList = new List<Person>(); Person somePerson; PersonToXml readPerson = new PersonToXml(); foreach(XElement xmlPerson in root.Elements("persons").Elements()) { if (readPerson.GetFromElement(xmlPerson, out somePerson)) { personList.Add(somePerson); } else { tree = null; return false; } } PersonList.GetPersonList(personList); List<RelationBetweenTwoPerson> relationList = new List<RelationBetweenTwoPerson>(); RelationBetweenTwoPerson relation; RelationToXml readRelation = new RelationToXml(); foreach (XElement xmlRelation in root.Element("table").Elements()) { if(readRelation.GetFromElement(xmlRelation,out relation)) { relationList.Add(relation); } else { tree = null; return false; } } tree = new GenTree(createTime,lastEditTime,treename,information,id,personList,relationList); return true; } else { throw new FileNotFoundException(); } } catch(Exception) { tree = null; return false; } }
public bool SetCurrentTree(GenTree tree) { _currentTree = tree; return true; }
public bool SetCurrentTree(int index) { if (!isFromBase) { try { GenTree curTreeInfo = _listOfTreeInfo[index]; return (new TreeToXml().OpenTree(_treeCatalogName + "\\" + curTreeInfo.Name + ".xml", out _currentTree)); } catch { _currentTree = null; return false; } } else { try { GenTree curTreeInfo = _listOfTreeInfo[index]; _currentTree = new TreeDB().OpenTree(curTreeInfo.ID, _builder); return true; } catch { _currentTree = null; return false; } } }
public bool GetTreeInfoFromIndex(int index, out GenTree tree) { try { tree = _listOfTreeInfo[index]; return true; } catch (Exception) { tree = null; return false; } }
public bool GetTreeFromID(int ID, out GenTree tree) { try { tree = _listOfTreeInfo.Single<GenTree>(x => x.ID == ID); if (tree != null) return true; else throw new FieldAccessException(); } catch (Exception) { tree = null; return false; } }