/*******************************************************************************
* Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.model.util;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
import java.io.IOException;
import java.util.*;
import org.jboss.tools.common.model.plugin.ModelPlugin;
public class OSHelper {
static Properties env = null;
public OSHelper() {
}
private static java.util.Properties getEnvironment() {
Process p = null;
java.util.Properties envVars = new java.util.Properties();
Runtime r = Runtime.getRuntime();
String OS = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$
try {
// Get the Windows 95 environment variables
if (OS.indexOf("windows 9") > -1) { //$NON-NLS-1$
p = r.exec( "command.com /c set" ); //$NON-NLS-1$
}
// Get the Windows NT environment variables
else if (OS.indexOf("nt") > -1) { //$NON-NLS-1$
p = r.exec( "cmd.exe /c set" ); //$NON-NLS-1$
}
// Get the Windows 2000 environment variables
else if (OS.indexOf("2000") > -1) { //$NON-NLS-1$
p = r.exec( "cmd.exe /c set" ); //$NON-NLS-1$
}
// Get the Windows XP environment variables
else if (OS.indexOf("xp") > -1) { //$NON-NLS-1$
p = r.exec( "cmd.exe /c set" ); //$NON-NLS-1$
}
// Get the unix environment variables
else if (OS.indexOf("linux") > -1) { //$NON-NLS-1$
p = r.exec( "env" ); //$NON-NLS-1$
}
// Get the unix environment variables
else if (OS.indexOf("unix") > -1) { //$NON-NLS-1$
p = r.exec( "/bin/env" ); //$NON-NLS-1$
} // Get the unix environment variables
else if (OS.indexOf("sunos") > -1) { //$NON-NLS-1$
p = r.exec( "/bin/env" ); //$NON-NLS-1$
} else {
if(ModelPlugin.isDebugEnabled()) {
ModelPlugin.getPluginLog().logInfo("OS not known: " + OS); //$NON-NLS-1$
}
}
} catch (java.io.IOException e) {
if(ModelPlugin.isDebugEnabled()) {
ModelPlugin.getPluginLog().logError(e);
}
}
java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
String line;
try {
int idx;
String key, value;
while( (line = br.readLine()) != null ) {
idx = line.indexOf('=');
// if there is no equals sign on the line skip to the net line
// this occurs when there are newline characters in the environment variable
//
if (idx < 0) continue;
key = line.substring( 0, idx );
value = line.substring( idx+1 );
envVars.setProperty( key.toUpperCase(), value );
}
} catch (java.io.IOException e) {
ModelPlugin.getPluginLog().logError(e);
} finally {
if(br!=null) {
try {
br.close();
} catch (IOException e) {
// ignore
}
}
}
return envVars;
}
public static java.util.Properties get() {
if (env == null) env = getEnvironment();
return (java.util.Properties)env.clone();
}
public static String getProperty(String key) {
if (env == null) env = getEnvironment();
return env.getProperty(key);
}
public static String getProperty(String key, String defaultValue) {
if (env == null) env = getEnvironment();
String val = env.getProperty(key);
return (val == null) ? defaultValue : val;
}
}