001    /*
002     * SystemInfo
003     * 
004     * Copyright (c) 2000, 2001, 2002, 2003 Marco Schmidt.
005     * All rights reserved.
006     */
007    
008    package net.sourceforge.jiu.util;
009    
010    import net.sourceforge.jiu.apps.StringIndexConstants;
011    import net.sourceforge.jiu.apps.Strings;
012    
013    /**
014     * Class to retrieve system information in a human-readable form.
015     * @author Marco Schmidt
016     */
017    public class SystemInfo implements StringIndexConstants
018    {
019            private SystemInfo()
020            {
021            }
022    
023            public static String getMemoryInfo(Strings strings)
024            {
025                    Runtime runtime = Runtime.getRuntime();
026                    long freeMemory = runtime.freeMemory();
027                    long totalMemory = runtime.totalMemory();
028                    long usedMemory = totalMemory - freeMemory;
029                    return
030                            strings.get(StringIndexConstants.FREE_MEMORY) + "=" + freeMemory + "\n" +
031                            strings.get(StringIndexConstants.USED_MEMORY) + "=" + usedMemory + "\n" +
032                            strings.get(StringIndexConstants.TOTAL_MEMORY) + "=" + totalMemory + "\n";
033            }
034    
035            /**
036             * Returns a multiple-line text with information on the Java Virtual Machine,
037             * the path settings and the operating system used, regarding the current
038             * language by using a {@link Strings} resource.
039             * @return system information as String
040             * @see java.lang.System#getProperty(String)
041             */
042            public static String getSystemInfo(Strings strings)
043            {
044                    final String[] PROPERTIES =
045                    {"java.version",
046                     "java.vendor",
047                     "java.vendor.url",
048                     "java.home",
049                     "java.vm.specification.version",
050                     "java.vm.specification.vendor",
051                     "java.vm.specification.name",
052                     "java.vm.version",
053                     "java.vm.vendor",
054                     "java.vm.name",
055                     "java.specification.version",
056                     "java.specification.vendor",
057                     "java.specification.name",
058                     "java.class.version",
059                     "java.class.path",
060                     "os.name",
061                     "os.arch",
062                     "os.version",
063                     "sun.cpu.endian",
064                     "sun.cpu.isalist",
065                    };
066                    final int[] STRING_INDEX_VALUES =
067                    {
068                            PROPERTY_JAVA_VERSION,
069                            PROPERTY_JAVA_VENDOR,
070                            PROPERTY_JAVA_VENDOR_URL,
071                            PROPERTY_JAVA_HOME,
072                            PROPERTY_JAVA_VM_SPECIFICATION_VERSION,
073                            PROPERTY_JAVA_VM_SPECIFICATION_VENDOR,
074                            PROPERTY_JAVA_VM_SPECIFICATION_NAME,
075                            PROPERTY_JAVA_VM_VERSION,
076                            PROPERTY_JAVA_VM_VENDOR,
077                            PROPERTY_JAVA_VM_NAME,
078                            PROPERTY_JAVA_SPECIFICATION_VERSION,
079                            PROPERTY_JAVA_SPECIFICATION_VENDOR,
080                            PROPERTY_JAVA_SPECIFICATION_NAME,
081                            PROPERTY_JAVA_CLASS_VERSION,
082                            PROPERTY_JAVA_CLASS_PATH,
083                            PROPERTY_OS_NAME,
084                            PROPERTY_OS_ARCH,
085                            PROPERTY_OS_VERSION,
086                            CPU_ENDIANNESS,
087                            CPU_ISALIST
088                    };
089                    StringBuffer sb = new StringBuffer();
090                    for (int i = 0; i < PROPERTIES.length; i++)
091                    {
092                            try
093                            {
094                                    String result = System.getProperty(PROPERTIES[i]);
095                                    if (result != null)
096                                    {
097                                            if (sb.length() > 0)
098                                            {
099                                                    sb.append("\n");
100                                            }
101                                            sb.append(strings.get(STRING_INDEX_VALUES[i]));
102                                            sb.append('=');
103                                            sb.append(result);
104                                    }
105                            }
106                            catch (Exception e)
107                            {
108                            }
109                    }
110                    return sb.toString();
111            }
112    }