package abbot;
import java.util.StringTokenizer;
/** Simple utility to figure out what platform we're on, what java version
* we're running.
*/
public class Platform {
public static final int JAVA_1_0 = 0x1000;
public static final int JAVA_1_1 = 0x1100;
public static final int JAVA_1_2 = 0x1200;
public static final int JAVA_1_3 = 0x1300;
public static final int JAVA_1_4 = 0x1400;
public static final int JAVA_1_5 = 0x1500;
public static final String OS_NAME;
public static final String JAVA_VERSION_STRING;
public static final int JAVA_VERSION;
static {
OS_NAME = System.getProperty("os.name");
JAVA_VERSION_STRING = System.getProperty("java.version");
JAVA_VERSION = parse(JAVA_VERSION_STRING);
}
private static boolean isWindows = OS_NAME.startsWith("Windows");
private static boolean isWindows9X = isWindows
&& (OS_NAME.indexOf("95") != -1
|| OS_NAME.indexOf("98") != -1
|| OS_NAME.indexOf("ME") != -1);
private static boolean isWindowsXP = isWindows && OS_NAME.indexOf("XP") != -1;
private static boolean isMac = System.getProperty("mrj.version") != null;
private static boolean isOSX = isMac && OS_NAME.indexOf("OS X") != -1;
private static boolean isSunOS = (OS_NAME.startsWith("SunOS")
|| OS_NAME.startsWith("Solaris"));
private static boolean isHPUX = OS_NAME.equals("HP-UX");
private static boolean isLinux = OS_NAME.equals("Linux");
/** No instantiations. */
private Platform() {
}
private static String strip(String number) {
while (number.startsWith("0") && number.length() > 1)
number = number.substring(1);
return number;
}
static int parse(String vs) {
int version = 0;
try {
StringTokenizer st = new StringTokenizer(vs, "._");
version = Integer.parseInt(strip(st.nextToken())) * 0x1000;
version += Integer.parseInt(strip(st.nextToken())) * 0x100;
version += Integer.parseInt(strip(st.nextToken())) * 0x10;
version += Integer.parseInt(strip(st.nextToken()));
}
catch(NumberFormatException nfe) {
}
catch(java.util.NoSuchElementException nse) {
}
return version;
}
// FIXME this isn't entirely correct, maybe should look for a motif class
// instead.
public static boolean isX11() { return !isOSX && !isWindows; }
public static boolean isWindows() { return isWindows; }
public static boolean isWindows9X() { return isWindows9X; }
public static boolean isWindowsXP() { return isWindowsXP; }
public static boolean isMacintosh() { return isMac; }
public static boolean isOSX() { return isOSX; }
public static boolean isSolaris() { return isSunOS; }
public static boolean isHPUX() { return isHPUX; }
public static boolean isLinux() { return isLinux; }
public static void main(String[] args) {
System.out.println("Java version is " + JAVA_VERSION_STRING);
System.out.println("Version number is " + Integer.toHexString(JAVA_VERSION));
System.out.println("os.name=" + OS_NAME);
}
}