/* * Copyright (c) 2003-2004, KNOPFLERFISH project * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * - Neither the name of the KNOPFLERFISH project nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.knopflerfish.bundle.log.window.impl; import java.io.PrintWriter; import java.io.StringWriter; import java.text.SimpleDateFormat; import java.util.Date; import org.knopflerfish.util.Text; import org.osgi.framework.Bundle; import org.osgi.service.log.LogEntry; public class Util { public static String shortLocation(String s) { int ix = s.lastIndexOf("/"); // handle eclipse extended location directory syntax if(s.endsWith("/")) { ix = s.lastIndexOf("/", ix - 1); } if(ix == -1) { ix = s.lastIndexOf("\\"); } if(ix != -1) { return s.substring(ix + 1); } return s; } public static String shortName(Bundle b) { String s = b.getLocation(); int ix = s.lastIndexOf("/"); if(ix == -1) ix = s.lastIndexOf("\\"); if(ix != -1) { s = s.substring(ix + 1); } if(s.endsWith(".jar")) { s = s.substring(0, s.length() - 4); } return s; } public static String getBundleName(Bundle b) { String s = getHeader(b, "Bundle-Name", ""); if(s == null || "".equals(s) || s.startsWith("%")) { s = shortLocation(b.getLocation()); } return s; } public static String getHeader(Bundle b, String name) { return getHeader(b, name, null); } public static String getHeader(Bundle b, String name, String def) { String s = b != null ? (String)b.getHeaders().get(name) : def; return s; } public static String toHTML(ExtLogEntry e) { StringBuffer sb = new StringBuffer(); sb.append(""); sb.append("
| " + fontify(e.getId() + ", "+ shortName(e.getBundle())) + " | ") ; sb.append("" + fontify(tf.format(new Date(e.getTime()))) + " | ") ; sb.append("" + fontify(levelString(e.getLevel())) + " | "); sb.append("
| "); sb.append(fontify(e.getMessage())); sb.append(" | "); sb.append("||
| " + fontify("Exception")); sb.append(" | "); sb.append("||
| ");
StringWriter w = new StringWriter();
t.printStackTrace(new PrintWriter(w));
sb.append(fontify(Text.replace(w.toString(), "\n", " "))); sb.append(" | ");
sb.append("||