extractRef
- Update the code in extractRef to check for null.
- Allow for more variations of Case in subject line
patternString = '.*case\\s*[;:=#]?\\s*([0-9]+).*';
private String extractRef(String emailSubject)
{
String itemRef = null;
// add test for null
if(emailSubject == null)
return null;
String target = emailSubject.toLowerCase();
String patternString;
Pattern thePattern;
Matcher matcher;
/* Take the text between the period and ":ref" For example in the ref [ ref:00D7JFzw.5007H3Rh8:ref ] extract 5007H3Rh8
Take that text and remove the 5007. For example H3Rh8
Append H3Rh8 to https://na5.salesforce.com/5007000000 to produce https://na5.salesforce.com/5007000000H3Rh8. This is your link to get to the case.
*/
patternString = '.*ref:(.{8}).(.{4})(.+):ref.*';
thePattern = Pattern.compile(patternString);
matcher = thePattern.matcher(emailSubject); // do not change to lower case for this test because Id's are case sensitive
if (matcher.matches()) {
String caseId = matcher.group(2) + '000000' + matcher.group(3);
if(TRACE) system.debug(Logginglevel.ERROR,'extractRef "' + caseId + '"');
Case[] matchingCases = [Select CaseNumber from Case where Id = :caseId];
if(matchingCases.size() == 1) {
Case theCase = matchingCases[0];
itemRef = theCase.CaseNumber;
}
}
if(itemRef == null) {
// extract the Case Number from the email Subject
// Re: Test two numbers Case: 30088 and Case: 30089'
// returns 30089, the last pattern matched
// Change the pattern to allow for more variations:
patternString = '.*case\\s*[;:=#]?\\s*([0-9]+).*';
thePattern = Pattern.compile(patternString);
matcher = thePattern.matcher(target);
if (matcher.matches()) {
itemRef = matcher.group(1);
if(TRACE) system.debug('Extracted case number ' + itemRef);
}
}
return itemRef;
}
No comments:
Post a Comment