package com.wilutions.itol;
import com.wilutions.itol.db.Issue;
// http://stackoverflow.com/questions/22946871/smtp-reply-method
public class IssueSubjectId {
private static final String ISSUE_ID_PREFIX = "[R-";
public static String extractIssueIdFromMailSubject(String subject) {
String issueId = "";
String startTag = ISSUE_ID_PREFIX;
int p = subject.indexOf(startTag);
if (p >= 0) {
int q = subject.indexOf("]", p);
if (q >= 0) {
issueId = subject.substring(p + startTag.length(), q);
}
}
else {
p = subject.indexOf(" #");
if (p >= 0) {
p += 2;
int q = p;
for (; q < subject.length(); q++) {
char c = subject.charAt(q);
if (!Character.isDigit(c)) break;
}
if (q > p) {
issueId = subject.substring(p, q);
}
}
}
return issueId;
}
public static String stripOneIssueIdFromMailSubject(String subject) {
String ret = subject;
String startTag = ISSUE_ID_PREFIX;
int p = subject.indexOf(startTag);
if (p >= 0) {
int q = subject.indexOf("]", p);
if (q >= 0) {
ret = subject.substring(q + 1).trim();
}
}
ret = ret.trim();
return ret;
}
public static String stripIssueIdFromMailSubject(String subject) {
String ret = stripOneIssueIdFromMailSubject(subject);
while (ret != subject) {
subject = ret;
ret = stripOneIssueIdFromMailSubject(subject);
}
ret = ret.trim();
return ret;
}
public static String stripReFwdFromSubject(String subject) {
String p = "";
while (p != subject) {
p = subject;
subject = stripFirstReFwdFromSubject(p);
}
return subject;
}
private static String stripFirstReFwdFromSubject( String subject) {
subject = subject.trim();
String s = subject.toLowerCase();
int p = s.indexOf(":");
if (p < 4) {
subject = subject.substring(p + 1);
}
return subject;
}
public static String injectIssueIdIntoMailSubject(String subject, Issue iss) {
String ret = stripIssueIdFromMailSubject("" + subject);
if (iss != null && iss.getId() != null && iss.getId().length() != 0) {
ret = ISSUE_ID_PREFIX + iss.getId() + "] ";
ret += subject;
}
else {
int p = subject.indexOf(ISSUE_ID_PREFIX);
if (p >= 0) {
int q = subject.indexOf("]", p + 3);
if (q >= 0) {
ret = subject.substring(0, p);
ret += subject.substring(q + 1);
}
}
}
ret = ret.trim();
return ret;
};
}