EMMA Coverage Report (generated Fri Feb 14 08:28:31 UTC 2014)
[all classes][org.qedeq.kernel.bo.log]

COVERAGE SUMMARY FOR SOURCE FILE [QedeqLog.java]

nameclass, %method, %block, %line, %
QedeqLog.java100% (1/1)100% (12/12)99%  (236/238)98%  (55.9/57)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class QedeqLog100% (1/1)100% (12/12)99%  (236/238)98%  (55.9/57)
<static initializer> 100% (1/1)93%  (13/14)96%  (1.9/2)
addLog (LogListener): void 100% (1/1)94%  (15/16)80%  (4/5)
QedeqLog (): void 100% (1/1)100% (8/8)100% (3/3)
getInstance (): QedeqLog 100% (1/1)100% (2/2)100% (1/1)
logFailureReply (String, String, String): void 100% (1/1)100% (27/27)100% (6/6)
logFailureState (String, String, String): void 100% (1/1)100% (27/27)100% (6/6)
logMessage (String): void 100% (1/1)100% (25/25)100% (6/6)
logMessageState (String, String): void 100% (1/1)100% (26/26)100% (6/6)
logRequest (String, String): void 100% (1/1)100% (26/26)100% (6/6)
logSuccessfulReply (String, String): void 100% (1/1)100% (26/26)100% (6/6)
logSuccessfulState (String, String): void 100% (1/1)100% (26/26)100% (6/6)
removeLog (LogListener): void 100% (1/1)100% (15/15)100% (4/4)

1/* This file is part of the project "Hilbert II" - http://www.qedeq.org
2 *
3 * Copyright 2000-2014,  Michael Meyling <mime@qedeq.org>.
4 *
5 * "Hilbert II" is free software; you can redistribute
6 * it and/or modify it under the terms of the GNU General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15 
16package org.qedeq.kernel.bo.log;
17 
18import java.util.ArrayList;
19import java.util.List;
20 
21import org.qedeq.base.trace.Trace;
22 
23 
24/**
25 * This class organizes the logging.
26 *
27 * TODO 20110606 m31: this class is a singleton but it would be better if it is not
28 *                    to accomplish this we must put a getLogInstance method in all
29 *                    important BO classes.
30 *
31 * @author  Michael Meyling
32 */
33public final class QedeqLog implements LogListener {
34 
35    /** This class. */
36    private static final Class CLASS = QedeqLog.class;
37 
38    /** The one and only instance. */
39    private static QedeqLog instance = new QedeqLog();
40 
41    /** The loggers. */
42    private List loggers = new ArrayList();
43 
44 
45    /**
46     * Get instance of Logger.
47     *
48     * @return  singleton
49     */
50    public static final QedeqLog getInstance() {
51        return instance;
52    }
53 
54 
55    /**
56     * Don't use me outside of this class.
57     */
58    private QedeqLog() {
59        // nothing to do
60    }
61 
62    /**
63     * Add listener.
64     *
65     * @param   log Add this listener.
66     */
67    public synchronized void addLog(final LogListener log) {
68        if (log == null) {
69            return;
70        }
71        loggers.add(log);
72        Trace.paramInfo(CLASS, this, "addLog(LogListener)", "log", log.getClass());
73    }
74 
75    /**
76     * Remove listener.
77     *
78     * @param   log Remove this listener.
79     */
80    public synchronized void removeLog(final LogListener log) {
81        loggers.remove(log);
82        if (log != null) {
83            Trace.paramInfo(CLASS, this, "removeLog(LogListener)", "log", log.getClass());
84        }
85    }
86 
87    public synchronized void logMessageState(final String text, final String url) {
88        for (int i = 0; i < loggers.size(); i++) {
89            try {   // we don't know if the LogListener is free of programming errors...
90                ((LogListener) loggers.get(i)).logMessageState(text, url);
91            } catch (RuntimeException e) {
92                Trace.fatal(CLASS, this, "logMessageState", "LogListener throwed RuntimeException",
93                    e);
94            }
95        }
96    }
97 
98    public synchronized void logFailureState(final String text, final String url, final String description) {
99        for (int i = 0; i < loggers.size(); i++) {
100            try {   // we don't know if the LogListener is free of programming errors...
101                ((LogListener) loggers.get(i)).logFailureState(text, url, description);
102            } catch (RuntimeException e) {
103                Trace.fatal(CLASS, this, "logFailureState", "LogListener throwed RuntimeException",
104                    e);
105            }
106        }
107    }
108 
109    public synchronized void logSuccessfulState(final String text, final String url) {
110        for (int i = 0; i < loggers.size(); i++) {
111            try {   // we don't know if the LogListener is free of programming errors...
112                ((LogListener) loggers.get(i)).logSuccessfulState(text, url);
113            } catch (RuntimeException e) {
114                Trace.fatal(CLASS, this, "logSuccessfulState",
115                    "LogListener throwed RuntimeException", e);
116            }
117        }
118    }
119 
120    public synchronized void logRequest(final String text, final String url) {
121        for (int i = 0; i < loggers.size(); i++) {
122            try {   // we don't know if the LogListener is free of programming errors...
123                ((LogListener) loggers.get(i)).logRequest(text, url);
124            } catch (RuntimeException e) {
125                Trace.fatal(CLASS, this, "logRequest", "LogListener throwed RuntimeException", e);
126            }
127        }
128    }
129 
130    public synchronized void logSuccessfulReply(final String text, final String url) {
131        for (int i = 0; i < loggers.size(); i++) {
132            try {   // we don't know if the LogListener is free of programming errors...
133                ((LogListener) loggers.get(i)).logSuccessfulReply(text, url);
134            } catch (RuntimeException e) {
135                Trace.fatal(CLASS, this, "logSuccessfulReply", "LogListener throwed RuntimeException",
136                    e);
137            }
138        }
139    }
140 
141    public synchronized void logFailureReply(final String text, final String url, final String description) {
142        for (int i = 0; i < loggers.size(); i++) {
143            try {   // we don't know if the LogListener is free of programming errors...
144                ((LogListener) loggers.get(i)).logFailureReply(text, url, description);
145            } catch (RuntimeException e) {
146                Trace.fatal(CLASS, this, "logFailureReply", "LogListener throwed RuntimeException",
147                    e);
148            }
149        }
150    }
151 
152    public synchronized void logMessage(final String text) {
153        for (int i = 0; i < loggers.size(); i++) {
154            try {   // we don't know if the LogListener is free of programming errors...
155                ((LogListener) loggers.get(i)).logMessage(text);
156            } catch (RuntimeException e) {
157                Trace.fatal(CLASS, this, "logMessage", "LogListener throwed RuntimeException", e);
158            }
159        }
160    }
161 
162 
163}

[all classes][org.qedeq.kernel.bo.log]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov