001 /* 002 * This program is free software; you can redistribute it and/or modify 003 * it under the terms of the GNU General Public License as published by 004 * the Free Software Foundation; version 2 of the License. 005 * 006 * This program is distributed in the hope that it will be useful, 007 * but WITHOUT ANY WARRANTY; without even the implied warranty of 008 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 009 * GNU General Public License for more details. 010 * 011 * You should have received a copy of the GNU General Public License along 012 * with this program; if not, write to the Free Software Foundation, Inc., 013 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 014 */ 015 package org.tastybug.bugwerk.bugtrail.widget.ticket; 016 017 import org.tastybug.bugwerk.blueprint.model.BaseData; 018 import org.tastybug.bugwerk.blueprint.model.Ticket; 019 020 /** 021 * This HTML helper class creates HTML tables summarizing the base ticket properties. 022 * <br> 023 * 024 * <hr> 025 * Copyright 2006 Philipp Bartsch.<br> 026 * <a href="http://www.tastybug.com">www.tastybug.com</a><br> 027 * <hr> 028 * Created on Feb 8, 2006<br> 029 * @author Philipp Bartsch, philipp.bartsch{at}tastybug{dot}com</a> 030 */ 031 public class HTMLFactory { 032 033 private static final String NEW_LINE = System.getProperty("line.separator"); 034 035 /** 036 * Returns a HTML table listing the base properties of <code>ticket</code> including 037 * the incident count. 038 * 039 * @param ticket the ticket 040 * @return the HTML table 041 */ 042 public static String createTicketHTMLRepresentation (Ticket ticket) { 043 044 final StringBuffer body = new StringBuffer(); 045 046 body.append( "<html>" + NEW_LINE 047 + "<body>" + NEW_LINE); 048 049 // table header 050 body.append("<table border=\"0\" cellspacing=\"1\" cellpadding=\"0\" width=\"100%\">" + NEW_LINE); 051 052 body.append(getTableRow(BaseData.ProjectName.KEY, 053 "<b>" + (ticket == null ? " --" : ticket.getProjectName()) + "</b>", 054 true)); 055 056 body.append(getTableRow(BaseData.Component.KEY, 057 (ticket == null ? " --" : ticket.getComponent()), 058 true)); 059 body.append(getTableRow(BaseData.Signature.KEY, 060 (ticket == null ? " --" : ticket.getSignature()), 061 true)); 062 body.append(getTableRow("Incidents", 063 (ticket == null ? " --" : ticket.getIncidentCount() + ""), 064 true)); 065 066 body.append(getTableRow(Ticket.State.KEY, 067 (ticket == null ? " --" : (ticket.getState() != null ? ticket.getState() : "<i>none</i>")), 068 false)); 069 body.append(getTableRow(BaseData.Type.KEY, 070 (ticket == null ? " --" : (ticket.getType() != null? ticket.getType() : "<i>none</i>")), 071 false)); 072 073 // table tail 074 body.append("</table>"+ NEW_LINE + "<br clear=\"all\">" + NEW_LINE ); 075 // finished 076 077 // close html document 078 body.append( "</body>" 079 + "</html>"); 080 return body.toString(); 081 } 082 083 /** 084 * Returns a eyecandy table row. 085 * 086 * @param key the inserted key 087 * @param value the inserted value 088 * @param highlight specifies wheter to highlight the row label with a 089 * blue or the standard grey background 090 * @return the row (html code) 091 */ 092 public static final String getTableRow (final String key, 093 final String value, 094 final boolean highlight) { 095 return "<tr>" + NEW_LINE + 096 "<td valign=\"top\"" + NEW_LINE + 097 "align=\"right\"" + NEW_LINE + 098 "bgColor=\"" + (highlight 099 ? "#3399ff\">" 100 : "SILVER\">") + NEW_LINE + 101 "<font face=\"Arial\" size=\"-2\">" + 102 key + " " + 103 "</font>" + 104 NEW_LINE + 105 "</td>" + NEW_LINE + 106 "<td width=\"5\">" + NEW_LINE + 107 " " + NEW_LINE + 108 "</td>" + NEW_LINE + 109 "<td valign=\"top\">" + NEW_LINE + 110 "<font face=\"Arial\" size=\"-2\">" + 111 value + 112 "</font>" + 113 "</td>" + NEW_LINE + 114 "</tr>" + NEW_LINE; 115 } 116 }