Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

com.eireneh.util
Class Reporter  view Reporter download Reporter.java

java.lang.Object
  extended bycom.eireneh.util.Reporter

public class Reporter
extends java.lang.Object

This package looks after Exceptions and messages as they happen. It would be nice not to need this class - the principle being that any library that encounters an error can throw an exception to indicate that there is a problem. However this is not always the case. For example:

  • static class constructors should not throw, unless the class really is of no use given the error, and yet we may want to tell the user that there was a (non-critical) error.
  • Any library routine that works in a loop, applying some (potentially failing) functionality, may want to continue the work without throwing in response to a single error.
  • The class being implemented may implement an interface that disallows nested exceptions and yet does not want to loose the root cause error information. (This is the weakest of the above arguements, but probably still valid.)
  • However in many of the times this class is used, this is the reason:
  • Within UI specific code - to throw up a dialog box (or whatever). Now this use is currently tollerated, however it is probably a poor idea to use GUI agnostic messaging in a GUI specific context. But I'm not bothered enough to change it now. Specifically this use is deprecated because it makes the app more susceptible to the configuration of the things that listen to reports.
  • Distribution Licence:
    Project B is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2 as published by the Free Software Foundation.
    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
    The License is available on the internet here, by writing to Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA, Or locally at the Licence link below.
    The copyright to this program is held by it's authors.


    Field Summary
    protected static EventListenerList inform_list
              The list of listeners
    protected static Logger log
              The log stream
     
    Constructor Summary
    private Reporter()
              Enforce Singleton
     
    Method Summary
    static void addReporterListener(com.eireneh.util.event.ReporterListener li)
              Add an Exception listener to the list of things wanting to know whenever we capture an Exception
    protected static void fireCapture(com.eireneh.util.event.ReporterEvent ev)
              Log a message
    static void informUser(java.lang.Object source, java.lang.Throwable prob)
              Something has gone wrong.
    static void informUser(java.lang.String message)
              Something has happened.
    static void removeReporterListener(com.eireneh.util.event.ReporterListener li)
              Remove an Exception listener from the list of things wanting to know whenever we capture an Exception
     
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
     

    Field Detail

    log

    protected static Logger log
    The log stream


    inform_list

    protected static EventListenerList inform_list
    The list of listeners

    Constructor Detail

    Reporter

    private Reporter()
    Enforce Singleton

    Method Detail

    informUser

    public static void informUser(java.lang.Object source,
                                  java.lang.Throwable prob)
    Something has gone wrong. We need to tell the user or someone, but we can carry on. In general having caught an exception and passed it to Reporter.informUser(), you should not throw another Exception. Called to fire a commandEntered event to all the Listeners


    informUser

    public static void informUser(java.lang.String message)
    Something has happened. We need to tell the user or someone.

    Maybe we should have an extra parameter (or even several versions of this method like log*()) that describes the severity of the message. A Sw*ng listener could use this to decide the icon in the OptionPane for example.


    addReporterListener

    public static void addReporterListener(com.eireneh.util.event.ReporterListener li)
    Add an Exception listener to the list of things wanting to know whenever we capture an Exception


    removeReporterListener

    public static void removeReporterListener(com.eireneh.util.event.ReporterListener li)
    Remove an Exception listener from the list of things wanting to know whenever we capture an Exception


    fireCapture

    protected static void fireCapture(com.eireneh.util.event.ReporterEvent ev)
    Log a message