OSDN Git Service

remove subversion keyword
[jindolf/Jindolf.git] / src / main / java / jp / sourceforge / jindolf / EnvInfo.java
1 /*\r
2  * environment information\r
3  *\r
4  * License : The MIT License\r
5  * Copyright(c) 2009 olyutorskii\r
6  */\r
7 \r
8 package jp.sourceforge.jindolf;\r
9 \r
10 import java.io.File;\r
11 import java.text.NumberFormat;\r
12 import java.util.Set;\r
13 import java.util.SortedMap;\r
14 import java.util.TreeMap;\r
15 \r
16 /**\r
17  * 実行環境に関する各種情報。\r
18  */\r
19 public final class EnvInfo{\r
20 \r
21     /** OS名。 */\r
22     public static final String OS_NAME;\r
23     /** OSバージョン。 */\r
24     public static final String OS_VERSION;\r
25     /** アーキテクチャ種別。 */\r
26     public static final String OS_ARCH;\r
27     /** Java実行系ベンダ。 */\r
28     public static final String JAVA_VENDOR;\r
29     /** Java実行形バージョン。 */\r
30     public static final String JAVA_VERSION;\r
31 \r
32     private static final SortedMap<String, String> propertyMap =\r
33             new TreeMap<String, String>();\r
34 \r
35     private static final SortedMap<String, String> environmentMap =\r
36             new TreeMap<String, String>();\r
37 \r
38     private static final String[] classpaths;\r
39 \r
40     static{\r
41         OS_NAME      = getSecureProperty("os.name");\r
42         OS_VERSION   = getSecureProperty("os.version");\r
43         OS_ARCH      = getSecureProperty("os.arch");\r
44         JAVA_VENDOR  = getSecureProperty("java.vendor");\r
45         JAVA_VERSION = getSecureProperty("java.version");\r
46 \r
47         getSecureEnvironment("LANG");\r
48         getSecureEnvironment("DISPLAY");\r
49 \r
50         String classpath   = getSecureProperty("java.class.path");\r
51         if(classpath != null){\r
52             classpaths = classpath.split(File.pathSeparator);\r
53         }else{\r
54             classpaths = new String[0];\r
55         }\r
56     }\r
57 \r
58     /**\r
59      * 可能ならシステムプロパティを読み込む。\r
60      * @param key キー\r
61      * @return プロパティ値。セキュリティ上読み込み禁止の場合はnull。\r
62      */\r
63     private static String getSecureProperty(String key){\r
64         String result;\r
65         try{\r
66             result = System.getProperty(key);\r
67             if(result != null) propertyMap.put(key, result);\r
68         }catch(SecurityException e){\r
69             result = null;\r
70         }\r
71         return result;\r
72     }\r
73 \r
74     /**\r
75      * 可能なら環境変数を読み込む。\r
76      * @param name 環境変数名\r
77      * @return 環境変数値。セキュリティ上読み込み禁止の場合はnull。\r
78      */\r
79     private static String getSecureEnvironment(String name){\r
80         String result;\r
81         try{\r
82             result = System.getenv(name);\r
83             if(result != null) environmentMap.put(name, result);\r
84         }catch(SecurityException e){\r
85             result = null;\r
86         }\r
87         return result;\r
88     }\r
89 \r
90     /**\r
91      * VM詳細情報を文字列化する。\r
92      * @return VM詳細情報\r
93      */\r
94     public static String getVMInfo(){\r
95         StringBuilder result = new StringBuilder();\r
96         NumberFormat nform = NumberFormat.getNumberInstance();\r
97 \r
98         result.append("最大ヒープメモリ量: "\r
99                 + nform.format(Jindolf.RUNTIME.maxMemory()) + " bytes\n");\r
100 \r
101         result.append("\n");\r
102 \r
103         result.append("起動時引数:\n");\r
104         for(String arg : Jindolf.getOptionInfo().getInvokeArgList()){\r
105             result.append("  ").append(arg).append("\n");\r
106         }\r
107 \r
108         result.append("\n");\r
109 \r
110         result.append("主要システムプロパティ:\n");\r
111         Set<String> propKeys = propertyMap.keySet();\r
112         for(String propKey : propKeys){\r
113             if(propKey.equals("java.class.path")) continue;\r
114             String value = propertyMap.get(propKey);\r
115             result.append("  ");\r
116             result.append(propKey).append("=").append(value).append("\n");\r
117         }\r
118 \r
119         result.append("\n");\r
120 \r
121         result.append("主要環境変数:\n");\r
122         Set<String> envKeys = environmentMap.keySet();\r
123         for(String envKey : envKeys){\r
124             String value = environmentMap.get(envKey);\r
125             result.append("  ");\r
126             result.append(envKey).append("=").append(value).append("\n");\r
127         }\r
128 \r
129         result.append("\n");\r
130 \r
131         result.append("クラスパス:\n");\r
132         for(String path : classpaths){\r
133             result.append("  ");\r
134             result.append(path).append("\n");\r
135         }\r
136 \r
137         result.append("\n");\r
138 \r
139         return result.toString();\r
140     }\r
141 \r
142     /**\r
143      * 隠れコンストラクタ。\r
144      */\r
145     private EnvInfo(){\r
146         throw new AssertionError();\r
147     }\r
148 \r
149 }\r