View Javadoc

1   package org.cateproject.controller.interceptor;
2   
3   import java.util.UUID;
4   
5   import javax.servlet.http.HttpServletRequest;
6   import javax.servlet.http.HttpServletResponse;
7   
8   import org.cateproject.controller.user.UserPreferences;
9   import org.springframework.beans.factory.annotation.Autowired;
10  import org.springframework.web.bind.ServletRequestUtils;
11  import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
12  
13  import eu.etaxonomy.cdm.api.service.IAuditEventService;
14  import eu.etaxonomy.cdm.model.view.AuditEvent;
15  import eu.etaxonomy.cdm.model.view.context.AuditEventContextHolder;
16  
17  public class AuditEventContextHandlerInterceptor extends HandlerInterceptorAdapter {
18  	public static String AUDIT_EVENT_CONTEXT_PARAM_NAME = "view"; 
19  	private IAuditEventService auditEventService;
20  	
21  	private UserPreferences userPreferences;
22  	
23  	@Autowired
24  	public void setAuditEventService(IAuditEventService auditEventService) {
25  		this.auditEventService = auditEventService;
26  	}
27  	
28  	@Autowired
29  	public void setUserPreferences(UserPreferences userPreferences) {
30  		this.userPreferences = userPreferences;
31  	}
32  	
33  	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception{
34  		
35  		AuditEvent auditEvent = null;
36  		
37  		String auditEventUuidString = ServletRequestUtils.getStringParameter(request,AuditEventContextHandlerInterceptor.AUDIT_EVENT_CONTEXT_PARAM_NAME);
38  		
39  		if(auditEventUuidString != null) { // view param is not in the request
40  			try {
41  				  UUID auditEventUuid = UUID.fromString(auditEventUuidString);
42  				  if(auditEventUuid.equals(AuditEvent.CURRENT_VIEW.getUuid())) {
43  					  auditEvent = AuditEvent.CURRENT_VIEW; // it's static, don't fetch it!
44  				  } else {
45  					  auditEvent = auditEventService.find(auditEventUuid);
46  				  }
47  
48  			} catch(IllegalArgumentException iae) {
49  				// someone has passed an illegal uuid str, so move on. 
50  			}
51  		} 
52  		
53  		if(auditEvent == null) { // now try the session
54  			auditEvent = userPreferences.getAuditEvent();
55  		}
56  		
57  		if(auditEvent == null) { // default to CURRENT_VIEW
58  			auditEvent = AuditEvent.CURRENT_VIEW;
59  		}
60  					
61  	    AuditEventContextHolder.getContext().setAuditEvent(auditEvent);
62  		userPreferences.setAuditEvent(auditEvent);
63  	    
64  		return true;
65      }
66  }