001 package org.util.environment;
002
003 import java.io.*;
004 import java.net.*;
005 import javax.swing.*;
006
007 public class Environment {
008
009 private static boolean IS_LINUX, IS_WINDOWS, IS_MAC;
010 private static String OS_NAME;
011 private static boolean LAUNCHED_BY_JAR;
012 private static URL launched_url;
013 private static File save_dir_;
014 private static boolean initialized_;
015 private static int debug_level_ = 1;
016
017 static {
018 OS_NAME = System.getProperty("os.name");
019 debug("OS:" + OS_NAME);
020 IS_LINUX = OS_NAME.toLowerCase().startsWith("linux");
021 IS_WINDOWS = OS_NAME.toLowerCase().startsWith("win");
022 IS_MAC = OS_NAME.toLowerCase().startsWith("mac");
023 }
024 public static boolean isLinux() throws Exception {
025 return IS_LINUX;
026 }
027 public static boolean isWindows() throws Exception {
028 return IS_WINDOWS;
029 }
030 public static boolean isMac() throws Exception {
031 return IS_MAC;
032 }
033 public static boolean isInitialized() {
034 return initialized_;
035 }
036
037 public static void initialize() throws Exception {
038 String sample = "org/util/environment/Environment.class";
039
040 System.out.println("Gathering Enviroment Information.");
041
042 // jar:file:[jar file path]!/org/environment/Environment.class
043 URL class_url = ClassLoader.getSystemResource(sample);
044 debug("org/environment/Environment.class url:["+class_url+"]");
045
046 LAUNCHED_BY_JAR = class_url.toString().startsWith("jar:");
047 if(LAUNCHED_BY_JAR) {
048 String tmp = class_url.toString().replaceAll("jar:", "");
049 int index = tmp.indexOf("!");
050 tmp = tmp.substring(0, index);
051 URL tmp_url = new URL(tmp);
052 save_dir_ = new File(tmp_url.toURI()).getParentFile();
053 } else {
054 save_dir_ = new File(".").getCanonicalFile();
055 }
056 debug(save_dir_);
057 initialized_ = true;
058 }
059
060 public static URL getURL(String path) {
061 return ClassLoader.getSystemResource(path);
062 }
063
064 public static File getSaveDirectory() {
065 return save_dir_;
066 }
067
068 private static void debug(Object msg) {
069 if(Environment.getDebugLevel() != 0)
070 System.out.println(msg);
071 }
072
073 public static int getDebugLevel() {
074 return debug_level_;
075 }
076 public static void setDebugLevel(int debug_level) {
077 debug_level_ = debug_level;
078 }
079 }