package railo.runtime.type.util;
import railo.runtime.Component;
import railo.runtime.reflection.Reflector;
import railo.runtime.text.xml.struct.XMLStruct;
import railo.runtime.type.Array;
import railo.runtime.type.Query;
import railo.runtime.type.Struct;
import railo.runtime.type.UDF;
import railo.runtime.type.dt.DateTime;
import railo.runtime.type.dt.TimeSpan;
import railo.runtime.type.scope.Scope;
public final class Type {
public static String getName(Object o) {
if(o == null) return "null";
if(o instanceof UDF) return "user defined function ("+(((UDF)o).getFunctionName())+")";
else if(o instanceof Boolean) return "Boolean";
else if(o instanceof Number) return "Number";
else if(o instanceof TimeSpan) return "TimeSpan";
else if(o instanceof Array) return "Array";
else if(o instanceof Component) return "Component "+((Component)o).getAbsName();
else if(o instanceof Scope) return ((Scope)o).getTypeAsString();
else if(o instanceof Struct) {
if(o instanceof XMLStruct)return "XML";
return "Struct";
}
else if(o instanceof Query) return "Query";
else if(o instanceof DateTime) return "DateTime";
else if(o instanceof byte[]) return "Binary";
else {
String className=o.getClass().getName();
if(className.startsWith("java.lang.")) {
return className.substring(10);
}
return className;
}
}
public static String getName(Class clazz) {
if(clazz == null) return "null";
//String name=clazz.getName();
//if(Reflector.isInstaneOf(clazz,String.class)) return "String";
if(Reflector.isInstaneOf(clazz,UDF.class)) return "user defined function";
//else if(Reflector.isInstaneOf(clazz,Boolean.class)) return "Boolean";
//else if(Reflector.isInstaneOf(clazz,Number.class)) return "Number";
else if(Reflector.isInstaneOf(clazz,Array.class)) return "Array";
else if(Reflector.isInstaneOf(clazz,Struct.class)) return "Struct";
else if(Reflector.isInstaneOf(clazz,Query.class)) return "Query";
else if(Reflector.isInstaneOf(clazz,DateTime.class)) return "DateTime";
else if(Reflector.isInstaneOf(clazz,Component.class)) return "Component";
else if(Reflector.isInstaneOf(clazz,byte[].class)) return "Binary";
else {
String className=clazz.getName();
if(className.startsWith("java.lang.")) {
return className.substring(10);
}
return className;
}
}
}