public static void reportExceptions( ArrayList exceptions, DataSourceQuery dataSourceQuery, WorkbenchContext context) { context .getIWorkbench() .getFrame() .getOutputFrame() .addHeader( 1, exceptions.size() + " problem" + StringUtil.s(exceptions.size()) + " loading " + dataSourceQuery.toString() + "." + ((exceptions.size() > 10) ? " First and last five:" : "")); context.getIWorkbench().getFrame().getOutputFrame().addText("See View / Log for stack traces"); context.getIWorkbench().getFrame().getOutputFrame().append("<ul>"); Collection exceptionsToReport = exceptions.size() <= 10 ? exceptions : CollectionUtil.concatenate( Arrays.asList( new Collection[] { exceptions.subList(0, 5), exceptions.subList(exceptions.size() - 5, exceptions.size()) })); for (Iterator j = exceptionsToReport.iterator(); j.hasNext(); ) { Exception exception = (Exception) j.next(); context.getIWorkbench().getGuiComponent().log(StringUtil.stackTrace(exception)); context.getIWorkbench().getFrame().getOutputFrame().append("<li>"); context .getIWorkbench() .getFrame() .getOutputFrame() .append(GUIUtil.escapeHTML(WorkbenchFrameImpl.toMessage(exception), true, true)); context.getIWorkbench().getFrame().getOutputFrame().append("</li>"); } context.getIWorkbench().getFrame().getOutputFrame().append("</ul>"); }