summaryrefslogblamecommitdiffstats
path: root/src/main/java/com/btr/proxy/util/PlatformUtil.java
blob: 39de5d2e232465c2f9113653ad060424bc888eef (plain) (tree)

















































































































                                                                                                                 
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;
	}
	
}