001 /* 002 * $Id: IncidentInfo.java,v 1.6 2006/03/18 22:52:11 rbair Exp $ 003 * 004 * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, 005 * Santa Clara, California 95054, U.S.A. All rights reserved. 006 * 007 * This library is free software; you can redistribute it and/or 008 * modify it under the terms of the GNU Lesser General Public 009 * License as published by the Free Software Foundation; either 010 * version 2.1 of the License, or (at your option) any later version. 011 * 012 * This library is distributed in the hope that it will be useful, 013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 015 * Lesser General Public License for more details. 016 * 017 * You should have received a copy of the GNU Lesser General Public 018 * License along with this library; if not, write to the Free Software 019 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 020 */ 021 022 /** 023 * This is a simple class that incapsulates all the information needed 024 * to report a problem to the automated report/processing system. 025 * 026 * @author Alexander Zuev 027 * @version 1.4 028 */ 029 package org.jdesktop.swingx; 030 031 import java.util.logging.Level; 032 033 public class IncidentInfo { 034 /** 035 * Short string that will be used as a error header 036 */ 037 private String header; 038 /** 039 * Basic message that describes incident 040 */ 041 private String basicErrorMessage; 042 /** 043 * Message that will fully describe the incident with all the 044 * available details 045 */ 046 private String detailedErrorMessage; 047 /** 048 * Optional Throwable that will be used as a possible source for 049 * additional information 050 */ 051 private Throwable errorException; 052 /** 053 * Used to specify how bad this error was. 054 */ 055 private Level errorLevel; 056 057 /** 058 * Main constructor that adds all the information to <code>IncidentInfo</code> 059 * @param header Header that will be used as the quick reference for the 060 * incident (e.g. title for a dialog or subject for the incident message) 061 * @param basicErrorMessage Short description of the given problem 062 * @param detailedErrorMessage Full description of the problem 063 * @param errorException <code>Throwable</code> that can be used as a source for 064 * additional information such as call stack, thread name, etc. 065 */ 066 public IncidentInfo(String header, String basicErrorMessage, 067 String detailedErrorMessage, Throwable errorException) { 068 this.header = header; 069 if(basicErrorMessage != null) { 070 this.basicErrorMessage = basicErrorMessage; 071 } else { 072 if(errorException != null) { 073 this.basicErrorMessage = errorException.getLocalizedMessage(); 074 if (this.basicErrorMessage == null) { 075 this.basicErrorMessage = errorException.toString(); 076 } 077 } else { 078 this.basicErrorMessage = ""; 079 } 080 } 081 this.detailedErrorMessage = detailedErrorMessage; 082 this.errorException = errorException; 083 this.errorLevel = Level.SEVERE; 084 } 085 086 /** 087 * Constructor that creates <code>IncidentInfo</code> with all the provided descriptions 088 * @param header Header that will be used as the quick reference for the 089 * incident (e.g. title for a dialog or subject for the incident message) 090 * @param basicErrorMessage Short description of the given problem 091 * @param detailedErrorMessage Full description og the problem 092 */ 093 public IncidentInfo(String header, String basicErrorMessage, String detailedErrorMessage) { 094 this(header, basicErrorMessage, detailedErrorMessage, null); 095 } 096 097 /** 098 * Constructor that creates <code>IncidentInfo</code> retreiving all the 099 * information from the provided <code>Throwable</code> 100 * @param header Header that will be used as the quick reference for the 101 * incident (e.g. title for a dialog or subject for the incident message) 102 * @param errorException <code>Throwable</code> that can be used as a main source of 103 * information about the incident 104 */ 105 public IncidentInfo(String header, Throwable errorException) { 106 this(header, null, null, errorException); 107 } 108 109 /** 110 * Get the current header string 111 * 112 * @return header string 113 */ 114 public String getHeader() { 115 return header; 116 } 117 118 /** 119 * Set the current header string 120 * 121 * @param header 122 */ 123 public void setHeader(String header) { 124 this.header = header; 125 } 126 127 /** 128 * Get the basic error description 129 * 130 * @return basic error description 131 */ 132 public String getBasicErrorMessage() { 133 return basicErrorMessage; 134 } 135 136 /** 137 * Set the current basic error description 138 * 139 * @param basicErrorMessage new basic error description 140 */ 141 public void setBasicErrorMessage(String basicErrorMessage) { 142 this.basicErrorMessage = basicErrorMessage; 143 } 144 145 /** 146 * Get the detailed error description 147 * 148 * @return detailed description 149 */ 150 public String getDetailedErrorMessage() { 151 return detailedErrorMessage; 152 } 153 154 /** 155 * Set the detailed description for this error 156 * 157 * @param detailedErrorMessage new detailed description 158 */ 159 public void setDetailedErrorMessage(String detailedErrorMessage) { 160 this.detailedErrorMessage = detailedErrorMessage; 161 } 162 163 /** 164 * Get an exception that contains some additional information about the 165 * error if provided. 166 * 167 * @return exception or null if no exception provided 168 */ 169 public Throwable getErrorException() { 170 return errorException; 171 } 172 173 /** 174 * Set the exception that may contain additional information about the 175 * error. 176 * 177 * @param errorException new <code>Throwable</code> or <code>null</code> 178 * if there is no <code>Throwable</code> related to this error 179 */ 180 public void setErrorException(Throwable errorException) { 181 this.errorException = errorException; 182 } 183 184 /** 185 * Returns the severity of the Error. This defaults to Level.SEVERE, but 186 * may be specified via setErrorLevel 187 * 188 * @return the Level. This will never be null 189 */ 190 public Level getErrorLevel() { 191 return errorLevel; 192 } 193 194 /** 195 * Sets the error level for this IncidentInfo 196 * 197 * @param errorLevel any Level (Level.SEVERE, Level.WARNING, etc). If null, 198 * then the level will be set to SEVERE. 199 */ 200 public void setErrorLevel(Level errorLevel) { 201 this.errorLevel = errorLevel == null ? Level.SEVERE : errorLevel; 202 } 203 }