package ecologylab.platformspecifics;
import ecologylab.appframework.PropertiesAndDirectories;
import ecologylab.generic.ReflectionTools;
/**
* instantiation of IFundamentalPlatformSpeciics
*
* @author shenfeng
*
*/
public class FundamentalPlatformSpecifics
{
private static IFundamentalPlatformSpecifics iFundamentalPlatformSpecifics;
private static boolean dead = false;
public static void set(IFundamentalPlatformSpecifics that)
{
iFundamentalPlatformSpecifics = that;
}
public static IFundamentalPlatformSpecifics get()
{
if (dead)
throw new RuntimeException("Can't initialize FundamentalPlatformSpecifics");
if (iFundamentalPlatformSpecifics == null)
synchronized (FundamentalPlatformSpecifics.class)
{
String className = null;
if (iFundamentalPlatformSpecifics == null)
{
if (PropertiesAndDirectories.os() == PropertiesAndDirectories.ANDROID)
className = "FundamentalPlatformSpecificsAndroid";
else
className = "FundamentalPlatformSpecificsSun";
}
if (className != null)
{
Class platformSpecificsClass = null;
try
{
platformSpecificsClass = Class.forName("ecologylab.platformspecifics." + className);
}
catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
// throw new RuntimeException("Can't initialize FundamentalPlatformSpecifics" + className);
}
if (platformSpecificsClass == null)
{
dead = true;
throw new RuntimeException("Can't initialize FundamentalPlatformSpecifics");
}
else{
iFundamentalPlatformSpecifics = (IFundamentalPlatformSpecifics)ReflectionTools.getInstance(platformSpecificsClass);
}
}
}
return iFundamentalPlatformSpecifics;
}
}