#W# Initial Commit: Avatars Conquest
This commit is contained in:
commit
8eae46895e
7512 changed files with 416187 additions and 0 deletions
122
Scripts/Engines/Reports/Persistance/PersistanceReader.cs
Normal file
122
Scripts/Engines/Reports/Persistance/PersistanceReader.cs
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Xml;
|
||||
|
||||
namespace Server.Engines.Reports
|
||||
{
|
||||
public abstract class PersistanceReader
|
||||
{
|
||||
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 bool HasChild{ get; }
|
||||
public abstract PersistableObject GetChild();
|
||||
|
||||
public abstract void ReadDocument( PersistableObject root );
|
||||
public abstract void Close();
|
||||
|
||||
public PersistanceReader()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public class XmlPersistanceReader : PersistanceReader
|
||||
{
|
||||
private StreamReader m_Reader;
|
||||
private XmlTextReader m_Xml;
|
||||
private string m_Title;
|
||||
|
||||
public XmlPersistanceReader( string filePath, string title )
|
||||
{
|
||||
m_Reader = new StreamReader( filePath );
|
||||
m_Xml = new XmlTextReader( m_Reader );
|
||||
m_Xml.WhitespaceHandling=WhitespaceHandling.None;
|
||||
m_Title = title;
|
||||
}
|
||||
|
||||
public override int GetInt32( string key )
|
||||
{
|
||||
return XmlConvert.ToInt32( m_Xml.GetAttribute( key ) );
|
||||
}
|
||||
|
||||
public override bool GetBoolean( string key )
|
||||
{
|
||||
return XmlConvert.ToBoolean( m_Xml.GetAttribute( key ) );
|
||||
}
|
||||
|
||||
public override string GetString( string key )
|
||||
{
|
||||
return m_Xml.GetAttribute( key );
|
||||
}
|
||||
|
||||
public override DateTime GetDateTime( string key )
|
||||
{
|
||||
string val = m_Xml.GetAttribute( key );
|
||||
|
||||
if ( val == null )
|
||||
return DateTime.MinValue;
|
||||
|
||||
return XmlConvert.ToDateTime( val, XmlDateTimeSerializationMode.Local );
|
||||
}
|
||||
|
||||
private bool m_HasChild;
|
||||
|
||||
public override bool HasChild
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_HasChild;
|
||||
}
|
||||
}
|
||||
|
||||
private bool m_WasEmptyElement;
|
||||
|
||||
public override bool BeginChildren()
|
||||
{
|
||||
m_HasChild = !m_WasEmptyElement;
|
||||
|
||||
m_Xml.Read();
|
||||
|
||||
return m_HasChild;
|
||||
}
|
||||
|
||||
public override void FinishChildren()
|
||||
{
|
||||
m_Xml.Read();
|
||||
}
|
||||
|
||||
public override PersistableObject GetChild()
|
||||
{
|
||||
PersistableType type = PersistableTypeRegistry.Find( m_Xml.Name );
|
||||
PersistableObject obj = type.Constructor();
|
||||
|
||||
m_WasEmptyElement = m_Xml.IsEmptyElement;
|
||||
|
||||
obj.Deserialize( this );
|
||||
|
||||
m_HasChild = ( m_Xml.NodeType == XmlNodeType.Element );
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
public override void ReadDocument( PersistableObject root )
|
||||
{
|
||||
Console.Write( "Reports: {0}: Loading...", m_Title );
|
||||
m_Xml.Read();
|
||||
m_Xml.Read();
|
||||
m_HasChild = !m_Xml.IsEmptyElement;
|
||||
root.Deserialize( this );
|
||||
Console.WriteLine( "done" );
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
m_Xml.Close();
|
||||
m_Reader.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue