[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");
+ }
}
}
|