Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // AuditLog.cs
- // ------------------------------------------------------------------
- //
- using System;
- using System.IO;
- using System.Text;
- using System.Collections.Generic;
- using System.Xml;
- using System.Xml.Serialization;
- namespace Cheeso.Examples
- {
- public class Customer
- {
- public string Name { get; set; }
- public string City { get; set; }
- public String Country { get; set; }
- }
- public enum Flavor
- {
- Edit,
- Delete
- // more...
- }
- public class AuditRecord<T>
- {
- public AuditRecord() { Stamp = DateTime.Now; }
- [XmlAttribute("action")]
- public Flavor Action { get; set;}
- [XmlAttribute("stamp")]
- public DateTime Stamp { get; set;}
- public T Before;
- public T After;
- }
- public class AuditLog<T>
- {
- [XmlIgnore]
- public string StoragePath { get; set; }
- public int UserID { get; set; }
- public string LastSaved { get; set;}
- private List<AuditRecord<T>> _records;
- [XmlArrayItem("Entry")]
- public List<AuditRecord<T>> Records
- {
- get
- {
- if (_records==null)
- _records = new List<AuditRecord<T>>();
- return _records;
- }
- set
- {
- _records = value;
- }
- }
- public void RecordEdit(T before, T after)
- {
- // a convenience method
- var r = new AuditRecord<T>
- {
- Before = before,
- After = after,
- Action = Flavor.Edit
- };
- Records.Add(r);
- }
- public void RecordDelete(T before)
- {
- // a convenience method
- var r = new AuditRecord<T>
- {
- Before = before,
- Action = Flavor.Delete
- };
- Records.Add(r);
- }
- TextWriter GetWriter(bool wantSave)
- {
- if (wantSave)
- {
- var fs = new FileStream(StoragePath, FileMode.Create);
- return new StreamWriter(fs, new UTF8Encoding());
- }
- return Console.Out;
- }
- public void Show()
- {
- SaveShow(false);
- }
- public void Save()
- {
- SaveShow(true);
- }
- protected internal void SaveShow(bool wantSave)
- {
- var writerSettings = new XmlWriterSettings
- {
- OmitXmlDeclaration = true,
- Indent = true
- };
- using (XmlWriter xmlWriter =
- XmlWriter.Create(GetWriter(wantSave), writerSettings))
- {
- var ns = new XmlSerializerNamespaces();
- ns.Add("", "");
- var ser = new XmlSerializer(this.GetType());
- this.LastSaved = System.DateTime.Now.ToString("yyyy MMM dd HH:mm:ss");
- ser.Serialize(xmlWriter, this, ns);
- }
- }
- }
- public class Program
- {
- public static void Main(string[] args)
- {
- try
- {
- var log = new AuditLog<Customer>();
- var oldCustomer = new Customer
- {
- Name = "Sheldon", City = "Ipswich", Country = "UK"
- };
- var newCustomer = new Customer
- {
- Name = "Sheldon", City = "London", Country = "UK"
- };
- log.RecordEdit(oldCustomer, newCustomer);
- log.RecordDelete(newCustomer);
- log.Show();
- }
- catch (System.Exception exc1)
- {
- Console.WriteLine("Exception: {0}", exc1.ToString());
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement