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