public virtual void LoadServices() { services = new List <ServiceElement>(); FileInfo file = XmlFile.GetFile(SERVICES_FILE_NAME); if (file.Exists) { XDocument doc = XDocument.Load(file.FullName); foreach (XElement element in doc.Element("services").Elements("service")) { string sOid = (from attrib in element.Attributes() where attrib.Name == "oid" select attrib.Value).Single(); long oid = Convert.ToInt64(sOid, 16); string id = (from attrib in element.Attributes() where attrib.Name == "id" select attrib.Value).Single(); string type = (from attrib in element.Attributes() where attrib.Name == "type" select attrib.Value).SingleOrDefault(); type = type ?? id; var service = new ServiceElement(SerialOid.CreatePersistent(oid, type), id); services.Add(service); } } }
private static IQueryable <IOid> LoadInstances(string type) { FileInfo typeFile = XmlFile.GetFile(type); if (typeFile.Exists) { return((from instance in XDocument.Load(typeFile.FullName).Element("instances").Elements("instance") let sOid = (string)instance.Attribute("id") select SerialOid.CreatePersistent(Convert.ToInt64(sOid, 16), type)).Cast <IOid>().AsQueryable()); } return(new List <IOid>().AsQueryable()); }
private static void WriteInstanceFile(string name, IEnumerable <IOid> instances) { using (XmlWriter writer = XmlWriter.Create(XmlFile.GetFile(name).FullName, XmlFile.Settings)) { writer.WriteStartElement("instances"); writer.WriteAttributeString("name", name); foreach (IOid instance in instances) { writer.WriteStartElement("instance"); writer.WriteAttributeString("id", EncodedOid(instance)); writer.WriteEndElement(); } writer.WriteEndElement(); } }
public void SaveServices() { using (XmlWriter writer = XmlWriter.Create(XmlFile.GetFile(SERVICES_FILE_NAME).FullName, XmlFile.Settings)) { writer.WriteStartElement("services"); foreach (ServiceElement element in services) { writer.WriteStartElement("service"); writer.WriteAttributeString("oid", EncodedOid(element.Oid)); writer.WriteAttributeString("id", element.Id); writer.WriteAttributeString("type", element.TypeName); writer.WriteEndElement(); } writer.WriteEndElement(); } }
/// <summary> /// Read in the next unique number for the object identifier /// </summary> public virtual long NextId() { string sId = null; if (XmlFile.GetFile("oid").Exists) { XDocument doc = XDocument.Load(XmlFile.GetFile("oid").FullName); sId = doc.Element("number").Value; } long longValue = string.IsNullOrEmpty(sId) ? 0 : Convert.ToInt64(sId, 16); long nextId = longValue + 1; using (XmlWriter writer = XmlWriter.Create(XmlFile.GetFile("oid").FullName, XmlFile.Settings)) { writer.WriteStartElement("number"); writer.WriteValue(nextId.ToString("x")); writer.WriteEndElement(); } return(nextId); }
public virtual Data LoadData(IOid oid) { XDocument doc = XDocument.Load(XmlFile.GetFile(Filename(oid)).FullName); CollectionData collection = null; ObjectData objectData = null; string fieldName = ""; foreach (XElement element in doc.Descendants()) { LoadNode(element, ref collection, ref objectData, ref fieldName); } if (objectData != null) { return(objectData); } if (collection != null) { return(collection); } throw new FindObjectException("No data found for " + oid + " (possible missing file)"); }
private static void WriteData(IOid xoid, Data data) { using (XmlWriter writer = XmlWriter.Create(XmlFile.GetFile(Filename(xoid)).FullName, XmlFile.Settings)) { WriteData(data, writer); } }