Java tutorial
/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * https://github.com/CILEA/dspace-cris/wiki/License */ package org.dspace.app.webui.cris.controller; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.dspace.app.cris.model.ResearcherPage; import org.dspace.app.cris.service.ApplicationService; import org.dspace.app.cris.util.ResearcherPageUtils; import org.dspace.app.webui.util.UIUtil; import org.dspace.authorize.AuthorizeManager; import org.dspace.core.Context; import org.dspace.eperson.EPerson; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.ParameterizableViewController; /** * Redirect the user to his "home page" on a role basis * @author cilea * */ public class MyRPController extends ParameterizableViewController { /** * the applicationService for query the RP db, injected by Spring IoC */ private ApplicationService applicationService; public void setApplicationService(ApplicationService applicationService) { this.applicationService = applicationService; } @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { Context context = UIUtil.obtainContext(request); EPerson currUser = context.getCurrentUser(); if (currUser == null) { throw new ServletException( "Wrong data or configuration: access to the my rp servlet without a valid user: there is no user logged in or the user's netid is null"); } if (AuthorizeManager.isAdmin(context)) { response.sendRedirect(request.getContextPath() + "/dspace-admin/"); } else { Integer id = currUser.getID(); ResearcherPage rp = applicationService.getResearcherPageByEPersonId(id); if (rp != null && rp.getStatus() != null && rp.getStatus().booleanValue()) { response.sendRedirect( request.getContextPath() + "/rp/" + ResearcherPageUtils.getPersistentIdentifier(rp)); } else { // the researcher page is not active so redirect the user to the home page response.sendRedirect(request.getContextPath() + "/"); } } // nothing to save so abort the context to release resources context.abort(); return null; } }