1 package net.sf.openrocket.startup;
3 import net.sf.openrocket.database.ThrustCurveMotorSetDatabase;
4 import net.sf.openrocket.l10n.DebugTranslator;
5 import net.sf.openrocket.l10n.Translator;
6 import net.sf.openrocket.logging.LogHelper;
7 import net.sf.openrocket.logging.LogLevel;
8 import net.sf.openrocket.logging.LogLevelBufferLogger;
9 import net.sf.openrocket.logging.PrintStreamLogger;
12 * A class that provides singleton instances / beans for other classes to utilize.
14 * @author Sampo Niskanen <sampo.niskanen@iki.fi>
16 public final class Application {
18 private static LogHelper logger;
19 private static LogLevelBufferLogger logBuffer;
21 private static Translator translator = new DebugTranslator();
23 private static ThrustCurveMotorSetDatabase motorSetDatabase;
26 // Initialize the logger to something sane for testing without executing Startup
28 setLogOutputLevel(LogLevel.DEBUG);
33 * Retrieve the logger to be used in logging. By default this returns
34 * a logger that outputs to stdout/stderr even if not separately initialized,
35 * useful for development and debugging.
37 public static LogHelper getLogger() {
42 * Set the logger to be used in logging. Note that calling this will only have effect
43 * on not-yet loaded classes, as the instance is stored in a static variable.
45 public static void setLogger(LogHelper logger) {
46 Application.logger = logger;
52 * Return the log buffer.
54 * @return the logBuffer or null if not initialized
56 public static LogLevelBufferLogger getLogBuffer() {
61 * Set the log buffer logger. The logger must be separately configured
62 * to receive the logging.
64 public static void setLogBuffer(LogLevelBufferLogger logBuffer) {
65 Application.logBuffer = logBuffer;
70 * Set the logging to output the specified log level and upwards to standard output.
72 * @param level the minimum logging level to output.
74 public static void setLogOutputLevel(LogLevel level) {
75 logger = new PrintStreamLogger();
76 for (LogLevel l : LogLevel.values()) {
77 if (l.atLeast(level)) {
78 ((PrintStreamLogger) logger).setOutput(l, System.out);
86 * Return the translator to use for obtaining translated strings.
87 * @return a translator.
89 public static Translator getTranslator() {
94 * Set the translator used in obtaining translated strings.
95 * @param translator the translator to set.
97 public static void setTranslator(Translator translator) {
98 Application.translator = translator;
104 * Return the database of all thrust curves loaded into the system.
106 public static ThrustCurveMotorSetDatabase getMotorSetDatabase() {
107 return motorSetDatabase;
111 * Set the database of thrust curves loaded into the system.
113 public static void setMotorSetDatabase(ThrustCurveMotorSetDatabase motorSetDatabase) {
114 Application.motorSetDatabase = motorSetDatabase;