1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.waarp.common.xml;
21
22 import java.sql.Date;
23 import java.sql.Timestamp;
24
25
26
27
28 public enum XmlType {
29 BOOLEAN(Boolean.TYPE), INTEGER(Integer.TYPE), FLOAT(Float.TYPE),
30 CHARACTER(Character.TYPE), BYTE(Byte.TYPE), LONG(Long.TYPE),
31 DOUBLE(Double.TYPE), SHORT(Short.TYPE), SQLDATE(Date.class),
32 TIMESTAMP(Timestamp.class), STRING(String.class), XVAL(XmlValue.class),
33 EMPTY(XmlType.class);
34
35 final Class<?> classType;
36
37
38
39
40 XmlType(final Class<?> classType) {
41 this.classType = classType;
42 }
43
44
45
46
47 public Class<?> getClassType() {
48 return classType;
49 }
50
51
52
53
54
55
56 public final boolean isNativelyCompatible(final Object value) {
57 final Class<?> type = value.getClass();
58 switch (this) {
59 case BOOLEAN:
60 return type.equals(Boolean.TYPE) ||
61 Boolean.class.isAssignableFrom(type);
62 case INTEGER:
63 return type.equals(Integer.TYPE) ||
64 Integer.class.isAssignableFrom(type);
65 case FLOAT:
66 return type.equals(Float.TYPE) || Float.class.isAssignableFrom(type);
67 case CHARACTER:
68 return type.equals(Character.TYPE) ||
69 Character.class.isAssignableFrom(type);
70 case BYTE:
71 return type.equals(Byte.TYPE) || Byte.class.isAssignableFrom(type);
72 case LONG:
73 return type.equals(Long.TYPE) || Long.class.isAssignableFrom(type);
74 case DOUBLE:
75 return type.equals(Double.TYPE) || Double.class.isAssignableFrom(type);
76 case SHORT:
77 return type.equals(Short.TYPE) || Short.class.isAssignableFrom(type);
78 case SQLDATE:
79 return Date.class.isAssignableFrom(type);
80 case TIMESTAMP:
81 return Timestamp.class.isAssignableFrom(type);
82 case STRING:
83 return String.class.isAssignableFrom(type);
84 case XVAL:
85 return type.isArray() &&
86 type.getName().contains(XmlValue.class.getName());
87 case EMPTY:
88 default:
89 return false;
90 }
91 }
92
93 public final boolean isBoolean() {
94 return this == BOOLEAN;
95 }
96
97 public final boolean isInteger() {
98 return this == INTEGER;
99 }
100
101 public final boolean isFloat() {
102 return this == FLOAT;
103 }
104
105 public final boolean isCharacter() {
106 return this == CHARACTER;
107 }
108
109 public final boolean isByte() {
110 return this == BYTE;
111 }
112
113 public boolean isLong() {
114 return this == LONG;
115 }
116
117 public final boolean isDouble() {
118 return this == DOUBLE;
119 }
120
121 public final boolean isShort() {
122 return this == SHORT;
123 }
124
125 public final boolean isDate() {
126 return this == SQLDATE;
127 }
128
129 public final boolean isTimestamp() {
130 return this == TIMESTAMP;
131 }
132
133 public final boolean isString() {
134 return this == STRING;
135 }
136
137 public final boolean isXmlValue() {
138 return this == XVAL;
139 }
140
141 public final boolean isEmpty() {
142 return this == EMPTY;
143 }
144 }