summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/btr/proxy/util/PlatformUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/btr/proxy/util/PlatformUtil.java')
-rw-r--r--src/main/java/com/btr/proxy/util/PlatformUtil.java114
1 files changed, 114 insertions, 0 deletions
diff --git a/src/main/java/com/btr/proxy/util/PlatformUtil.java b/src/main/java/com/btr/proxy/util/PlatformUtil.java
new file mode 100644
index 0000000..39de5d2
--- /dev/null
+++ b/src/main/java/com/btr/proxy/util/PlatformUtil.java
@@ -0,0 +1,114 @@
+package com.btr.proxy.util;
+
+import com.btr.proxy.util.Logger.LogLevel;
+
+/*****************************************************************************
+ * Defines some helper methods to find the correct platform.
+ *
+ * @author Bernd Rosstauscher (proxyvole@rosstauscher.de) Copyright 2009
+ ****************************************************************************/
+
+public class PlatformUtil {
+
+ public enum Platform {WIN, LINUX, MAC_OS, SOLARIS, OTHER}
+ public enum Desktop {WIN, KDE, GNOME, MAC_OS, OTHER}
+ public enum Browser {IE, FIREFOX}
+
+ /*************************************************************************
+ * Gets the platform we are currently running on.
+ * @return a platform code.
+ ************************************************************************/
+
+ public static Platform getCurrentPlattform() {
+ String osName = System.getProperty("os.name");
+ Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detecting platform. Name is: {0}", osName);
+
+ if (osName.toLowerCase().contains("windows")) {
+ Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Windows platform: {0}", osName);
+ return Platform.WIN;
+ }
+ if (osName.toLowerCase().contains("linux")) {
+ Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Linux platform: {0}", osName);
+ return Platform.LINUX;
+ }
+ if (osName.startsWith("Mac OS")) {
+ Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Mac OS platform: {0}", osName);
+ return Platform.MAC_OS;
+ }
+ if (osName.startsWith("SunOS")) {
+ Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Solaris platform: {0}", osName);
+ return Platform.SOLARIS;
+ }
+
+ return Platform.OTHER;
+ }
+
+ /*************************************************************************
+ * Gets the ID for the platform default browser.
+ * @return a browser ID, null if no supported browser was detected.
+ ************************************************************************/
+
+ public static Browser getDefaultBrowser() {
+ // Use better logic to detect default browser?
+ if (getCurrentPlattform() == Platform.WIN) {
+ Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Browser is InternetExplorer");
+ return Browser.IE;
+ } else {
+ Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Browser Firefox. Fallback?");
+ return Browser.FIREFOX;
+ }
+ }
+
+ /*************************************************************************
+ * Gets the desktop that we are running on.
+ * @return the desktop identifier.
+ ************************************************************************/
+
+ public static Desktop getCurrentDesktop() {
+ Platform platf = getCurrentPlattform();
+
+ if (platf == Platform.WIN) {
+ Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Windows desktop");
+ return Desktop.WIN;
+ }
+ if (platf == Platform.MAC_OS) {
+ Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Mac OS desktop");
+ return Desktop.MAC_OS;
+ }
+
+ if (platf == Platform.LINUX
+ || platf == Platform.SOLARIS
+ || platf == Platform.OTHER) {
+
+ if (isKDE()) {
+ Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected KDE desktop");
+ return Desktop.KDE;
+ }
+ if (isGnome()) {
+ Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Gnome desktop");
+ return Desktop.GNOME;
+ }
+ }
+ Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Unknown desktop");
+ return Desktop.OTHER;
+ }
+
+ /*************************************************************************
+ * Checks if we are currently running under Gnome desktop.
+ * @return true if it is a Gnome else false.
+ ************************************************************************/
+
+ private static boolean isGnome() {
+ return System.getenv("GNOME_DESKTOP_SESSION_ID") != null;
+ }
+
+ /*************************************************************************
+ * Checks if we are currently running under KDE desktop.
+ * @return true if it is a KDE else false.
+ ************************************************************************/
+
+ private static boolean isKDE() {
+ return System.getenv("KDE_SESSION_VERSION") != null;
+ }
+
+}