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.json; import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; 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.cris.dto.ResearcherPageDTO; 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.multiaction.MultiActionController; import flexjson.JSONSerializer; public class EPersonController extends MultiActionController { private ApplicationService applicationService; public ModelAndView epersons(HttpServletRequest request, HttpServletResponse response) throws Exception { Context context = UIUtil.obtainContext(request); // authorization is checked by the getMyRP method boolean isAdmin = isAdmin(context, request); if (isAdmin) { returnJSON(response, fillInDTO(EPerson.search(context, request.getParameter("query"), 0, 10))); } return null; } public ModelAndView eperson(HttpServletRequest request, HttpServletResponse response) throws Exception { Context context = UIUtil.obtainContext(request); returnJSON(response, fillInDTO(new EPerson[] { EPerson.find(context, Integer.parseInt(request.getParameter("id"))) })); return null; } private List<EPersonDTO> fillInDTO(EPerson[] findAll) { List<EPersonDTO> epersons = new ArrayList<EPersonController.EPersonDTO>(); for (EPerson eperson : findAll) { EPersonDTO dto = new EPersonDTO(); dto.setFirstName(eperson.getFirstName()); dto.setId(eperson.getID()); dto.setLastName(eperson.getLastName()); dto.setNetId(eperson.getNetid()); dto.setEmail(eperson.getEmail()); ResearcherPage rp = getApplicationService().getResearcherPageByEPersonId(eperson.getID()); if (rp != null) { dto.setRpID(rp.getId()); dto.setFullNameRPOwnered(rp.getFullName()); } epersons.add(dto); } return epersons; } private void returnJSON(HttpServletResponse response, List<EPersonDTO> epersons) throws IOException { JSONSerializer serializer = new JSONSerializer(); serializer.rootName("epersons"); serializer.exclude("class"); response.setContentType("application/json"); serializer.deepSerialize(epersons, response.getWriter()); } private boolean isAdmin(Context context, HttpServletRequest request) throws SQLException, ServletException { EPerson currUser = getCurrentUser(request); 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"); } return AuthorizeManager.isAdmin(context); } private EPerson getCurrentUser(HttpServletRequest request) throws SQLException { Context context = UIUtil.obtainContext(request); EPerson currUser = context.getCurrentUser(); return currUser; } public void setApplicationService(ApplicationService applicationService) { this.applicationService = applicationService; } public ApplicationService getApplicationService() { return applicationService; } class EPersonDTO { private int id; private String lastName; private String firstName; private String netId; private String email; private int rpID = 0; private String fullNameRPOwnered; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getNetId() { return netId; } public void setNetId(String netId) { this.netId = netId; } public void setEmail(String email) { this.email = email; } public String getEmail() { return email; } public int getRpID() { return rpID; } public void setRpID(int rpID) { this.rpID = rpID; } public String getFullNameRPOwnered() { return fullNameRPOwnered; } public void setFullNameRPOwnered(String fullNameRPOwnered) { this.fullNameRPOwnered = fullNameRPOwnered; } } }