package org.itsnat.droid.impl.util;
import android.os.Build;
import org.itsnat.droid.ItsNatDroidException;
import java.util.HashMap;
import java.util.Map;
/**
* Created by jmarranz on 15/09/14.
*/
public class MiscUtil
{
// http://developer.android.com/reference/android/os/Build.VERSION_CODES.html
//public static final int ICE_CREAM_SANDWICH_MR1 = Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1; // 15 (4.0.3)
public static final int JELLY_BEAN = Build.VERSION_CODES.JELLY_BEAN; // 16 (4.1)
// KitKat 19 (4.4)
// KitKat Wear 20 (4.4)
public static final int LOLLIPOP = 21; // 21 == Build.VERSION_CODES.LOLLIPOP (5.0.1)
public static final int LOLLIPOP_MR1 = 22; // 22 == Build.VERSION_CODES.LOLLIPOP_MR1 (5.1.1)
public static final int MARSHMALLOW = 23; // 23 == Build.VERSION_CODES.M (6.0)
private static final Map<String,Class> mapClasses = new HashMap<String,Class>();
public static Class<?> resolveClass(String className)
{
// El propio Class.forName tiene obviamente un caché de clases ya cargadas (ojo de t_odo el espacio de clases Android),
// sin embargo con nuestro Map se consiguen
// mayores velocidades en clases ya cargadas si el map no se llena de muchas clases (menos de 50 por ejemplo)
// Por supuesto NO utilizar multihilo
Class<?> clasz = mapClasses.get(className);
if (clasz != null)
return clasz;
try { clasz = Class.forName(className); }
catch (ClassNotFoundException ex) { throw new ItsNatDroidException(ex); }
mapClasses.put(className,clasz);
return clasz;
}
public static boolean equalsNullAllowed(Object value1, Object value2)
{
if (value1 != null)
return value1.equals(value2);
else if (value2 != null)
return false;
else
return true; // Los dos son null
}
public static void waitPlease(long lapse)
{
try { Thread.sleep(lapse); }
catch (InterruptedException ex) { throw new ItsNatDroidException(ex); }
}
public static ItsNatDroidException internalError()
{
return new ItsNatDroidException("INTERNAL ERROR");
}
}