1
2
3
4
5
6
7
8
9
10
11 package pt.digitalis.dif.codegen.util;
12
13 import pt.digitalis.dif.dem.Entity;
14 import pt.digitalis.dif.dem.annotations.AnnotationMemberTags;
15 import pt.digitalis.dif.dem.annotations.AnnotationTags;
16 import pt.digitalis.dif.dem.annotations.entities.ApplicationDefinition;
17 import pt.digitalis.dif.dem.annotations.entities.ProviderDefinition;
18 import pt.digitalis.dif.dem.annotations.entities.ServiceDefinition;
19 import pt.digitalis.dif.dem.annotations.entities.StageDefinition;
20 import pt.digitalis.utils.CodeGenUtils;
21 import pt.digitalis.utils.bytecode.holders.AnnotationHolder;
22 import pt.digitalis.utils.bytecode.holders.ClassHolder;
23 import pt.digitalis.utils.inspection.exception.ResourceNotFoundException;
24
25
26
27
28
29
30
31 final public class EntityUtils {
32
33
34
35
36
37
38
39
40
41
42 static public Entity getEntityType(ClassHolder clazz) throws ResourceNotFoundException {
43 if (clazz.containsAnnotation(ProviderDefinition.class.getCanonicalName())) {
44 return Entity.PROVIDER;
45 } else if (clazz.containsAnnotation(ApplicationDefinition.class.getCanonicalName())) {
46 return Entity.APPLICATION;
47 } else if (clazz.containsAnnotation(ServiceDefinition.class.getCanonicalName())) {
48 return Entity.SERVICE;
49 } else if (clazz.containsAnnotation(StageDefinition.class.getCanonicalName())) {
50 return Entity.STAGE;
51 }
52
53 return null;
54 }
55
56
57
58
59
60
61
62
63
64
65 static public String getEntityID(ClassHolder clazz) throws ResourceNotFoundException {
66 String entityID = null;
67
68 AnnotationHolder annotation = null;
69
70 if (clazz.containsAnnotation(ProviderDefinition.class.getCanonicalName()))
71 annotation = clazz.getAnnotations().get(ProviderDefinition.class.getCanonicalName());
72
73 else if (clazz.containsAnnotation(ApplicationDefinition.class.getCanonicalName()))
74 annotation = clazz.getAnnotations().get(ApplicationDefinition.class.getCanonicalName());
75
76 else if (clazz.containsAnnotation(ServiceDefinition.class.getCanonicalName()))
77 annotation = clazz.getAnnotations().get(ServiceDefinition.class.getCanonicalName());
78
79 else if (clazz.containsAnnotation(StageDefinition.class.getCanonicalName()))
80 annotation = clazz.getAnnotations().get(StageDefinition.class.getCanonicalName());
81
82 if (annotation == null)
83 return null;
84
85 else {
86 entityID = annotation.getMembers().get(AnnotationMemberTags.ENTITY_DEFINITION_ID).toString();
87
88
89 if (AnnotationTags.GENERATE_ID.equals(entityID))
90 entityID = CodeGenUtils.generateID(clazz.getName());
91
92 return entityID.toLowerCase();
93 }
94 }
95 }