Changed the references from a String to a list of Strings

This commit is contained in:
Kelly Kelly 2019-05-21 12:55:37 -04:00
parent 93c19ace0e
commit 272138dad6
3 changed files with 51 additions and 23 deletions

View File

@ -47,7 +47,7 @@ class EmailMessage {
private long id = -1L; private long id = -1L;
private String messageID = ""; private String messageID = "";
private String inReplyToID = ""; private String inReplyToID = "";
private String references = ""; private List<String> references = null;
boolean hasAttachment() { boolean hasAttachment() {
return hasAttachment; return hasAttachment;
@ -226,7 +226,7 @@ class EmailMessage {
* *
* @return reference list or empty string if non is available. * @return reference list or empty string if non is available.
*/ */
String getReferences() { List<String> getReferences() {
return references; return references;
} }
@ -235,7 +235,7 @@ class EmailMessage {
* *
* @param references * @param references
*/ */
void setReferences(String references) { void setReferences(List<String> references) {
this.references = references; this.references = references;
} }

View File

@ -181,14 +181,26 @@ class MboxParser {
email.setLocalPath(localPath); email.setLocalPath(localPath);
email.setMessageID(msg.getMessageId()); email.setMessageID(msg.getMessageId());
Field field = msg.getHeader().getField("in-reply-to"); //NON-NLS Field field = msg.getHeader().getField("in-reply-to"); //NON-NLS
String inReplyTo = null;
if (field != null) { if (field != null) {
email.setInReplyToID(field.getBody()); inReplyTo = field.getBody();
email.setInReplyToID(inReplyTo);
} }
field = msg.getHeader().getField("references"); field = msg.getHeader().getField("references");
if (field != null ) { if (field != null) {
email.setReferences(field.getBody()); List<String> references = new ArrayList<>();
for (String id : field.getBody().split(">")) {
references.add(id.trim() + ">");
}
if (!references.contains(inReplyTo)) {
references.add(inReplyTo);
}
email.setReferences(references);
} }
// Body // Body

View File

@ -193,13 +193,24 @@ class PstParser {
email.setSubject(msg.getSubject()); email.setSubject(msg.getSubject());
email.setId(msg.getDescriptorNodeId()); email.setId(msg.getDescriptorNodeId());
email.setMessageID(msg.getInternetMessageId()); email.setMessageID(msg.getInternetMessageId());
email.setInReplyToID(msg.getInReplyToId());
String inReplyToID = msg.getInReplyToId();
email.setInReplyToID(inReplyToID);
if (msg.hasAttachments()) { if (msg.hasAttachments()) {
extractAttachments(email, msg, fileID); extractAttachments(email, msg, fileID);
} }
email.setReferences(extractReferences(msg.getTransportMessageHeaders())); List<String> references = extractReferences(msg.getTransportMessageHeaders());
if (inReplyToID != null && !inReplyToID.isEmpty()) {
if (references == null) {
references = new ArrayList<>();
references.add(inReplyToID);
} else if (!references.contains(inReplyToID)) {
references.add(inReplyToID);
}
}
email.setReferences(references);
return email; return email;
} }
@ -351,26 +362,31 @@ class PstParser {
* Returns the references value from the email header. * Returns the references value from the email header.
* *
* @param emailHeader * @param emailHeader
* @return *
* @return A list of message-IDs
*/ */
private String extractReferences( String emailHeader ){ private List<String> extractReferences(String emailHeader) {
Scanner scanner = new Scanner(emailHeader); Scanner scanner = new Scanner(emailHeader);
StringBuilder buffer = null; StringBuilder buffer = null;
while(scanner.hasNextLine()) { while (scanner.hasNextLine()) {
String token = scanner.nextLine(); String token = scanner.nextLine();
if( token.matches("^References:.*") ) { if (token.matches("^References:.*")) {
buffer = new StringBuilder(); buffer = new StringBuilder();
buffer.append((token.substring(token.indexOf(":")+1)).trim()); buffer.append((token.substring(token.indexOf(":") + 1)).trim());
} else if ( buffer != null ) { } else if (buffer != null) {
if(token.matches("^\\w+:.*$")){ if (token.matches("^\\w+:.*$")) {
return buffer.toString(); List<String> references = new ArrayList<>();
for (String id : buffer.toString().split(">")) {
references.add(id.trim() + ">");
}
return references;
} else { } else {
buffer.append(token.trim()); buffer.append(token.trim());
} }
} }
} }
return ""; return null;
} }
} }