1 package net.sf.openrocket.startup;
3 import net.sf.openrocket.database.ThrustCurveMotorSetDatabase;
4 import net.sf.openrocket.l10n.ClassBasedTranslator;
5 import net.sf.openrocket.l10n.DebugTranslator;
6 import net.sf.openrocket.l10n.ExceptionSuppressingTranslator;
7 import net.sf.openrocket.l10n.Translator;
8 import net.sf.openrocket.logging.LogHelper;
9 import net.sf.openrocket.logging.LogLevel;
10 import net.sf.openrocket.logging.LogLevelBufferLogger;
11 import net.sf.openrocket.logging.PrintStreamLogger;
14 * A class that provides singleton instances / beans for other classes to utilize.
16 * @author Sampo Niskanen <sampo.niskanen@iki.fi>
18 public final class Application {
20 private static LogHelper logger;
21 private static LogLevelBufferLogger logBuffer;
23 private static Translator baseTranslator = new DebugTranslator(null);
25 private static ThrustCurveMotorSetDatabase motorSetDatabase;
28 // Initialize the logger to something sane for testing without executing Startup
30 setLogOutputLevel(LogLevel.DEBUG);
35 * Retrieve the logger to be used in logging. By default this returns
36 * a logger that outputs to stdout/stderr even if not separately initialized,
37 * useful for development and debugging.
39 public static LogHelper getLogger() {
44 * Set the logger to be used in logging. Note that calling this will only have effect
45 * on not-yet loaded classes, as the instance is stored in a static variable.
47 public static void setLogger(LogHelper logger) {
48 Application.logger = logger;
54 * Return the log buffer.
56 * @return the logBuffer or null if not initialized
58 public static LogLevelBufferLogger getLogBuffer() {
63 * Set the log buffer logger. The logger must be separately configured
64 * to receive the logging.
66 public static void setLogBuffer(LogLevelBufferLogger logBuffer) {
67 Application.logBuffer = logBuffer;
72 * Set the logging to output the specified log level and upwards to standard output.
74 * @param level the minimum logging level to output.
76 public static void setLogOutputLevel(LogLevel level) {
77 logger = new PrintStreamLogger();
78 for (LogLevel l : LogLevel.values()) {
79 if (l.atLeast(level)) {
80 ((PrintStreamLogger) logger).setOutput(l, System.out);
88 * Return the translator to use for obtaining translated strings.
89 * @return a translator.
91 public static Translator getTranslator() {
92 if (baseTranslator instanceof DebugTranslator) {
93 return baseTranslator;
96 Translator t = baseTranslator;
97 t = new ClassBasedTranslator(t, 1);
98 t = new ExceptionSuppressingTranslator(t);
103 * Set the translator used in obtaining translated strings.
104 * @param translator the translator to set.
106 public static void setBaseTranslator(Translator translator) {
107 Application.baseTranslator = translator;
113 * Return the database of all thrust curves loaded into the system.
115 public static ThrustCurveMotorSetDatabase getMotorSetDatabase() {
116 return motorSetDatabase;
120 * Set the database of thrust curves loaded into the system.
122 public static void setMotorSetDatabase(ThrustCurveMotorSetDatabase motorSetDatabase) {
123 Application.motorSetDatabase = motorSetDatabase;