package de.micromata.borgbutler.server;
|
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
|
import java.io.File;
|
import java.util.TimeZone;
|
|
public class RunningMode {
|
private static Logger log = LoggerFactory.getLogger(RunningMode.class);
|
private static OSType osType;
|
|
public enum Mode {PRODUCTION, DEVELOPMENT}
|
|
public enum ServerType {DESKTOP, SERVER}
|
|
public enum UserManagement {SINGLE}
|
|
public enum OSType {MAC_OS, WINDOWS, LINUX, OTHER}
|
|
private static boolean running;
|
private static File baseDir;
|
private static Boolean development;
|
private static ServerType serverType;
|
private static UserManagement userManagement = UserManagement.SINGLE;
|
|
public static Mode getMode() {
|
return isDevelopmentMode() ? Mode.DEVELOPMENT : Mode.PRODUCTION;
|
}
|
|
public static boolean isDevelopmentMode() {
|
if (development == null) {
|
development = new File(ServerConfiguration.getApplicationHome(), "borgbutler-core").exists();
|
if (development) {
|
log.warn("*** Starting BorgButler server in development mode. This mode shouldn't be used in production environments. ***");
|
}
|
}
|
return development;
|
}
|
|
public static OSType getOSType() {
|
if (osType == null) {
|
String osTypeString = System.getProperty("os.name");
|
if (osTypeString == null) {
|
osType = OSType.OTHER;
|
} else if (osTypeString.toLowerCase().contains("mac")) {
|
osType = OSType.MAC_OS;
|
} else if (osTypeString.toLowerCase().contains("win")) {
|
osType = OSType.WINDOWS;
|
} else if (osTypeString.toLowerCase().contains("linux")) {
|
osType = OSType.LINUX;
|
} else {
|
osType = OSType.OTHER;
|
}
|
}
|
return osType;
|
}
|
|
public static ServerType getServerType() {
|
return serverType;
|
}
|
|
public static void setServerType(ServerType serverType) {
|
if (RunningMode.serverType != null && serverType != RunningMode.serverType) {
|
throw new IllegalArgumentException("Can't set server-type twice with different values: new='"
|
+ serverType + "', old='" + RunningMode.serverType + "'.");
|
}
|
RunningMode.serverType = serverType;
|
}
|
|
public static UserManagement getUserManagement() {
|
return userManagement;
|
}
|
|
/**
|
* After setting all values you should call this method for a logging output with all current settings.
|
*/
|
public static void logMode() {
|
log.info("Starting " + Version.getInstance().getAppName() + " " + Version.getInstance().getVersion()
|
+ " (" + Version.getInstance().formatBuildDateISO(TimeZone.getDefault())
|
+ ") with: mode='" + RunningMode.getMode() + "', serverType='" + RunningMode.serverType
|
+ "', home dir='" + ServerConfiguration.getApplicationHome() + "', javaVersion='"
|
+ System.getProperty("java.version") + "'.");
|
}
|
}
|