EnvironmentTools.java

package eu.javaexperience.environment;

import java.io.File;
import java.lang.management.ManagementFactory;
import java.net.InetAddress;
import java.net.UnknownHostException;

import eu.javaexperience.text.StringTools;

public class EnvironmentTools
{
	public static String getHostname()
	{
		try
		{
			return InetAddress.getLocalHost().getHostName();
		}
		catch (UnknownHostException e)
		{
			return "localhost";
		}
	}
	
	//TODO that's a platform specific stuff test on other operation system eg.: on windows
	public static int getCurrentProcessPid()
	{
		//this assumes that we are under linux
		try
		{
			String pp = new File("/proc/self").getCanonicalFile().toString();
			pp = StringTools.getSubstringAfterLastString(pp, "/", null);
			if(null != pp)
			{
				return Integer.valueOf(pp);
			}
		}
		catch(Exception e)
		{}
		
		try
		{
			String jvmName = ManagementFactory.getRuntimeMXBean().getName();
			String spid = StringTools.getSubstringBeforeFirstString(jvmName, "@", null);
			
			if(null != spid)
			{
				Integer.valueOf(spid);
			}
		}
		catch(Exception e){}
		
		throw new RuntimeException("Can't determine current process pid");
	}
	
	public static boolean isJvmInDebugMode()
	{
		return ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
	}

	public static String getOperationSystemType()
	{
		return System.getProperty("os.name");
	}
}