using System; using System.Collections.Generic; using System.Text; namespace ScrewTurn.Wiki.PluginFramework { /// <summary> /// Represents a Page Discussion Message. /// </summary> public class Message { /// <summary> /// The Message ID. /// </summary> protected int id; /// <summary> /// The Username. /// </summary> protected string username; /// <summary> /// The Subject. /// </summary> protected string subject; /// <summary> /// The Date/Time. /// </summary> protected DateTime dateTime; /// <summary> /// The Body. /// </summary> protected string body; /// <summary> /// The Replies. /// </summary> protected Message[] replies = new Message[0]; /// <summary> /// Initializes a new instance of the <b>Message</b> class. /// </summary> /// <param name="id">The ID of the Message.</param> /// <param name="username">The Username of the User.</param> /// <param name="subject">The Subject of the Message.</param> /// <param name="dateTime">The Date/Time of the Message.</param> /// <param name="body">The body of the Message.</param> public Message(int id, string username, string subject, DateTime dateTime, string body) { this.id = id; this.username = username; this.subject = subject; this.dateTime = dateTime; this.body = body; } /// <summary> /// Gets or sets the Message ID. /// </summary> public int ID { get { return id; } set { id = value; } } /// <summary> /// Gets or sets the Username. /// </summary> public string Username { get { return username; } set { username = value; } } /// <summary> /// Gets or sets the Subject. /// </summary> public string Subject { get { return subject; } set { subject = value; } } /// <summary> /// Gets or sets the Date/Time. /// </summary> public DateTime DateTime { get { return dateTime; } set { dateTime = value; } } /// <summary> /// Gets or sets the Body. /// </summary> public string Body { get { return body; } set { body = value; } } /// <summary> /// Gets or sets the Replies. /// </summary> public Message[] Replies { get { return replies; } set { replies = value; } } } /// <summary> /// Compares two Message object using their Date/Time as parameter. /// </summary> public class MessageDateTimeComparer : IComparer<Message> { bool reverse = false; /// <summary> /// Initializes a new instance of the <b>MessageDateTimeComparer</b> class. /// </summary> /// <param name="reverse">True to compare in reverse order (bigger to smaller).</param> public MessageDateTimeComparer(bool reverse) { this.reverse = reverse; } /// <summary> /// Compares two Message objects. /// </summary> /// <param name="x">The first object.</param> /// <param name="y">The second object.</param> /// <returns>The result of the comparison (1, 0 or -1).</returns> public int Compare(Message x, Message y) { if(!reverse) return x.DateTime.CompareTo(y.DateTime); else return y.DateTime.CompareTo(x.DateTime); } } }