NXvalidate  1
 All Classes Namespaces Files Functions Variables
Logger.java
Go to the documentation of this file.
1 /* NeXus - Neutron & X-ray Common Data Format
2  *
3  * NeXus file validation GUI tool.
4  *
5  * Copyright (C) 2010 Nexus Team
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20  *
21  * For further information, see <http://www.nexusformat.org/>
22  *
23  * Logger.java
24  *
25  */
26 package org.nexusformat.nxvalidate;
27 
28 import java.util.Vector;
29 
30 import javax.swing.event.ChangeEvent;
31 import javax.swing.event.ChangeListener;
32 
33 final class Logger {
34  private static final Logger logger = new Logger();
35 
36  private static int loggingLevel;
37  private static Vector<ChangeListener> listeners
38  = new Vector<ChangeListener>();
39  private static boolean hasListeners = false;
40 
41  public static final int TRACE = 0;
42  public static final int DEBUG = 1;
43  public static final int INFO = 2;
44  public static final int WARN = 3;
45  public static final int ERROR = 4;
46 
47  private Logger() {
48  loggingLevel = INFO;
49  }
50 
51  public static void addListener(final ChangeListener listener) {
52  if (listener == null)
53  return;
54  listeners.add(listener);
55  hasListeners = true;
56  }
57 
58  public static void setLevel(final int level) {
59  loggingLevel = level;
60  }
61 
62  static Logger getInstance() {
63  return logger;
64  }
65 
66  private void println(final String message, final int level) {
67  if (level >= loggingLevel) {
68  if (hasListeners) {
69  ChangeEvent event = new ChangeEvent(message);
70  for (ChangeListener listener : listeners) {
71  listener.stateChanged(event);
72  }
73  } else {
74  System.out.println(message);
75  }
76  }
77  }
78 
79  public void trace(final String message) {
80  this.println(message, TRACE);
81  }
82  public void debug(final String message) {
83  this.println(message, DEBUG);
84  }
85  public void info(final String message) {
86  this.println(message, INFO);
87  }
88  public void warn(final String message) {
89  this.println(message, WARN);
90  }
91  public void error(final String message) {
92  this.println(message, ERROR);
93  }
94 }