package org.nextprot.api.commons.exception; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ExceptionUtils { public static final String EXAMPLE1 = "Malformed SPARQL: Lexical error at line 30, column 54. Encountered: \"\\n\" (10), after: \"kfdhjf\""; public static final String EXAMPLE2 = "Encountered \" <INTEGER> \"22 \"\" at line 31, column 45.\n" + "Was expecting one of:\n" + "\"values\" ...\n" + "\"graph\" ...\n" + "\"optional\" ...\n" + "\"minus\" ...\n" + "\"bind\" ...\n" + "\"service\" ...\n" + "\"filter\" ...\n" + "\"{\" ...\n" + "\"}\" ...\n" + "\";\" ...\n" + "\",\" ...\n" + "\".\" ..."; static public String fixLineNumberInErrorMessage(String errMsg) { try { Pattern p = Pattern.compile("(^.*at line )([0-9]+)(,.*$)"); String[] lines = errMsg.split("\n"); String newMsg = ""; for (String line: lines) { Matcher m = p.matcher(line); if (m.matches() && m.groupCount() == 3) { String realLineNo = String.valueOf(Integer.parseInt(m.group(2)) - 26); newMsg += m.group(1) + realLineNo + m.group(3) + "\n"; } else { newMsg += line + "\n"; } } return newMsg; } catch (Exception e) { return errMsg; } } public static void main(String[] args) { String s = EXAMPLE1; System.out.println("Original: " + s); System.out.println("Modified: " + fixLineNumberInErrorMessage(s)); } }