1 /* 2 * jDTAUS Core Messages 3 * Copyright (C) 2005 Christian Schulte 4 * <cs@schulte.it> 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 * 20 */ 21 package org.jdtaus.core.messages; 22 23 import java.io.File; 24 import java.net.URL; 25 import java.util.Locale; 26 import org.jdtaus.core.container.ContainerFactory; 27 import org.jdtaus.core.text.Message; 28 29 /** 30 * {@code Message} stating how to report a bug. 31 * 32 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a> 33 * @version $JDTAUS: BugReportMessage.java 8794 2012-12-03 16:51:09Z schulte $ 34 */ 35 public final class BugReportMessage extends Message 36 { 37 //--Contstants-------------------------------------------------------------- 38 39 /** Serial version UID for backwards compatibility with 1.0.x classes. */ 40 private static final long serialVersionUID = -6031830488657149254L; 41 42 //---------------------------------------------------------------Constants-- 43 //--Message----------------------------------------------------------------- 44 45 /** 46 * {@inheritDoc} 47 * 48 * @return Strings giving information for where to report bugs and where 49 * to find any data to attach to any bug reports. 50 * <ul> 51 * <li>[0]: the absolute path of the directory holding the application's 52 * logfiles.</li> 53 * <li>[1]: URL of the online bugtracking system.</li> 54 * <li>[2]: email address to alternatively send the bugreport to.</li> 55 * </ul> 56 */ 57 public Object[] getFormatArguments( final Locale locale ) 58 { 59 if ( this.trackerUrl != null && this.reportAddress != null ) 60 { 61 return new Object[] 62 { 63 this.logDirectory.getAbsolutePath(), 64 this.trackerUrl.toExternalForm(), 65 this.reportAddress 66 }; 67 } 68 else if ( this.trackerUrl != null ) 69 { 70 return new Object[] 71 { 72 this.logDirectory.getAbsolutePath(), 73 this.trackerUrl.toExternalForm() 74 }; 75 76 } 77 else if ( this.reportAddress != null ) 78 { 79 return new Object[] 80 { 81 this.logDirectory.getAbsolutePath(), 82 this.reportAddress 83 }; 84 85 } 86 else 87 { 88 return new Object[] 89 { 90 this.logDirectory.getAbsolutePath() 91 }; 92 93 } 94 } 95 96 /** 97 * {@inheritDoc} 98 * 99 * @return The corresponding text from the message's {@code ResourceBundle}: 100 * <blockquote><pre> 101 * Please report this at {1} or send 102 * an email to {2} including a copy of the logfiles located in directory 103 * {0}. 104 * </pre></blockquote> 105 */ 106 public String getText( final Locale locale ) 107 { 108 if ( this.trackerUrl != null && this.reportAddress != null ) 109 { 110 return this.getBugReportUrlAndEmailMessage( 111 locale, this.logDirectory.getAbsolutePath(), 112 this.trackerUrl.toExternalForm(), this.reportAddress ); 113 114 } 115 else if ( this.trackerUrl != null ) 116 { 117 return this.getBugReportUrlMessage( 118 locale, this.logDirectory.getAbsolutePath(), 119 this.trackerUrl.toExternalForm() ); 120 121 } 122 else if ( this.reportAddress != null ) 123 { 124 return this.getBugReportEmailMessage( 125 locale, this.logDirectory.getAbsolutePath(), 126 this.reportAddress ); 127 128 } 129 else 130 { 131 return this.getBugReportMessage( 132 locale, this.logDirectory.getAbsolutePath() ); 133 134 } 135 } 136 137 //-----------------------------------------------------------------Message-- 138 //--BugReportMessage-------------------------------------------------------- 139 140 /** 141 * Directory holding the application's log files. 142 * @serial 143 */ 144 private File logDirectory; 145 146 /** 147 * URL of the online bugtracking system. 148 * @serial 149 */ 150 private URL trackerUrl; 151 152 /** 153 * Mail address to send the bugreport to. 154 * @serial 155 */ 156 private String reportAddress; 157 158 /** 159 * Creates a new {@code BugReportMessage} taking the application's logfile 160 * directory, an URL to the application's online bugtracking system, and 161 * an email address where to send bugreports to alternatively. 162 * 163 * @param logDirectory the directory holding the application's logfiles. 164 * @param trackerUrl an URL to the application's online bugtracking system. 165 * @param reportAddress an email address to alternatively send bugreports 166 * to. 167 * 168 * @throws NullPointerException if either {@code logDirectory} is 169 * {@code null}. 170 * @throws IllegalArgumentException if {@code logDirectory} is not a 171 * directory. 172 */ 173 public BugReportMessage( final File logDirectory, final URL trackerUrl, 174 final String reportAddress ) 175 { 176 if ( logDirectory == null ) 177 { 178 throw new NullPointerException( "logDirectory" ); 179 } 180 if ( !logDirectory.isDirectory() ) 181 { 182 throw new IllegalArgumentException( logDirectory.getAbsolutePath() ); 183 } 184 185 this.logDirectory = logDirectory; 186 this.trackerUrl = trackerUrl; 187 this.reportAddress = reportAddress; 188 } 189 190 //--------------------------------------------------------BugReportMessage-- 191 //--Messages---------------------------------------------------------------- 192 193 // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausMessages 194 // This section is managed by jdtaus-container-mojo. 195 196 /** 197 * Gets the text of message <code>bugReport</code>. 198 * <blockquote><pre>Bitte melden Sie dieses Problem. Fügen Sie Ihrem Fehlerbericht bitte eine Kopie der aktuellen Protokolldateien der Anwendung aus Verzeichnis {0} bei.</pre></blockquote> 199 * <blockquote><pre>Please report this including a copy of the logfiles located in directory {0}.</pre></blockquote> 200 * 201 * @param locale The locale of the message instance to return. 202 * @param logDirectory Directory holding the application's logfiles. 203 * 204 * @return Information about how to report a bug. 205 */ 206 private String getBugReportMessage( final Locale locale, 207 final java.lang.String logDirectory ) 208 { 209 return ContainerFactory.getContainer(). 210 getMessage( this, "bugReport", locale, 211 new Object[] 212 { 213 logDirectory 214 }); 215 216 } 217 218 /** 219 * Gets the text of message <code>bugReportUrl</code>. 220 * <blockquote><pre>Bitte melden Sie dieses Problem unter {1}. Fügen Sie Ihrem Fehlerbericht bitte eine Kopie der aktuellen Protokolldateien der Anwendung aus Verzeichnis {0} bei.</pre></blockquote> 221 * <blockquote><pre>Please report this at {1} including a copy of the logfiles located in directory {0}.</pre></blockquote> 222 * 223 * @param locale The locale of the message instance to return. 224 * @param logDirectory Directory holding the application's logfiles. 225 * @param trackerUrl URL to the application's online bugtracking system. 226 * 227 * @return Information about how to report a bug. 228 */ 229 private String getBugReportUrlMessage( final Locale locale, 230 final java.lang.String logDirectory, 231 final java.lang.String trackerUrl ) 232 { 233 return ContainerFactory.getContainer(). 234 getMessage( this, "bugReportUrl", locale, 235 new Object[] 236 { 237 logDirectory, 238 trackerUrl 239 }); 240 241 } 242 243 /** 244 * Gets the text of message <code>bugReportEmail</code>. 245 * <blockquote><pre>Bitte melden Sie dieses Problem per eMail an {1}. Fügen Sie Ihrem Fehlerbericht bitte eine Kopie der aktuellen Protokolldateien der Anwendung aus Verzeichnis {0} bei.</pre></blockquote> 246 * <blockquote><pre>Please report this by sending an email to {1} including a copy of the logfiles located in directory {0}.</pre></blockquote> 247 * 248 * @param locale The locale of the message instance to return. 249 * @param logDirectory Directory holding the application's logfiles. 250 * @param reportAddress Email address to send bugreports to. 251 * 252 * @return Information about how to report a bug. 253 */ 254 private String getBugReportEmailMessage( final Locale locale, 255 final java.lang.String logDirectory, 256 final java.lang.String reportAddress ) 257 { 258 return ContainerFactory.getContainer(). 259 getMessage( this, "bugReportEmail", locale, 260 new Object[] 261 { 262 logDirectory, 263 reportAddress 264 }); 265 266 } 267 268 /** 269 * Gets the text of message <code>bugReportUrlAndEmail</code>. 270 * <blockquote><pre>Bitte melden Sie dieses Problem entweder unter {1} oder per eMail an {2}. Fügen Sie Ihrem Fehlerbericht bitte eine Kopie der aktuellen Protokolldateien der Anwendung aus Verzeichnis {0} bei.</pre></blockquote> 271 * <blockquote><pre>Please report this at {1} or send an email to {2} including a copy of the logfiles located in directory {0}.</pre></blockquote> 272 * 273 * @param locale The locale of the message instance to return. 274 * @param logDirectory Directory holding the application's logfiles. 275 * @param trackerUrl URL to the application's online bugtracking system. 276 * @param reportAddress Email address to alternatively send bugreports to. 277 * 278 * @return Information about how to report a bug. 279 */ 280 private String getBugReportUrlAndEmailMessage( final Locale locale, 281 final java.lang.String logDirectory, 282 final java.lang.String trackerUrl, 283 final java.lang.String reportAddress ) 284 { 285 return ContainerFactory.getContainer(). 286 getMessage( this, "bugReportUrlAndEmail", locale, 287 new Object[] 288 { 289 logDirectory, 290 trackerUrl, 291 reportAddress 292 }); 293 294 } 295 296 // </editor-fold>//GEN-END:jdtausMessages 297 298 //----------------------------------------------------------------Messages-- 299 }