001 // Copyright (c) 2001 Hursh Jain (http://www.mollypages.org) 002 // The Molly framework is freely distributable under the terms of an 003 // MIT-style license. For details, see the molly pages web site at: 004 // http://www.mollypages.org/. Use, modify, have fun ! 005 006 package fc.util; 007 008 009 /** 010 Identifies the current platform/OS that the JVM is running 011 under. There is only 1 instance of this class corresponding 012 to each type of platform. Therefore reference equality 013 can be used to compare whether the current platform is 014 the same as some particular platform type. 015 016 @author hursh jain 017 **/ 018 019 public class Platform 020 { 021 public static final Platform LINUX = new Platform("linux"); 022 public static final Platform WINDOWS = new Platform("windows"); 023 public static final Platform SOLARIS = new Platform("solaris"); 024 public static final Platform OSX = new Platform("osx"); 025 public static final Platform FREEBSD = new Platform("freebsd"); 026 public static final Platform OPENBSD = new Platform("openbsd"); 027 /** other OS's including HPUX, IRIX, AIX, and many others **/ 028 public static final Platform OTHER = new Platform("other"); 029 030 private static Platform currentPlatform; 031 private String name; 032 private static byte count = 1; 033 034 //inintialize the current platform 035 static { 036 Platform.init(); 037 } 038 039 private Platform(String name) { 040 this.name = name; 041 } 042 043 public static Platform getPlatform() { 044 return currentPlatform; 045 } 046 047 //No need to define/use equals(), since there is one 048 //reference to each type only, == suffices 049 050 public static boolean isWindows() { 051 return (currentPlatform == WINDOWS); 052 } 053 054 public static boolean isOSX() { 055 return (currentPlatform == OSX); 056 } 057 058 public static boolean isLinux() { 059 return (currentPlatform == LINUX); 060 } 061 062 public static boolean isSolaris() { 063 return (currentPlatform == SOLARIS); 064 } 065 066 public static boolean isFreeBSD() { 067 return (currentPlatform == FREEBSD); 068 } 069 070 public static boolean isOpenBSD() { 071 return (currentPlatform == OPENBSD); 072 } 073 074 public static boolean isOther() { 075 return (currentPlatform == OTHER); 076 } 077 078 public static boolean isAIX() { 079 return (currentPlatform == WINDOWS); 080 } 081 082 private static void init() 083 { 084 String osname = System.getProperty("os.name").toLowerCase(); 085 //System.out.println(osname); 086 if ( osname.indexOf("windows") != -1 ) { 087 currentPlatform = WINDOWS; 088 } 089 else if ( osname.indexOf("linux") != -1 ) { 090 currentPlatform = LINUX; 091 } 092 else if ( osname.indexOf("sun") != -1 ) { 093 currentPlatform = SOLARIS; 094 } 095 else if ( osname.toLowerCase().indexOf("mac") != -1 096 && osname.toLowerCase().indexOf("x") != -1) { 097 currentPlatform = OSX; 098 } 099 else if ( osname.indexOf("freebsd") != -1 ) { 100 currentPlatform = FREEBSD; 101 } 102 else if ( osname.indexOf("openbsd") != -1 ) { 103 currentPlatform = OPENBSD; 104 } 105 else { 106 currentPlatform = OTHER; 107 } 108 } //~init 109 110 public String toString() { 111 return name; 112 } 113 114 public static void main(String[] args) 115 { 116 System.out.println("Current platform: " + getPlatform()); 117 } 118 119 }