1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.themis.xanalysis.solver.reflect;
18
19 import com.github.javaparser.ast.NodeList;
20 import com.github.javaparser.ast.body.EnumConstantDeclaration;
21 import com.github.javaparser.ast.body.EnumDeclaration;
22 import com.github.javaparser.ast.expr.SimpleName;
23 import io.github.tonywasher.joceanus.oceanus.base.OceanusException;
24
25 import java.util.Optional;
26
27
28
29
30 public class ThemisXAnalysisReflectEnum
31 extends EnumDeclaration {
32
33
34
35 private final Class<?> theClass;
36
37
38
39
40 private final String theFullName;
41
42
43
44
45
46
47
48 ThemisXAnalysisReflectEnum(final Class<?> pClazz) throws OceanusException {
49
50 theClass = pClazz;
51
52
53 theFullName = theClass.getCanonicalName();
54
55
56 setName(new SimpleName(theClass.getSimpleName()));
57
58
59 setModifiers(ThemisXAnalysisReflectUtils.buildModifiers(theClass));
60
61
62 setImplementedTypes(ThemisXAnalysisReflectUtils.buildImplements(theClass));
63
64
65 final NodeList<EnumConstantDeclaration> myEnums = new NodeList<>();
66 for (Enum<?> myValue : (Enum<?>[]) theClass.getEnumConstants()) {
67 final EnumConstantDeclaration myEnum = new EnumConstantDeclaration(myValue.name());
68 myEnums.add(myEnum);
69 }
70 setEntries(myEnums);
71
72
73 setMembers(ThemisXAnalysisReflectMemberUtils.buildMembers(theClass));
74 }
75
76 @Override
77 public Optional<String> getFullyQualifiedName() {
78 return Optional.of(theFullName);
79 }
80
81 @Override
82 public boolean isTopLevelType() {
83 return !theClass.isMemberClass();
84 }
85 }