#W# Initial Commit: Avatars Conquest
This commit is contained in:
commit
5df497787a
7510 changed files with 416048 additions and 0 deletions
129
Scripts/Engines/Reports/Persistance/PersistanceWriter.cs
Normal file
129
Scripts/Engines/Reports/Persistance/PersistanceWriter.cs
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Xml;
|
||||
|
||||
namespace Server.Engines.Reports
|
||||
{
|
||||
public abstract class PersistanceWriter
|
||||
{
|
||||
public abstract void SetInt32( string key, int value );
|
||||
public abstract void SetBoolean( string key, bool value );
|
||||
public abstract void SetString( string key, string value );
|
||||
public abstract void SetDateTime( string key, DateTime value );
|
||||
|
||||
public abstract void BeginObject( PersistableType typeID );
|
||||
public abstract void BeginChildren();
|
||||
public abstract void FinishChildren();
|
||||
public abstract void FinishObject();
|
||||
|
||||
public abstract void WriteDocument( PersistableObject root );
|
||||
public abstract void Close();
|
||||
|
||||
public PersistanceWriter()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class XmlPersistanceWriter : PersistanceWriter
|
||||
{
|
||||
private string m_RealFilePath;
|
||||
private string m_TempFilePath;
|
||||
|
||||
private StreamWriter m_Writer;
|
||||
private XmlTextWriter m_Xml;
|
||||
private string m_Title;
|
||||
|
||||
public XmlPersistanceWriter( string filePath, string title )
|
||||
{
|
||||
m_RealFilePath = filePath;
|
||||
m_TempFilePath = Path.ChangeExtension( filePath, ".tmp" );
|
||||
|
||||
m_Writer = new StreamWriter( m_TempFilePath );
|
||||
m_Xml = new XmlTextWriter( m_Writer );
|
||||
|
||||
m_Title = title;
|
||||
}
|
||||
|
||||
public override void SetInt32( string key, int value )
|
||||
{
|
||||
m_Xml.WriteAttributeString( key, XmlConvert.ToString( value ) );
|
||||
}
|
||||
|
||||
public override void SetBoolean( string key, bool value )
|
||||
{
|
||||
m_Xml.WriteAttributeString( key, XmlConvert.ToString( value ) );
|
||||
}
|
||||
|
||||
public override void SetString( string key, string value )
|
||||
{
|
||||
if ( value != null )
|
||||
m_Xml.WriteAttributeString( key, value );
|
||||
}
|
||||
|
||||
public override void SetDateTime( string key, DateTime value )
|
||||
{
|
||||
if ( value != DateTime.MinValue )
|
||||
m_Xml.WriteAttributeString( key, XmlConvert.ToString( value, XmlDateTimeSerializationMode.Local ) );
|
||||
}
|
||||
|
||||
public override void BeginObject( PersistableType typeID )
|
||||
{
|
||||
m_Xml.WriteStartElement( typeID.Name );
|
||||
}
|
||||
|
||||
public override void BeginChildren()
|
||||
{
|
||||
}
|
||||
|
||||
public override void FinishChildren()
|
||||
{
|
||||
}
|
||||
|
||||
public override void FinishObject()
|
||||
{
|
||||
m_Xml.WriteEndElement();
|
||||
}
|
||||
|
||||
public override void WriteDocument( PersistableObject root )
|
||||
{
|
||||
Console.WriteLine( "Reports: {0}: Save started", m_Title );
|
||||
|
||||
m_Xml.Formatting = Formatting.Indented;
|
||||
m_Xml.IndentChar = '\t';
|
||||
m_Xml.Indentation = 1;
|
||||
|
||||
m_Xml.WriteStartDocument( true );
|
||||
|
||||
root.Serialize( this );
|
||||
|
||||
Console.WriteLine( "Reports: {0}: Save complete", m_Title );
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
m_Xml.Close();
|
||||
m_Writer.Close();
|
||||
|
||||
try
|
||||
{
|
||||
string renamed = null;
|
||||
|
||||
if ( File.Exists( m_RealFilePath ) )
|
||||
{
|
||||
renamed = Path.ChangeExtension( m_RealFilePath, ".rem" );
|
||||
File.Move( m_RealFilePath, renamed );
|
||||
File.Move( m_TempFilePath, m_RealFilePath );
|
||||
File.Delete( renamed );
|
||||
}
|
||||
else
|
||||
{
|
||||
File.Move( m_TempFilePath, m_RealFilePath );
|
||||
}
|
||||
}
|
||||
catch ( Exception ex )
|
||||
{
|
||||
Console.WriteLine( ex );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue