public bool IsExist(IXmlStorable obj) { var xml = XElement.Load(obj.FilePath); var duplicate = xml.Descendants("Id").Where(elt => (string)elt == obj.Id); return(duplicate != null && duplicate.Count() > 0); }
public void Add(IXmlStorable obj) { if (IsExist(obj)) { var result = MessageBox.Show( "Объект уже существует в базе данных. Хотите заменить его?", "Предупреждение", MessageBoxButton.YesNo ); if (result == MessageBoxResult.No) { return; } else { Delete(obj); } } var xml = XElement.Load(obj.FilePath); obj.Id = Guid.NewGuid().ToString(); var xmlObject = obj.MapToXml(); xml.Add(xmlObject); xml.Save(obj.FilePath); }
public void Replace(IXmlStorable oldObj, IXmlStorable newObj) { if (!IsExist(oldObj)) { throw new DatabaseNotFoundException($"Объект ({oldObj.GetType ().Name} Id: {oldObj.Id}) не найден в базе данных"); } var xml = XElement.Load(oldObj.FilePath); var oldXmlObject = Find(oldObj, xml); oldXmlObject.Remove(); Add(newObj); }
public static void TrySave <T>(T inputobj, XElement element, bool saveAttributes) { if (Equals(inputobj, null)) { return; } Type inputType = typeof(T); if (inputType == typeof(object)) { inputType = inputobj.GetType(); } IList listVersion = inputobj as IList; IDictionary dictVersion = inputobj as IDictionary; IXmlStorable xmlstorableVerison = inputobj as IXmlStorable; ISerializable serialiableVersion = inputobj as ISerializable; }
public void Delete(IXmlStorable obj, bool withNotification = false) { if (!IsExist(obj)) { throw new DatabaseNotFoundException($"Объект ({obj.GetType ().Name} Id: {obj.Id}) не найден в базе данных"); } if (withNotification) { var result = MessageBox.Show("Вы действительно хотите удалить объект?", "Предупреждение", MessageBoxButton.YesNo); if (result == MessageBoxResult.No) { return; } } var xml = XElement.Load(obj.FilePath); var xmlObject = Find(obj, xml); xmlObject.Remove(); xml.Save(obj.FilePath); }
public virtual void ToXml(XmlElement element) { element.SetAttribute("Type", this.GetType().FullName); element.SetAttribute("Text", this.Text); element.SetAttribute("FixupId", this.GetHashCode().ToString()); if (tnparent != null) { element.SetAttribute("Parent", this.tnparent.GetHashCode().ToString()); } IXmlStorable storable = myObject as IXmlStorable; if (myObject != null && storable == null) { MessageBox.Show("ToXml: Type " + myObject.GetType().FullName + " is not an IXmlStorable.", "Class Generator", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { XmlElement objectElement = element.OwnerDocument.CreateElement("Entity"); element.AppendChild(objectElement); objectElement.SetAttribute("Type", myObject.GetType().FullName); storable.ToXml(objectElement); } }
public XElement Find(IXmlStorable obj, XElement xml) => xml.Elements(obj.GetType().Name).Where(elt => ((string)elt.Element("Id")) == obj.Id)?.First();
public static void TrySave <T>(this IXmlStorable storable, T inputobj, XElement element, bool saveAttributes) { }