Project

General

Profile

Download (4.96 KB) Statistics
| Branch: | Tag: | Revision:
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.ITermService;
18
import eu.etaxonomy.cdm.api.service.IUserService;
19
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
20
import eu.etaxonomy.cdm.persistence.permission.CdmAuthority;
21
import eu.etaxonomy.taxeditor.store.CdmStore;
22

    
23
public class GrantedAuthorityLabelTextProvider {
24

    
25
	public static final Logger logger = Logger.getLogger(CdmAuthority.class);
26

    
27

    
28
	public static String getText(GrantedAuthority grantedAuthority){
29
		String labelText =  grantedAuthority.getAuthority();
30
		try {
31
		    if (!labelText.equals("ROLE_REMOTING")){
32
    			CdmAuthority cdmAuthority = CdmAuthority.fromGrantedAuthority(grantedAuthority);
33
    			String targetLabelText = getTargetText(cdmAuthority);
34
    			if(targetLabelText.length() > 0 && cdmAuthority.hasTargetUuid() ){
35
    				labelText = grantedAuthority.getAuthority().replace(cdmAuthority.getTargetUUID().toString(), targetLabelText);
36
    			}else if (targetLabelText.length() >0){
37
    			    labelText = grantedAuthority.getAuthority()+ "."+ labelText;
38
    			}
39
		    }
40
		} catch (Exception e) {
41
			/* will in most cases catch a ParsingException
42
			 * this is ignored
43
			 */
44
			if(!e.getClass().getSimpleName().equals("ParsingException")){
45
				e.printStackTrace();
46
			}
47
			// in case it is a Role
48
			labelText = grantedAuthority.getAuthority();
49
		}
50
		return labelText;
51
	}
52

    
53
 	public static String getTargetText(GrantedAuthority grantedAuthority){
54
 		if(grantedAuthority instanceof CdmAuthority){
55
 			return getCdmAuthorityTargetText((CdmAuthority)grantedAuthority);
56

    
57
 		}
58
 		return "";
59
 	}
60

    
61
	private static String getCdmAuthorityTargetText(CdmAuthority cdmAuthority) {
62

    
63
		UUID uuid = cdmAuthority.getTargetUUID();
64
		String targetText = "";
65
		String propertyString = cdmAuthority.getProperty();
66

    
67
		if(uuid != null){
68
			targetText = uuid.toString();
69
			if(cdmAuthority.getPermissionClass() != null){
70
				try{
71
					switch(cdmAuthority.getPermissionClass()) {
72
					case USER:
73
						targetText = CdmStore.getService(IUserService.class).load(uuid).getUsername();
74
						break;
75
					case DESCRIPTIONBASE:
76
						targetText = CdmStore.getService(IDescriptionService.class).load(uuid).getTitleCache();
77
						break;
78
					case DESCRIPTIONELEMENTBASE:
79
						targetText = CdmStore.getService(IDescriptionService.class).loadDescriptionElement(uuid, null).toString();
80
						break;
81
					case TAXONBASE:
82
						targetText = CdmStore.getService(ITaxonService.class).load(uuid).getTitleCache();
83
						break;
84
					case ALL:
85
						// makes not much sense here
86
						break;
87
					case TAXONNODE:
88
						TaxonNode node = CdmStore.getService(ITaxonNodeService.class).load(uuid);
89
						if(node.getClassification() != null){
90
							targetText = node.getClassification().getTitleCache() + " : ";
91
						}
92
						if(node.getTaxon() != null){
93
							targetText += node.getTaxon().getTitleCache();
94
						} else{
95
							uuid = node.getClassification().getUuid();
96
							targetText = CdmStore.getService(IClassificationService.class).load(uuid).getTitleCache();
97
						}
98
						break;
99
					case CLASSIFICATION:
100
						targetText = CdmStore.getService(IClassificationService.class).load(uuid).getTitleCache();
101
						break;
102
					case REFERENCE:
103
						targetText = CdmStore.getService(IReferenceService.class).load(uuid).getTitleCache();
104
						break;
105
					case TAXONNAME:
106
						targetText = CdmStore.getService(INameService.class).load(uuid).getTitleCache();
107
						break;
108
					case TEAMORPERSONBASE:
109
						targetText = CdmStore.getService(IAgentService.class).load(uuid).getTitleCache();
110
						break;
111
                    case REGISTRATION:
112
                        targetText = CdmStore.getService(IRegistrationService.class).load(uuid).getIdentifier();
113
                        break;
114
                    case SPECIMENOROBSERVATIONBASE:
115
                        targetText = CdmStore.getService(IOccurrenceService.class).load(uuid).getTitleCache();
116
                        break;
117
                    case FEATURE:
118
                        targetText = CdmStore.getService(ITermService.class).load(uuid).getTitleCache();
119
                        break;
120
                    default:
121
                        break;
122

    
123
					}
124
				} catch (NullPointerException e){
125
					logger.warn("Either no service found for " + cdmAuthority.getPermissionClass() + " or entitiy not found" , e);
126
				}
127
			}
128
		}else if (propertyString != null){
129
		    targetText = propertyString;
130
		}
131

    
132
		return targetText;
133
	}
134

    
135

    
136
}
(5-5/5)