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);
        }
Exemple #4
0
        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);
        }
Exemple #6
0
        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();
Exemple #8
0
 public static void TrySave <T>(this IXmlStorable storable, T inputobj, XElement element, bool saveAttributes)
 {
 }