Project

General

Profile

Download (4.62 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.hibernate.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
			CdmAuthority cdmAuthority = CdmAuthority.fromGrantedAuthority(grantedAuthority);
32
			String targetLabelText = getTargetText(cdmAuthority);
33
			if(targetLabelText.length() > 0){
34
				labelText = grantedAuthority.getAuthority().replace(cdmAuthority.getTargetUUID().toString(), targetLabelText);
35
			}
36
		} catch (Exception e) {
37
			/* will in most cases catch a ParsingException
38
			 * this is ignored
39
			 */
40
			if(!e.getClass().getSimpleName().equals("ParsingException")){
41
				e.printStackTrace();
42
			}
43
			// in case it is a Role
44
			labelText = grantedAuthority.getAuthority();
45
		}
46
		return labelText;
47
	}
48

    
49
 	public static String getTargetText(GrantedAuthority grantedAuthority){
50
 		if(grantedAuthority instanceof CdmAuthority){
51
 			return getCdmAuthorityTargetText((CdmAuthority)grantedAuthority);
52

    
53
 		}
54
 		return "";
55
 	}
56

    
57
	private static String getCdmAuthorityTargetText(CdmAuthority cdmAuthority) {
58

    
59
		UUID uuid = cdmAuthority.getTargetUUID();
60
		String targetText = "";
61

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

    
118
					}
119
				} catch (NullPointerException e){
120
					logger.warn("Either no service found for " + cdmAuthority.getPermissionClass() + " or entitiy not found" , e);
121
				}
122
			}
123
		}
124

    
125
		return targetText;
126
	}
127

    
128

    
129
}
(5-5/5)