2 * @(#)Types.java $Rev: 4 $ $Release: 0.5.1 $
4 * copyright(c) 2005 kuwata-lab all rights reserved.
10 import java.util.HashMap;
11 import java.util.List;
12 import java.util.Date;
15 * utility methods for type (str, int, ...).
18 * @release $Release: 0.5.1 $
22 public static Class typeClass(String type) {
23 return (Class)__type_classes.get(type);
26 public static String typeName(String type) {
27 String name = (String)__type_names.get(type);
28 if (name == null) name = type;
32 public static final String DEFAULT_TYPE = "str";
34 public static String getDefaultType() { return DEFAULT_TYPE; }
36 private static Map __type_classes;
37 private static Map __type_names;
40 __type_classes = new HashMap();
41 __type_classes.put("str", String.class);
42 __type_classes.put("int", Integer.class);
43 __type_classes.put("float", Double.class);
44 __type_classes.put("number", Number.class);
45 __type_classes.put("text", null);
46 __type_classes.put("bool", Boolean.class);
47 __type_classes.put("map", Map.class);
48 __type_classes.put("seq", List.class);
49 __type_classes.put("timestamp", Date.class);
50 __type_classes.put("date", Date.class);
51 __type_classes.put("symbol", String.class);
52 __type_classes.put("scalar", null);
53 __type_classes.put("any", Object.class);
54 //__type_classes.put("null", null);
57 __type_names = new HashMap();
58 __type_names.put("map", "mapping");
59 __type_names.put("seq", "sequence");
60 __type_names.put("str", "string");
61 __type_names.put("int", "integer");
62 __type_names.put("bool", "boolean");
66 public static boolean isBuiltinType(String type) {
67 return __type_classes.containsKey(type);
70 public static boolean isCollectionType(String type) {
71 return type.equals("map") || type.equals("seq");
74 public static boolean isMapType(String type) {
75 return type.equals("map");
78 public static boolean isScalarType(String type) {
79 return !isCollectionType(type);
82 public static boolean isCollection(Object obj) {
83 return obj instanceof Map || obj instanceof List;
86 public static boolean isScalar(Object obj) {
87 return !isCollection(obj);
90 public static boolean isCorrectType(Object obj, String type) {
91 Class type_class = typeClass(type);
92 if (type_class != null) {
93 return type_class.isInstance(obj);
95 if (type.equals("null")) {
97 } else if (type.equals("text")) {
98 return obj instanceof String || obj instanceof Number;
99 } else if (type.equals("scalar")) {
100 return obj instanceof Number || obj instanceof String || obj instanceof Boolean || obj instanceof Date;