jdk/src/share/classes/com/sun/servicetag/SystemEnvironment.java
changeset 16802 ea3325542aa8
parent 16801 e2de240b437f
parent 16575 d7ad0dfaa411
child 16803 3bdc22a32b0e
equal deleted inserted replaced
16801:e2de240b437f 16802:ea3325542aa8
     1 /*
       
     2  * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.  Oracle designates this
       
     8  * particular file as subject to the "Classpath" exception as provided
       
     9  * by Oracle in the LICENSE file that accompanied this code.
       
    10  *
       
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    14  * version 2 for more details (a copy is included in the LICENSE file that
       
    15  * accompanied this code).
       
    16  *
       
    17  * You should have received a copy of the GNU General Public License version
       
    18  * 2 along with this work; if not, write to the Free Software Foundation,
       
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    20  *
       
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    22  * or visit www.oracle.com if you need additional information or have any
       
    23  * questions.
       
    24  */
       
    25 
       
    26 package com.sun.servicetag;
       
    27 
       
    28 // This class is a copy of the com.sun.scn.servicetags.SystemEnvironment
       
    29 // class from the Sun Connection source.
       
    30 //
       
    31 // The Service Tags team maintains the latest version of the implementation
       
    32 // for system environment data collection.  JDK will include a copy of
       
    33 // the most recent released version for a JDK release. We rename
       
    34 // the package to com.sun.servicetag so that the Sun Connection
       
    35 // product always uses the latest version from the com.sun.scn.servicetags
       
    36 // package. JDK and users of the com.sun.servicetag API
       
    37 // (e.g. NetBeans and SunStudio) will use the version in JDK.
       
    38 
       
    39 import java.io.*;
       
    40 import java.net.InetAddress;
       
    41 import java.net.UnknownHostException;
       
    42 
       
    43 /**
       
    44  * SystemEnvironment class collects the environment data with the
       
    45  * best effort from the underlying platform.
       
    46  */
       
    47 public class SystemEnvironment {
       
    48     private String hostname;
       
    49     private String hostId;
       
    50     private String osName;
       
    51     private String osVersion;
       
    52     private String osArchitecture;
       
    53     private String systemModel;
       
    54     private String systemManufacturer;
       
    55     private String cpuManufacturer;
       
    56     private String serialNumber;
       
    57     private static SystemEnvironment sysEnv = null;
       
    58 
       
    59     public static synchronized SystemEnvironment getSystemEnvironment() {
       
    60         if (sysEnv == null) {
       
    61             String os = System.getProperty("os.name");
       
    62             if (os.equals("SunOS")) {
       
    63                 sysEnv = new SolarisSystemEnvironment();
       
    64             } else if (os.equals("Linux")) {
       
    65                 sysEnv = new LinuxSystemEnvironment();
       
    66             } else if (os.startsWith("Windows")) {
       
    67                 sysEnv = new WindowsSystemEnvironment();
       
    68             } else {
       
    69                 sysEnv = new SystemEnvironment();
       
    70             }
       
    71         }
       
    72         return sysEnv;
       
    73     }
       
    74 
       
    75     // package-private
       
    76     SystemEnvironment() {
       
    77         try {
       
    78             this.hostname = InetAddress.getLocalHost().getHostName();
       
    79         } catch (UnknownHostException ex) {
       
    80             this.hostname = "Unknown host";
       
    81         }
       
    82         this.hostId = "";
       
    83         this.osName = System.getProperty("os.name");
       
    84         this.osVersion = System.getProperty("os.version");
       
    85         this.osArchitecture = System.getProperty("os.arch");
       
    86         this.systemModel = "";
       
    87         this.systemManufacturer = "";
       
    88         this.cpuManufacturer = "";
       
    89         this.serialNumber = "";
       
    90     }
       
    91 
       
    92 
       
    93     /**
       
    94      * Sets the hostname.
       
    95      * @param hostname The hostname to set.
       
    96      */
       
    97     public void setHostname(String hostname) {
       
    98         this.hostname = hostname;
       
    99     }
       
   100 
       
   101     /**
       
   102      * Sets the OS name.
       
   103      * @param osName The osName to set.
       
   104      */
       
   105     public void setOsName(String osName) {
       
   106         this.osName = osName;
       
   107     }
       
   108 
       
   109     /**
       
   110      * Sets the OS version.
       
   111      * @param osVersion The osVersion to set.
       
   112      */
       
   113     public void setOsVersion(String osVersion) {
       
   114         this.osVersion = osVersion;
       
   115     }
       
   116 
       
   117     /**
       
   118      * Sets the OS architecture.
       
   119      * @param osArchitecture The osArchitecture to set.
       
   120      */
       
   121     public void setOsArchitecture(String osArchitecture) {
       
   122         this.osArchitecture = osArchitecture;
       
   123     }
       
   124 
       
   125     /**
       
   126      * Sets the system model.
       
   127      * @param systemModel The systemModel to set.
       
   128      */
       
   129     public void setSystemModel(String systemModel) {
       
   130         this.systemModel = systemModel;
       
   131     }
       
   132 
       
   133     /**
       
   134      * Sets the system manufacturer.
       
   135      * @param systemManufacturer The systemManufacturer to set.
       
   136      */
       
   137     public void setSystemManufacturer(String systemManufacturer) {
       
   138         this.systemManufacturer = systemManufacturer;
       
   139     }
       
   140 
       
   141     /**
       
   142      * Sets the cpu manufacturer.
       
   143      * @param cpuManufacturer The cpuManufacturer to set.
       
   144      */
       
   145     public void setCpuManufacturer(String cpuManufacturer) {
       
   146         this.cpuManufacturer = cpuManufacturer;
       
   147     }
       
   148 
       
   149     /**
       
   150      * Sets the serial number.
       
   151      * @param serialNumber The serialNumber to set.
       
   152      */
       
   153     public void setSerialNumber(String serialNumber) {
       
   154         this.serialNumber = serialNumber;
       
   155     }
       
   156 
       
   157     /**
       
   158      * Sets the hostid.  Truncates to a max length of 16 chars.
       
   159      * @param hostId The hostid to set.
       
   160      */
       
   161     public void setHostId(String hostId) {
       
   162         if (hostId == null || hostId.equals("null")) {
       
   163             hostId = "";
       
   164         }
       
   165         if (hostId.length() > 16) {
       
   166             hostId = hostId.substring(0,16);
       
   167         }
       
   168         this.hostId = hostId;
       
   169     }
       
   170 
       
   171     /**
       
   172      * Returns the hostname.
       
   173      * @return The hostname.
       
   174      */
       
   175     public String getHostname() {
       
   176         return hostname;
       
   177     }
       
   178 
       
   179     /**
       
   180      * Returns the osName.
       
   181      * @return The osName.
       
   182      */
       
   183     public String getOsName() {
       
   184         return osName;
       
   185     }
       
   186 
       
   187     /**
       
   188      * Returns the osVersion.
       
   189      * @return The osVersion.
       
   190      */
       
   191     public String getOsVersion() {
       
   192         return osVersion;
       
   193     }
       
   194 
       
   195     /**
       
   196      * Returns the osArchitecture.
       
   197      * @return The osArchitecture.
       
   198      */
       
   199     public String getOsArchitecture() {
       
   200         return osArchitecture;
       
   201     }
       
   202 
       
   203     /**
       
   204      * Returns the systemModel.
       
   205      * @return The systemModel.
       
   206      */
       
   207     public String getSystemModel() {
       
   208         return systemModel;
       
   209     }
       
   210 
       
   211     /**
       
   212      * Returns the systemManufacturer.
       
   213      * @return The systemManufacturer.
       
   214      */
       
   215     public String getSystemManufacturer() {
       
   216         return systemManufacturer;
       
   217     }
       
   218 
       
   219     /**
       
   220      * Returns the serialNumber.
       
   221      * @return The serialNumber.
       
   222      */
       
   223     public String getSerialNumber() {
       
   224         return serialNumber;
       
   225     }
       
   226 
       
   227     /**
       
   228      * Returns the hostId.
       
   229      * @return The hostId.
       
   230      */
       
   231     public String getHostId() {
       
   232         return hostId;
       
   233     }
       
   234 
       
   235     /**
       
   236      * Returns the cpuManufacturer.
       
   237      * @return The cpuManufacturer.
       
   238      */
       
   239     public String getCpuManufacturer() {
       
   240         return cpuManufacturer;
       
   241     }
       
   242 
       
   243     protected String getCommandOutput(String... command) {
       
   244         StringBuilder sb = new StringBuilder();
       
   245         BufferedReader br = null;
       
   246         Process p = null;
       
   247         try {
       
   248             ProcessBuilder pb = new ProcessBuilder(command);
       
   249             p = pb.start();
       
   250             p.waitFor();
       
   251 
       
   252             if (p.exitValue() == 0) {
       
   253                 br = new BufferedReader(new InputStreamReader(p.getInputStream()));
       
   254                 String line = null;
       
   255                 while ((line = br.readLine()) != null) {
       
   256                     line = line.trim();
       
   257                     if (line.length() > 0) {
       
   258                         if (sb.length() > 0) {
       
   259                             sb.append("\n");
       
   260                         }
       
   261                         sb.append(line);
       
   262                     }
       
   263                 }
       
   264             }
       
   265             return sb.toString();
       
   266         } catch (InterruptedException ie) {
       
   267             // in case the command hangs
       
   268             if (p != null) {
       
   269                 p.destroy();
       
   270             }
       
   271             return "";
       
   272         } catch (Exception e) {
       
   273             // ignore exception
       
   274             return "";
       
   275         } finally {
       
   276             if (p != null) {
       
   277                 try {
       
   278                     p.getErrorStream().close();
       
   279                 } catch (IOException e) {
       
   280                     // ignore
       
   281                 }
       
   282                 try {
       
   283                     p.getInputStream().close();
       
   284                 } catch (IOException e) {
       
   285                     // ignore
       
   286                 }
       
   287                 try {
       
   288                     p.getOutputStream().close();
       
   289                 } catch (IOException e) {
       
   290                     // ignore
       
   291                 }
       
   292                 p = null;
       
   293             }
       
   294             if (br != null) {
       
   295                 try {
       
   296                     br.close();
       
   297                 } catch (IOException e) {
       
   298                     // ignore
       
   299                 }
       
   300             }
       
   301         }
       
   302     }
       
   303 
       
   304     protected String getFileContent(String filename) {
       
   305         File f = new File(filename);
       
   306         if (!f.exists()) {
       
   307             return "";
       
   308         }
       
   309 
       
   310         StringBuilder sb = new StringBuilder();
       
   311         BufferedReader br = null;
       
   312         try {
       
   313             br = new BufferedReader(new FileReader(f));
       
   314             String line = null;
       
   315             while ((line = br.readLine()) != null) {
       
   316                 line = line.trim();
       
   317                 if (line.length() > 0) {
       
   318                     if (sb.length() > 0) {
       
   319                         sb.append("\n");
       
   320                     }
       
   321                     sb.append(line);
       
   322                 }
       
   323             }
       
   324             return sb.toString();
       
   325         } catch (Exception e) {
       
   326             // ignore exception
       
   327             return "";
       
   328         } finally {
       
   329             if (br != null) {
       
   330                 try {
       
   331                     br.close();
       
   332                 } catch (IOException e) {
       
   333                     // ignore
       
   334                 }
       
   335             }
       
   336         }
       
   337     }
       
   338 }