diff options
Diffstat (limited to 'src/main/java/com/btr/proxy/util/PlatformUtil.java')
-rw-r--r-- | src/main/java/com/btr/proxy/util/PlatformUtil.java | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/src/main/java/com/btr/proxy/util/PlatformUtil.java b/src/main/java/com/btr/proxy/util/PlatformUtil.java index 39de5d2..52a25fd 100644 --- a/src/main/java/com/btr/proxy/util/PlatformUtil.java +++ b/src/main/java/com/btr/proxy/util/PlatformUtil.java @@ -14,33 +14,40 @@ public class PlatformUtil { public enum Desktop {WIN, KDE, GNOME, MAC_OS, OTHER} public enum Browser {IE, FIREFOX} + private static Platform platform = null; + private static Desktop desktop = null; + /************************************************************************* * Gets the platform we are currently running on. * @return a platform code. ************************************************************************/ - public static Platform getCurrentPlattform() { + public static synchronized Platform getCurrentPlattform() { + if (platform != null) + return platform; 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; + platform = Platform.WIN; } if (osName.toLowerCase().contains("linux")) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Linux platform: {0}", osName); - return Platform.LINUX; + platform = Platform.LINUX; } if (osName.startsWith("Mac OS")) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Mac OS platform: {0}", osName); - return Platform.MAC_OS; + platform = Platform.MAC_OS; } if (osName.startsWith("SunOS")) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Solaris platform: {0}", osName); - return Platform.SOLARIS; + platform = Platform.SOLARIS; } - - return Platform.OTHER; + if (platform == null) { + platform = Platform.OTHER; + } + return platform; } /************************************************************************* @@ -64,16 +71,18 @@ public class PlatformUtil { * @return the desktop identifier. ************************************************************************/ - public static Desktop getCurrentDesktop() { + public static synchronized Desktop getCurrentDesktop() { + if (desktop != null) + return desktop; Platform platf = getCurrentPlattform(); if (platf == Platform.WIN) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Windows desktop"); - return Desktop.WIN; + desktop = Desktop.WIN; } if (platf == Platform.MAC_OS) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Mac OS desktop"); - return Desktop.MAC_OS; + desktop = Desktop.MAC_OS; } if (platf == Platform.LINUX @@ -82,15 +91,18 @@ public class PlatformUtil { if (isKDE()) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected KDE desktop"); - return Desktop.KDE; + desktop = Desktop.KDE; } if (isGnome()) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Gnome desktop"); - return Desktop.GNOME; + desktop = Desktop.GNOME; } } - Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Unknown desktop"); - return Desktop.OTHER; + if (desktop == null) { + Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Unknown desktop"); + desktop = Desktop.OTHER; + } + return desktop; } /************************************************************************* |