enhanced motor selection dialog
[debian/openrocket] / src / net / sf / openrocket / startup / Application.java
1 package net.sf.openrocket.startup;
2
3 import net.sf.openrocket.database.ThrustCurveMotorSetDatabase;
4 import net.sf.openrocket.logging.LogHelper;
5 import net.sf.openrocket.logging.LogLevel;
6 import net.sf.openrocket.logging.LogLevelBufferLogger;
7 import net.sf.openrocket.logging.PrintStreamLogger;
8
9 /**
10  * A class that provides singleton instances / beans for other classes to utilize.
11  * 
12  * @author Sampo Niskanen <sampo.niskanen@iki.fi>
13  */
14 public final class Application {
15         
16         private static LogHelper logger;
17         private static LogLevelBufferLogger logBuffer;
18         
19         private static ThrustCurveMotorSetDatabase motorSetDatabase;
20         
21         // Initialize the logger to something sane for testing without executing Startup
22         static {
23                 logger = new PrintStreamLogger();
24                 for (LogLevel l : LogLevel.values()) {
25                         ((PrintStreamLogger) logger).setOutput(l, System.out);
26                 }
27         }
28         
29         
30         /**
31          * Retrieve the logger to be used in logging.  By default this returns
32          * a logger that outputs to stdout/stderr even if not separately initialized,
33          * useful for development and debugging.
34          */
35         public static LogHelper getLogger() {
36                 return logger;
37         }
38         
39         /**
40          * Set the logger to be used in logging.  Note that calling this will only have effect
41          * on not-yet loaded classes, as the instance is stored in a static variable.
42          */
43         public static void setLogger(LogHelper logger) {
44                 Application.logger = logger;
45         }
46         
47         
48
49         /**
50          * Return the log buffer.
51          * 
52          * @return the logBuffer or null if not initialized
53          */
54         public static LogLevelBufferLogger getLogBuffer() {
55                 return logBuffer;
56         }
57         
58         /**
59          * Set the log buffer logger.  The logger must be separately configured
60          * to receive the logging.
61          */
62         public static void setLogBuffer(LogLevelBufferLogger logBuffer) {
63                 Application.logBuffer = logBuffer;
64         }
65         
66         
67
68         /**
69          * Return the database of all thrust curves loaded into the system.
70          */
71         public static ThrustCurveMotorSetDatabase getMotorSetDatabase() {
72                 return motorSetDatabase;
73         }
74         
75         /**
76          * Set the database of thrust curves loaded into the system.
77          */
78         public static void setMotorSetDatabase(ThrustCurveMotorSetDatabase motorSetDatabase) {
79                 Application.motorSetDatabase = motorSetDatabase;
80         }
81         
82
83 }