package com.elsealabs.xshot.error; import java.util.ArrayList; import java.util.Arrays; public class Error { private Exception exception; private String message; private String smartTrace; private boolean doPopup; public Error(Exception exception, String message, boolean doPopup) { this.exception = exception; this.message = message; this.doPopup = doPopup; generateSmartTrace(); } private void generateSmartTrace() { ArrayList<StackTraceElement> se = new ArrayList<StackTraceElement>(Arrays.asList(exception.getStackTrace())); StringBuilder sb = new StringBuilder(); sb.append("> [Error : SmartTrace] {\n"); sb.append(" | Exception Class: ").append(exception.getClass()).append("\n"); sb.append(" | Exception Message: \"").append(exception.getMessage()).append("\"\n"); se.stream() .filter(e -> e.getLineNumber() > 0) .forEach(e -> { sb.append("\t ->\n"); sb.append("\t | File: ").append(e.getFileName()).append(" \n"); sb.append("\t | AT: ").append(e.getClassName()).append(".").append(e.getMethodName()).append("\n"); sb.append("\t | Line: ").append(e.getLineNumber()).append("\n"); }); sb.append("}\n"); smartTrace = sb.toString(); } public boolean doesPopup() { return doPopup; } public Exception getException() { return exception; } public String getMessage() { return message; } public String getSmartTrace() { return smartTrace; } }