using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using Schaad.Accounting.Interfaces;
namespace Schaad.Accounting.Repositories
{
public abstract class BaseRepository
{
protected readonly ISettingsService settingsService;
protected BaseRepository(ISettingsService settingsService)
{
this.settingsService = settingsService;
}
protected void EnsureFileExisits(string fileName)
{
string filePath = Path.Combine(settingsService.GetDbPath(), fileName);
if (File.Exists(filePath) == false)
{
var lastYearFile = Path.Combine(settingsService.GetLastYearDbPath(), fileName);
if (File.Exists(lastYearFile))
{
File.Copy(lastYearFile, filePath);
}
}
}
///
/// Save an object to an xml file
///
protected void Save(T obj, string fileName)
{
var filePath = Path.Combine(settingsService.GetDbPath(), fileName);
using (var sww = new MemoryStream())
{
var settings = new XmlWriterSettings
{
Encoding = Encoding.UTF8,
Indent = true
};
using (var writer = XmlWriter.Create(sww, settings))
{
var xsSubmit = new XmlSerializer(typeof(T));
xsSubmit.Serialize(writer, obj);
var xml = Encoding.UTF8.GetString(sww.ToArray());
File.WriteAllText(filePath, xml);
}
}
}
///
/// Load an object from an xml file
///
protected T Load(string fileName)
{
var filePath = Path.Combine(settingsService.GetDbPath(), fileName);
if (File.Exists(filePath) == false)
{
return default(T);
}
using (XmlReader reader = XmlReader.Create(filePath))
{
var serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(reader);
}
}
}
}