System and method for using a client database to manage conversation threads generated from email or news messages
First Claim
1. In a distributed computer system including a server and a client, the client including a local message store and a database, a method for managing conversation threads based on message-related information for a message having a message identifier and a references field, the message-related information being stored in the database, comprising the steps of:
- (a) during a client-server session, retrieving from the server the message-related information corresponding to the message;
(b) based on the message-related information, determining whether the message has been previously downloaded from the server to the local message store located at the client;
(c) in response to determining that the message has not been previously downloaded from the server to the local message store, i. downloading the message from the server to the local message store, and ii. populating a plurality of data fields in the database with the message-related information;
(d) determining whether the references field of the message is empty;
(e) in response to determining that the references field of the message is empty, providing an indication in the database that the message is a conversation root;
(f) providing an indication in the database that a conversation index has not been determined for the message;
(g) repeating the steps (a) through (f) for each remaining message on the server; and
(h) generating, based on the conversation root, the conversation index for each message downloaded from the server to the local message store.
2 Assignments
0 Petitions
Accused Products
Abstract
A system including a client database for managing conversation threads generated from messages communicated in a client-server achitecture is disclosed. The client database efficiently manages messages and optimizes communication between the client and server. In a specific embodiment, the messages include email messages from a SMTP server and news messages from a NNTP server. The conversation threads are generated for use in a MAPI format-sensitive application. The client database maintains a central archive of message-related information to support conversation threading of current and future messages downloaded from the server to the client. The client database supports efficient management of conversations so that conversation roots and nested replies are presented sequentially. When a message refers to another, unreceived message, the system creates a placeholder for the unreceived message in the client database. Using a placeholder eliminates the need to rethread all conversations after every download. The database includes data fields corresponding to specific fields of a typical MAPI format. The database also includes data fields to assist in providing more efficient and timely operation of retrieving and threading conversations from a local message store, such as a MAPI store. News messages can also be converted from a news conversation threading structure to a MAPI format.
358 Citations
30 Claims
-
1. In a distributed computer system including a server and a client, the client including a local message store and a database, a method for managing conversation threads based on message-related information for a message having a message identifier and a references field, the message-related information being stored in the database, comprising the steps of:
-
(a) during a client-server session, retrieving from the server the message-related information corresponding to the message;
(b) based on the message-related information, determining whether the message has been previously downloaded from the server to the local message store located at the client;
(c) in response to determining that the message has not been previously downloaded from the server to the local message store, i. downloading the message from the server to the local message store, and ii. populating a plurality of data fields in the database with the message-related information;
(d) determining whether the references field of the message is empty;
(e) in response to determining that the references field of the message is empty, providing an indication in the database that the message is a conversation root;
(f) providing an indication in the database that a conversation index has not been determined for the message;
(g) repeating the steps (a) through (f) for each remaining message on the server; and
(h) generating, based on the conversation root, the conversation index for each message downloaded from the server to the local message store. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
populating the message identification field with the message identifier;
populating the article number field with the article number;
populating the title field with the title of the message;
populating the parent identification field with the parent identifier for the message; and
populating the posted time field with the time and date of the message.
-
-
6. The method of claim 1, wherein the step of providing an indication in the database that a conversation index has not been determined for the message comprises setting a “
- dirty”
flag to a true state in the database.
- dirty”
-
7. The method of claim 1, wherein the step of generating, based on the conversation root, the conversation index for each message downloaded from the server to the local message store comprises:
-
creating a preamble based on the conversation root; and
if the message is not the conversation root, creating a reply message field for maintaining a difference delta defining a difference between a sent time of the message and a sent time of the conversation root.
-
-
8. The method of claim 7, wherein the step of creating the preamble based on the conversation root comprises:
-
placing a value of one in a first field of the preamble;
storing the sent time of the conversation root in a second field of the preamble; and
generating a unique identifier based on the message identifier of the conversation root; and
storing the unique identifier in a third field of the preamble.
-
-
9. The method of claim 1, wherein after generating the conversation index for each downloaded message, the method further comprises the step of providing an indication in the database that the conversation index has been determined for the message.
-
10. The method of 9, wherein the step of providing an indication in the database that the conversation index has been determined for the message comprises setting a “
- dirty”
flag to a false state in the database.
- dirty”
-
11. The method of 1, wherein after generating the conversation index for each downloaded message, the method further comprising the step of storing the conversation index for the downloaded message in the local message store.
-
12. The method of 1, wherein the step of determining whether the message has been downloaded from the server to the local message store comprises comparing the message identifier for the message to at least one message identifier in the database and determining whether the message identifier for the message matches the one message identifier in the database.
-
13. A method for generating a conversation index based on message-related information for a reply message, the reply message arranged in a news conversation threading structure and including a message identifier and a reference, the reference including a message identifier for a root message, the message-related information stored in a database, located at the client, and including the message identifier and a time and date for the root message and the reply message, the conversation index supporting conversation threading so that the root message and the reply message are grouped in a MAPI format for use in a MAPI format-sensitive application, the conversation index comprising fields arranged in the MAPI format, the method comprising the steps of:
-
(a) placing a value in a first field of the conversation index;
(b) obtaining from the database;
i. the time and date for the root message, ii. the message identifier for the root message, and iii. the time and date for the reply message;
(c) storing the time and date of the root message in a second field of the conversation index;
(d) generating a unique identifier based on the message identifier of the root message;
(e) storing the unique identifier in a third field of the conversation index;
(f) determining a difference between the time and date of the reply message and the time and date of the root message; and
(g) storing the difference between the time and date of the reply message and the time and date of the root message in a fourth field of the conversation index, the conversation index representing the reply message in the MAPI format for use in the MAPI format-sensitive application. - View Dependent Claims (14, 15, 16, 17)
wherein the method further comprises;
consulting the database to obtain the time and date for the second reply message;
determining a difference between the time and date of the second reply message and the time and date of the root message; and
storing the difference between the time and date of the second reply message and the time and date of the root message in a fifth field of the conversation index.
-
-
15. The method of claim 13, wherein placing a value in a first field of the conversation index comprises placing a value of “
- 1”
in the first field of the conversation index.
- 1”
-
16. The method of claim 13, wherein the step of generating a unique identifier based on the message identifier of the root message comprises performing a hashing process to convert the length of the message identifier to a fixed length.
-
17. The method of claim 13, wherein the reply message has additional references each including a message identifier for an additional message and a time and date for the additional message, the method further comprising for each additional reference, determining a difference delta, delta defining the difference between the time and date of the additional message and the time and date of the root message, and for each additional reference, storing the difference delta in an additional field of the conversation index.
-
18. A method for creating, in a database located at a client, a place holder from a reply message that has been downloaded in the database from a server, the reply message including a references field for hosting a reference comprising a message identifier for a second message, the method comprising the steps of:
-
(a) determining whether the references field of the reply message includes the reference comprising the message identifier for the second message;
(b) in response to determining that the reference includes the message identifier for the second message, determining whether the message identifier for the second message is located in a message identification field in the database, the message identification field storing message identifiers for messages;
(c) in response to determining that the message identifier for the second message is not located in the message identification field, downloading into the database a message entry from the server, comprising the message identifier for the second message; and
(d) providing an indication in the database that the message entry is a place holder. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
determining whether there is an additional reference in the references field for the reply message, the additional reference including a message identifier for an additional message;
in response to determining that there is no additional reference in the references field for the reply message, providing an indication in the database that the second message is a root message; and
generating, based on the second message, a conversation index for the second message and the reply message.
-
-
23. The method of claim 22, further comprising the steps of:
-
in response to determining that there is the additional reference for the message reply, providing an indication in the database that the second message is not the root message;
storing the message identifier for the additional message as the parent identifier for the second message;
determining whether the message identifier for the additional message is located in the message identification field in the database;
in response to determining that the message identifier for the additional message is not located in the message identification field, downloading into the database a second message entry comprising the message identifier for the additional message from the server; and
providing an indication in the database that the second message entry is a place holder.
-
-
24. The method of claim 23, wherein the step of providing an indication in the database that the second message is not the root message comprises setting a “
- root”
flag to a false state in the database.
- root”
-
25. The method of claim 22, wherein the step of providing an indication in the database that the second message is the root message comprises setting a “
- root”
flag to a true state in the database.
- root”
-
26. The method of claim 22, wherein the step of generating, based on the second message, a conversation index for the second message comprises creating a preamble based on the second message comprising the steps of:
-
placing a value in a first field of the conversation index;
selecting an arbitrary time and date for the second message;
storing the arbitrary time and date of the second message in a second field of the conversation index; and
based on the message identifier of the second message, storing a unique identifier in a third field of the conversation index.
-
-
27. The method of claim 26, wherein the step of generating, based on the second message, a conversation index for the reply message comprises the steps of:
-
determining a difference between a time and date of the reply message and the arbitrary time and date of the second message; and
storing the difference between the time and date of the reply message and the arbitrary time and date of the second message in a fourth field of the conversation index.
-
-
28. The method of claim 18, wherein the step of providing an indication in the database that the message entry is a place holder comprises setting a “
- place holder”
flag to a true state in the database.
- place holder”
-
29. A method for generating a conversation index based on message-related information for a root message, the root message arranged in a news conversation threading structure and including a message identifier, the message-related information stored in a database, located at the client, and including the message identifier and a time and date for the root message, the conversation index supporting conversation threading so that the root message is converted to a MAPI format for use in a MAPI format-sensitive application, the conversation index comprising fields arranged in the MAPI format, the method comprising the steps of:
-
(a) placing a value in a first field of the conversation index;
(b) obtaining from the database;
i. the time and date for the root message, and ii. the message identifier for the root message;
(c) storing the time and date of the root message in a second field of the conversation index;
(d) generating a unique identifier based on the message identifier of the root message; and
(e) storing the unique identifier in a third field of the conversation index, the conversation index representing the root message in the MAPI format for use in the MAPI format-sensitive application. - View Dependent Claims (30)
-
Specification