View Javadoc

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 }