Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
124
Scripts/Services/Reports/Persistence/PersistenceReader.cs
Normal file
124
Scripts/Services/Reports/Persistence/PersistenceReader.cs
Normal file
@@ -0,0 +1,124 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Xml;
|
||||
|
||||
namespace Server.Engines.Reports
|
||||
{
|
||||
public abstract class PersistenceReader
|
||||
{
|
||||
public PersistenceReader()
|
||||
{
|
||||
}
|
||||
|
||||
public abstract bool HasChild { get; }
|
||||
public abstract int GetInt32(string key);
|
||||
|
||||
public abstract bool GetBoolean(string key);
|
||||
|
||||
public abstract string GetString(string key);
|
||||
|
||||
public abstract DateTime GetDateTime(string key);
|
||||
|
||||
public abstract bool BeginChildren();
|
||||
|
||||
public abstract void FinishChildren();
|
||||
|
||||
public abstract PersistableObject GetChild();
|
||||
|
||||
public abstract void ReadDocument(PersistableObject root);
|
||||
|
||||
public abstract void Close();
|
||||
}
|
||||
|
||||
public class XmlPersistenceReader : PersistenceReader
|
||||
{
|
||||
private readonly StreamReader m_Reader;
|
||||
private readonly XmlTextReader m_Xml;
|
||||
private readonly string m_Title;
|
||||
private bool m_HasChild;
|
||||
private bool m_WasEmptyElement;
|
||||
public XmlPersistenceReader(string filePath, string title)
|
||||
{
|
||||
this.m_Reader = new StreamReader(filePath);
|
||||
this.m_Xml = new XmlTextReader(this.m_Reader);
|
||||
this.m_Xml.WhitespaceHandling = WhitespaceHandling.None;
|
||||
this.m_Title = title;
|
||||
}
|
||||
|
||||
public override bool HasChild
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_HasChild;
|
||||
}
|
||||
}
|
||||
public override int GetInt32(string key)
|
||||
{
|
||||
return XmlConvert.ToInt32(this.m_Xml.GetAttribute(key));
|
||||
}
|
||||
|
||||
public override bool GetBoolean(string key)
|
||||
{
|
||||
return XmlConvert.ToBoolean(this.m_Xml.GetAttribute(key));
|
||||
}
|
||||
|
||||
public override string GetString(string key)
|
||||
{
|
||||
return this.m_Xml.GetAttribute(key);
|
||||
}
|
||||
|
||||
public override DateTime GetDateTime(string key)
|
||||
{
|
||||
string val = this.m_Xml.GetAttribute(key);
|
||||
|
||||
if (val == null)
|
||||
return DateTime.MinValue;
|
||||
|
||||
return XmlConvert.ToDateTime(val, XmlDateTimeSerializationMode.Utc);
|
||||
}
|
||||
|
||||
public override bool BeginChildren()
|
||||
{
|
||||
this.m_HasChild = !this.m_WasEmptyElement;
|
||||
|
||||
this.m_Xml.Read();
|
||||
|
||||
return this.m_HasChild;
|
||||
}
|
||||
|
||||
public override void FinishChildren()
|
||||
{
|
||||
this.m_Xml.Read();
|
||||
}
|
||||
|
||||
public override PersistableObject GetChild()
|
||||
{
|
||||
PersistableType type = PersistableTypeRegistry.Find(this.m_Xml.Name);
|
||||
PersistableObject obj = type.Constructor();
|
||||
|
||||
this.m_WasEmptyElement = this.m_Xml.IsEmptyElement;
|
||||
|
||||
obj.Deserialize(this);
|
||||
|
||||
this.m_HasChild = (this.m_Xml.NodeType == XmlNodeType.Element);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
public override void ReadDocument(PersistableObject root)
|
||||
{
|
||||
Console.Write("Reports: {0}: Loading...", this.m_Title);
|
||||
this.m_Xml.Read();
|
||||
this.m_Xml.Read();
|
||||
this.m_HasChild = !this.m_Xml.IsEmptyElement;
|
||||
root.Deserialize(this);
|
||||
Console.WriteLine("done");
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
this.m_Xml.Close();
|
||||
this.m_Reader.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user