1 package eu
.etaxonomy
.taxeditor
.ui
.section
.grantedAuthority
;
5 import org
.apache
.log4j
.Logger
;
6 import org
.springframework
.security
.core
.GrantedAuthority
;
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
;
24 public class GrantedAuthorityLabelTextProvider
{
26 public static final Logger logger
= Logger
.getLogger(CdmAuthority
.class);
29 public static String
getText(GrantedAuthority grantedAuthority
){
30 String labelText
= grantedAuthority
.getAuthority();
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
;
41 } catch (Exception e
) {
42 /* will in most cases catch a ParsingException
45 if(!e
.getClass().getSimpleName().equals("ParsingException")){
48 // in case it is a Role
49 labelText
= grantedAuthority
.getAuthority();
54 public static String
getTargetText(GrantedAuthority grantedAuthority
){
55 if(grantedAuthority
instanceof CdmAuthority
){
56 return getCdmAuthorityTargetText((CdmAuthority
)grantedAuthority
);
62 private static String
getCdmAuthorityTargetText(CdmAuthority cdmAuthority
) {
64 UUID uuid
= cdmAuthority
.getTargetUUID();
65 String targetText
= "";
66 String propertyString
= cdmAuthority
.getProperty();
69 targetText
= uuid
.toString();
70 if(cdmAuthority
.getPermissionClass() != null){
72 switch(cdmAuthority
.getPermissionClass()) {
74 targetText
= CdmStore
.getService(IUserService
.class).load(uuid
).getUsername();
77 targetText
= CdmStore
.getService(IDescriptionService
.class).load(uuid
).getTitleCache();
79 case DESCRIPTIONELEMENTBASE
:
80 targetText
= CdmStore
.getService(IDescriptionElementService
.class).load(uuid
, null).toString();
83 targetText
= CdmStore
.getService(ITaxonService
.class).load(uuid
).getTitleCache();
86 // makes not much sense here
89 TaxonNode node
= CdmStore
.getService(ITaxonNodeService
.class).load(uuid
);
90 if(node
.getClassification() != null){
91 targetText
= node
.getClassification().getTitleCache() + " : ";
93 if(node
.getTaxon() != null){
94 targetText
+= node
.getTaxon().getTitleCache();
96 uuid
= node
.getClassification().getUuid();
97 targetText
= CdmStore
.getService(IClassificationService
.class).load(uuid
).getTitleCache();
101 targetText
= CdmStore
.getService(IClassificationService
.class).load(uuid
).getTitleCache();
104 targetText
= CdmStore
.getService(IReferenceService
.class).load(uuid
).getTitleCache();
107 targetText
= CdmStore
.getService(INameService
.class).load(uuid
).getTitleCache();
109 case TEAMORPERSONBASE
:
110 targetText
= CdmStore
.getService(IAgentService
.class).load(uuid
).getTitleCache();
113 targetText
= CdmStore
.getService(IRegistrationService
.class).load(uuid
).getIdentifier();
115 case SPECIMENOROBSERVATIONBASE
:
116 targetText
= CdmStore
.getService(IOccurrenceService
.class).load(uuid
).getTitleCache();
119 targetText
= CdmStore
.getService(ITermService
.class).load(uuid
).getTitleCache();
125 } catch (NullPointerException e
){
126 logger
.warn("Either no service found for " + cdmAuthority
.getPermissionClass() + " or entitiy not found" , e
);
129 }else if (propertyString
!= null){
130 targetText
= propertyString
;