package org.openjump.core.ui.util; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import com.vividsolutions.jump.I18N; import com.vividsolutions.jump.io.datasource.DataSourceQuery; import com.vividsolutions.jump.util.CollectionUtil; import com.vividsolutions.jump.util.StringUtil; import com.vividsolutions.jump.workbench.ui.GUIUtil; import com.vividsolutions.jump.workbench.ui.HTMLFrame; import com.vividsolutions.jump.workbench.ui.WorkbenchFrame; public class ExceptionUtil { public static void reportExceptions(ArrayList exceptions, DataSourceQuery dataSourceQuery, WorkbenchFrame workbenchFrame, HTMLFrame outputFrame) { outputFrame.addHeader( 1, exceptions.size() + " " + I18N.get("datasource.LoadDatasetPlugIn.problem") + StringUtil.s(exceptions.size()) + " " + I18N.get("datasource.LoadDatasetPlugIn.loading") + " " + dataSourceQuery.toString() + "." + ((exceptions.size() > 10) ? I18N.get("datasource.LoadDatasetPlugIn.first-and-last-five") : "")); outputFrame.addText(I18N.get("datasource.LoadDatasetPlugIn.see-view-log")); outputFrame.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(); workbenchFrame.log(StringUtil.stackTrace(exception)); outputFrame.append("<li>"); outputFrame.append(GUIUtil.escapeHTML( WorkbenchFrame.toMessage(exception), true, true)); outputFrame.append("</li>"); exception.printStackTrace(); } outputFrame.append("</ul>"); } }