Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
EntityUtils |
|
| 8.5;8,5 |
1 | 0 | /** 2007, Digitalis Informatica. All rights reserved. |
2 | * | |
3 | * Distribuicao e Gestao de Informatica, Lda. | |
4 | * Estrada de Paco de Arcos num.9 - Piso -1 | |
5 | * 2780-666 Paco de Arcos | |
6 | * Telefone: (351) 21 4408990 | |
7 | * Fax: (351) 21 4408999 | |
8 | * http://www.digitalis.pt | |
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 | * A set of entity-inspection utilities. | |
27 | * | |
28 | * @author Rodrigo Gonçalves <a href="mailto:rgoncalves@digitalis.pt">rgoncalves@digitalis.pt</a><br/> | |
29 | * @created 2007/11/07 | |
30 | */ | |
31 | 0 | final public class EntityUtils { |
32 | ||
33 | /** | |
34 | * Returns the type of the entity type of the passed argument. | |
35 | * | |
36 | * @param clazz | |
37 | * the DEM object | |
38 | * @return the entity type of the class passed as argument | |
39 | * @throws ResourceNotFoundException | |
40 | * if annotations can't be read | |
41 | */ | |
42 | static public Entity getEntityType(ClassHolder clazz) throws ResourceNotFoundException { | |
43 | 0 | if (clazz.containsAnnotation(ProviderDefinition.class.getCanonicalName())) { |
44 | 0 | return Entity.PROVIDER; |
45 | 0 | } else if (clazz.containsAnnotation(ApplicationDefinition.class.getCanonicalName())) { |
46 | 0 | return Entity.APPLICATION; |
47 | 0 | } else if (clazz.containsAnnotation(ServiceDefinition.class.getCanonicalName())) { |
48 | 0 | return Entity.SERVICE; |
49 | 0 | } else if (clazz.containsAnnotation(StageDefinition.class.getCanonicalName())) { |
50 | 0 | return Entity.STAGE; |
51 | } | |
52 | ||
53 | 0 | return null; |
54 | } | |
55 | ||
56 | /** | |
57 | * Returns the ID of a given entity. | |
58 | * | |
59 | * @param clazz | |
60 | * the DEM object | |
61 | * @return the id of the supplied entity | |
62 | * @throws ResourceNotFoundException | |
63 | * if the annotations can't be read | |
64 | */ | |
65 | static public String getEntityID(ClassHolder clazz) throws ResourceNotFoundException { | |
66 | 0 | String entityID = null; |
67 | ||
68 | 0 | AnnotationHolder annotation = null; |
69 | ||
70 | 0 | if (clazz.containsAnnotation(ProviderDefinition.class.getCanonicalName())) |
71 | 0 | annotation = clazz.getAnnotations().get(ProviderDefinition.class.getCanonicalName()); |
72 | ||
73 | 0 | else if (clazz.containsAnnotation(ApplicationDefinition.class.getCanonicalName())) |
74 | 0 | annotation = clazz.getAnnotations().get(ApplicationDefinition.class.getCanonicalName()); |
75 | ||
76 | 0 | else if (clazz.containsAnnotation(ServiceDefinition.class.getCanonicalName())) |
77 | 0 | annotation = clazz.getAnnotations().get(ServiceDefinition.class.getCanonicalName()); |
78 | ||
79 | 0 | else if (clazz.containsAnnotation(StageDefinition.class.getCanonicalName())) |
80 | 0 | annotation = clazz.getAnnotations().get(StageDefinition.class.getCanonicalName()); |
81 | ||
82 | 0 | if (annotation == null) |
83 | 0 | return null; |
84 | ||
85 | else { | |
86 | 0 | entityID = annotation.getMembers().get(AnnotationMemberTags.ENTITY_DEFINITION_ID).toString(); |
87 | ||
88 | // Check if id generation is needed... | |
89 | 0 | if (AnnotationTags.GENERATE_ID.equals(entityID)) |
90 | 0 | entityID = CodeGenUtils.generateID(clazz.getName()); |
91 | ||
92 | 0 | return entityID.toLowerCase(); |
93 | } | |
94 | } | |
95 | } |