ref #7018 adapting taxeditor to changes in cdm permission classes
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / grantedAuthority / GrantedAuthorityLabelTextProvider.java
1 package eu.etaxonomy.taxeditor.ui.section.grantedAuthority;
2
3 import java.util.UUID;
4
5 import org.apache.log4j.Logger;
6 import org.springframework.security.core.GrantedAuthority;
7
8 import eu.etaxonomy.cdm.api.service.IAgentService;
9 import eu.etaxonomy.cdm.api.service.IClassificationService;
10 import eu.etaxonomy.cdm.api.service.IDescriptionService;
11 import eu.etaxonomy.cdm.api.service.INameService;
12 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
13 import eu.etaxonomy.cdm.api.service.IReferenceService;
14 import eu.etaxonomy.cdm.api.service.IRegistrationService;
15 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
16 import eu.etaxonomy.cdm.api.service.ITaxonService;
17 import eu.etaxonomy.cdm.api.service.IUserService;
18 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
19 import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthority;
20 import eu.etaxonomy.taxeditor.store.CdmStore;
21
22 public class GrantedAuthorityLabelTextProvider {
23
24 public static final Logger logger = Logger.getLogger(CdmAuthority.class);
25
26
27 public static String getText(GrantedAuthority grantedAuthority){
28 String labelText = grantedAuthority.getAuthority();
29 try {
30 CdmAuthority cdmAuthority = CdmAuthority.fromGrantedAuthority(grantedAuthority);
31 String targetLabelText = getTargetText(cdmAuthority);
32 if(targetLabelText.length() > 0){
33 labelText = grantedAuthority.getAuthority().replace(cdmAuthority.getTargetUUID().toString(), targetLabelText);
34 }
35 } catch (Exception e) {
36 /* will in most cases catch a ParsingException
37 * this is ignored
38 */
39 if(!e.getClass().getSimpleName().equals("ParsingException")){
40 e.printStackTrace();
41 }
42 // in case it is a Role
43 labelText = grantedAuthority.getAuthority();
44 }
45 return labelText;
46 }
47
48 public static String getTargetText(GrantedAuthority grantedAuthority){
49 if(grantedAuthority instanceof CdmAuthority){
50 return getCdmAuthorityTargetText((CdmAuthority)grantedAuthority);
51
52 }
53 return "";
54 }
55
56 private static String getCdmAuthorityTargetText(CdmAuthority cdmAuthority) {
57
58 UUID uuid = cdmAuthority.getTargetUUID();
59 String targetText = "";
60
61 if(uuid != null){
62 targetText = uuid.toString();
63 if(cdmAuthority.getPermissionClass() != null){
64 try{
65 switch(cdmAuthority.getPermissionClass()) {
66 case USER:
67 targetText = CdmStore.getService(IUserService.class).load(uuid).getUsername();
68 break;
69 case DESCRIPTIONBASE:
70 targetText = CdmStore.getService(IDescriptionService.class).load(uuid).getTitleCache();
71 break;
72 case DESCRIPTIONELEMENTBASE:
73 targetText = CdmStore.getService(IDescriptionService.class).loadDescriptionElement(uuid, null).toString();
74 break;
75 case TAXONBASE:
76 targetText = CdmStore.getService(ITaxonService.class).load(uuid).getTitleCache();
77 break;
78 case ALL:
79 // makes not much sense here
80 break;
81 case TAXONNODE:
82 TaxonNode node = CdmStore.getService(ITaxonNodeService.class).load(uuid);
83 if(node.getClassification() != null){
84 targetText = node.getClassification().getTitleCache() + " : ";
85 }
86 if(node.getTaxon() != null){
87 targetText += node.getTaxon().getTitleCache();
88 } else{
89 uuid = node.getClassification().getUuid();
90 targetText = CdmStore.getService(IClassificationService.class).load(uuid).getTitleCache();
91 }
92 break;
93 case CLASSIFICATION:
94 targetText = CdmStore.getService(IClassificationService.class).load(uuid).getTitleCache();
95 break;
96 case REFERENCE:
97 targetText = CdmStore.getService(IReferenceService.class).load(uuid).getTitleCache();
98 break;
99 case TAXONNAME:
100 targetText = CdmStore.getService(INameService.class).load(uuid).getTitleCache();
101 break;
102 case TEAMORPERSONBASE:
103 targetText = CdmStore.getService(IAgentService.class).load(uuid).getTitleCache();
104 break;
105 case REGISTRATION:
106 targetText = CdmStore.getService(IRegistrationService.class).load(uuid).getIdentifier();
107 break;
108 case SPECIMENOROBSERVATIONBASE:
109 targetText = CdmStore.getService(IOccurrenceService.class).load(uuid).getTitleCache();
110 break;
111 default:
112 break;
113
114 }
115 } catch (NullPointerException e){
116 logger.warn("Either no service found for " + cdmAuthority.getPermissionClass() + " or entitiy not found" , e);
117 }
118 }
119 }
120
121 return targetText;
122 }
123
124
125 }