Thread: [csmaild-cvs] csmaild/src/Common/MailstoreProviders IMailstoreProvider.cs,1.4,1.5 XmlMailstoreProvid
Brought to you by:
tamc
From: <ta...@us...> - 2003-07-28 00:15:29
|
Update of /cvsroot/csmaild/csmaild/src/Common/MailstoreProviders In directory sc8-pr-cvs1:/tmp/cvs-serv22151/src/Common/MailstoreProviders Modified Files: IMailstoreProvider.cs XmlMailstoreProvider.cs Log Message: Added MessageCollection to store the collection of messages in a mailbox DELETE should work now, had to modify the mail store to support deleting of messages and mailboxes Index: IMailstoreProvider.cs =================================================================== RCS file: /cvsroot/csmaild/csmaild/src/Common/MailstoreProviders/IMailstoreProvider.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** IMailstoreProvider.cs 27 Jul 2003 19:32:59 -0000 1.4 --- IMailstoreProvider.cs 28 Jul 2003 00:15:17 -0000 1.5 *************** *** 43,52 **** #endregion ! #region Mailbox modifieres bool InsertMailbox(User user, Mailbox mbx); #endregion #endregion #region Message accessors /// <summary> --- 43,62 ---- #endregion ! #region Mailbox insert bool InsertMailbox(User user, Mailbox mbx); #endregion + #region Mailbox delete + /// <summary> + /// Permanently deletes the mailbox + /// </summary> + /// <param name="box">The box to delete</param> + void DeleteMailbox(Mailbox box); #endregion + #endregion + + #region Message stuff + #region Message accessors /// <summary> *************** *** 64,67 **** --- 74,87 ---- /// <returns>An array containing the mailboxes (valid array of size 0 if none)</returns> Message[] GetMessages(Mailbox box); + #endregion + + #region Message delete + /// <summary> + /// Deletes all the messages in a mailbox + /// </summary> + /// <param name="box">The mailbox to clear out</param> + void DeleteMessages(Mailbox box); + #endregion + #endregion } Index: XmlMailstoreProvider.cs =================================================================== RCS file: /cvsroot/csmaild/csmaild/src/Common/MailstoreProviders/XmlMailstoreProvider.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** XmlMailstoreProvider.cs 27 Jul 2003 19:33:00 -0000 1.5 --- XmlMailstoreProvider.cs 28 Jul 2003 00:15:17 -0000 1.6 *************** *** 8,11 **** --- 8,18 ---- private string mFolderPath; + private DataSet mMessageSet = new DataSet(); + private DataSet mMailboxSet = new DataSet(); + private DataSet mUserSet = new DataSet(); + private DataTable mMessages; + private DataTable mMailboxes; + private DataTable mUsers; + public XmlMailstoreProvider(string folderPath) { *************** *** 14,17 **** --- 21,33 ---- if(!mFolderPath.EndsWith(@"\")) mFolderPath += @"\"; + + mMessageSet.ReadXml(mFolderPath + "Messages.xml"); + mMessages = mMessageSet.Tables[0]; + + mMailboxSet.ReadXml(mFolderPath + "Mailboxes.xml"); + mMailboxes = mMailboxSet.Tables[0]; + + mUserSet.ReadXml(mFolderPath + "Users.xml"); + mUsers = mUserSet.Tables[0]; } *************** *** 19,25 **** public User GetUser(string username, string password) { ! DataSet ds = new DataSet(); ! ds.ReadXml(mFolderPath + "Users.xml"); ! DataRow[] users = ds.Tables[0].Select("Username = '" + username + "'"); if(users.Length == 0) --- 35,39 ---- public User GetUser(string username, string password) { ! DataRow[] users = mUsers.Select("Username = '" + username + "'"); if(users.Length == 0) *************** *** 39,45 **** public Mailbox GetMailbox(User user, string absoluteHiearchicalName) { ! DataSet ds = new DataSet(); ! ds.ReadXml(mFolderPath + "Mailboxes.xml"); ! DataRow[] boxes = ds.Tables[0].Select("FullName = '" + absoluteHiearchicalName + "' AND UserIdentifier = '" + user.Username + "'"); if(boxes.Length == 0) --- 53,57 ---- public Mailbox GetMailbox(User user, string absoluteHiearchicalName) { ! DataRow[] boxes = mMailboxes.Select("FullName = '" + absoluteHiearchicalName + "' AND UserIdentifier = '" + user.Username + "'"); if(boxes.Length == 0) *************** *** 52,59 **** public MailboxCollection GetMailboxes(User user) { ! DataSet ds = new DataSet(); ! ds.ReadXml(mFolderPath + "Mailboxes.xml"); ! ! DataRow[] rows = ds.Tables[0].Select("UserIdentifier = '" + user.Username + "'"); MailboxCollection mbxCollection = new MailboxCollection(this, user); --- 64,68 ---- public MailboxCollection GetMailboxes(User user) { ! DataRow[] rows = mMailboxes.Select("UserIdentifier = '" + user.Username + "'"); MailboxCollection mbxCollection = new MailboxCollection(this, user); *************** *** 73,83 **** #endregion ! #region Mailbox modifieres public bool InsertMailbox(User user, Mailbox mbx) { ! DataSet ds = new DataSet(); ! ds.ReadXml(mFolderPath + "Mailboxes.xml"); ! ! DataRow newMbx = ds.Tables[0].NewRow(); newMbx["UserIdentifier"] = user.Username; --- 82,89 ---- #endregion ! #region Mailbox insert public bool InsertMailbox(User user, Mailbox mbx) { ! DataRow newMbx = mMailboxes.NewRow(); newMbx["UserIdentifier"] = user.Username; *************** *** 87,92 **** newMbx["UniqueIdValidity"] = mbx.UniqueIdValidity; ! ds.Tables[0].Rows.Add(newMbx); ! ds.WriteXml(mFolderPath + "Mailboxes.xml"); return true; --- 93,98 ---- newMbx["UniqueIdValidity"] = mbx.UniqueIdValidity; ! mMailboxes.Rows.Add(newMbx); ! Save(false, true, false); return true; *************** *** 94,99 **** --- 100,116 ---- #endregion + #region Mailbox delete + public void DeleteMailbox(Mailbox box) + { + DataRow[] boxes = mMailboxes.Select("FullName = '" + box.Name + "' AND UserIdentifier = '" + box.User.Username + "'"); + boxes[0].Delete(); + Save(false, true, false); + } + #endregion + #endregion + #region Message stuff + #region Message accessors public Message GetMessage(Mailbox box, int uniqueId) *************** *** 104,111 **** public Message[] GetMessages(Mailbox box) { ! DataSet ds = new DataSet(); ! ds.ReadXml(mFolderPath + "Messages.xml"); ! ! DataRow[] messages = ds.Tables[0].Select("MailboxIdentifier = '" + box.Name + "'"); Message[] msgs = new Message[messages.Length]; --- 121,125 ---- public Message[] GetMessages(Mailbox box) { ! DataRow[] messages = mMessages.Select("MailboxIdentifier = '" + box.Name + "'"); Message[] msgs = new Message[messages.Length]; *************** *** 119,122 **** --- 133,160 ---- } #endregion + + #region Message deletes + public void DeleteMessages(Mailbox box) + { + DataRow[] messages = mMessages.Select("MailboxIdentifier = '" + box.Name + "'"); + foreach(DataRow msg in messages) + msg.Delete(); + Save(false, false, true); + } + #endregion + + #endregion + + private void Save(bool saveUsers, bool saveMailboxes, bool saveMessages) + { + if(saveUsers) + mUserSet.WriteXml(mFolderPath + "Users.xml"); + + if(saveMailboxes) + mMailboxSet.WriteXml(mFolderPath + "Mailboxes.xml"); + + if(saveMessages) + mMessageSet.WriteXml(mFolderPath + "Messages.xml"); + } } } |