Project

General

Profile

Download (5.06 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.ui.section.grantedAuthority;
2

    
3
import java.util.UUID;
4

    
5
import org.apache.logging.log4j.LogManager;import org.apache.logging.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 = LogManager.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
}
(5-5/5)