1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.common.lib.types;
20
21 import java.time.OffsetDateTime;
22 import java.util.stream.Stream;
23 import org.apache.commons.lang3.ClassUtils;
24
25 public enum AttrSchemaType {
26
27 String(String.class),
28 Long(Long.class),
29 Double(Double.class),
30 Boolean(Boolean.class),
31 Date(OffsetDateTime.class),
32 Enum(Enum.class),
33 Binary(byte[].class),
34 Encrypted(byte[].class);
35
36 private final Class<?> type;
37
38 AttrSchemaType(final Class<?> type) {
39 this.type = type;
40 }
41
42 public Class<?> getType() {
43 return type;
44 }
45
46 public boolean isConversionPatternNeeded() {
47 return this == AttrSchemaType.Date
48 || this == AttrSchemaType.Double
49 || this == AttrSchemaType.Long;
50 }
51
52 public static AttrSchemaType getAttrSchemaTypeByClass(final Class<?> type) {
53 return Stream.of(AttrSchemaType.values()).
54 filter(item -> type.isArray()
55 ? ClassUtils.isAssignable(type.getComponentType(), item.getType().getComponentType(), true)
56 : ClassUtils.isAssignable(type, item.getType(), true)).
57 findFirst().orElse(AttrSchemaType.String);
58 }
59 }