public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // The protein we're viewing int proteinID; // User making this request User user = UserUtils.getUser(request); if (user == null) { ActionErrors errors = new ActionErrors(); errors.add("username", new ActionMessage("error.login.notloggedin")); saveErrors(request, errors); return mapping.findForward("authenticate"); } NRProtein protein = null; try { String strID = request.getParameter("id"); if (strID == null || strID.equals("")) { ActionErrors errors = new ActionErrors(); errors.add("protein", new ActionMessage("error.protein.invalidid")); saveErrors(request, errors); return mapping.findForward("Failure"); } proteinID = Integer.parseInt(strID); // Load our protein NRProteinFactory nrpf = NRProteinFactory.getInstance(); protein = (NRProtein) (nrpf.getProtein(proteinID)); // Abundance information. Only for yeast // Ghaemmaghami, et al., Nature 425, 737-741 (2003) if (protein.getSpecies().getId() == TaxonomyUtils.SACCHAROMYCES_CEREVISIAE) { List<YeastOrfAbundance> abundances = ProteinAbundanceDao.getInstance().getAbundance(protein.getId()); if (abundances == null || abundances.size() == 0) request.setAttribute("proteinAbundance", "NOT AVAILABLE"); else { if (abundances.size() == 1) { request.setAttribute("proteinAbundance", abundances.get(0).getAbundanceString()); } else { String aString = ""; for (YeastOrfAbundance a : abundances) { aString += ", " + a.getAbundanceAndOrfNameString(); } aString = aString.substring(1); request.setAttribute("proteinAbundance", aString); } } } } catch (NumberFormatException nfe) { ActionErrors errors = new ActionErrors(); errors.add("protein", new ActionMessage("error.project.invalidid")); saveErrors(request, errors); return mapping.findForward("Failure"); } catch (Exception e) { ActionErrors errors = new ActionErrors(); errors.add("username", new ActionMessage("error.project.projectnotfound")); saveErrors(request, errors); return mapping.findForward("Failure"); } Map goterms = protein.getGOAll(); if (((Collection) goterms.get("P")).size() > 0) request.setAttribute("processes", goterms.get("P")); if (((Collection) goterms.get("C")).size() > 0) request.setAttribute("components", goterms.get("C")); if (((Collection) goterms.get("F")).size() > 0) request.setAttribute("functions", goterms.get("F")); // clean up goterms = null; YatesRunSearcher yrs = new YatesRunSearcher(); yrs.setProtein(protein); Collection runs = yrs.search(); // Make sure only runs belonging to projects this user has access to are listed. if (runs != null && runs.size() > 0) { Iterator iter = runs.iterator(); while (iter.hasNext()) { YatesRun yr = (YatesRun) (iter.next()); if (!yr.getProject().checkReadAccess(user.getResearcher())) iter.remove(); } request.setAttribute("yatesdata", runs); } // Get the protein inference runs where this protein was listed // This is a bit convoluted // First get all the users' projects (projects the user has read access to) ProjectsSearcher projSearcher = new ProjectsSearcher(); projSearcher.setResearcher(user.getResearcher()); List<Project> projects = projSearcher.search(); // List<Project> projects = user.getProjects(); List<Integer> pinferIds = new ArrayList<Integer>(); for (Project project : projects) { List<Integer> experimentIds = ProjectExperimentDAO.instance().getExperimentIdsForProject(project.getID()); for (int experimentId : experimentIds) { List<ProteinferJob> piJobs = ProteinInferJobSearcher.getInstance().getProteinferJobsForMsExperiment(experimentId); for (ProteinferJob job : piJobs) { pinferIds.add(job.getPinferId()); } } } // We now have the protein inference runs for this user. // Find out which one of then has the protein of interest. List<ProteinferRun> piRuns = new ArrayList<ProteinferRun>(pinferIds.size()); ProteinferRunDAO piRunDao = ProteinferDAOFactory.instance().getProteinferRunDao(); ProteinferProteinDAO protDao = ProteinferDAOFactory.instance().getProteinferProteinDao(); ArrayList<Integer> nrseqIds = new ArrayList<Integer>(1); nrseqIds.add(proteinID); for (int pinferId : pinferIds) { if (protDao.getProteinIdsForNrseqIds(pinferId, nrseqIds).size() > 0) { ProteinferRun piRun = piRunDao.loadProteinferRun(pinferId); piRuns.add(piRun); } } request.setAttribute("piRuns", piRuns); // Set this project in the request, as a bean to be displayed on the view request.setAttribute("protein", protein); return mapping.findForward("Success"); }
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // User making this request User user = UserUtils.getUser(request); if (user == null) { ActionErrors errors = new ActionErrors(); errors.add("username", new ActionMessage("error.login.notloggedin")); saveErrors(request, errors); return mapping.findForward("authenticate"); } // we need a projectID so that we can restrict access to researchers on a project int projectId = 0; try { projectId = Integer.parseInt(request.getParameter("projectId")); } catch (NumberFormatException e) { projectId = 0; } if (projectId == 0) { ActionErrors errors = new ActionErrors(); errors.add( "payment", new ActionMessage("error.payment.invalidid", "Invalid projectID in request")); saveErrors(request, errors); return mapping.findForward("standardHome"); } // user should be an admin OR a researcher on the project Project project = ProjectFactory.getProject(projectId); if (!project.checkAccess(user.getResearcher())) { ActionErrors errors = new ActionErrors(); errors.add( "payment", new ActionMessage( "error.payment.invalidaccess", "User does not have access to view details of the payment method.")); saveErrors(request, errors); ActionForward fwd = mapping.findForward("Failure"); ActionForward newFwd = new ActionForward(fwd.getPath() + "?ID=" + projectId, fwd.getRedirect()); return newFwd; } // we need a paymentMethodId int paymentMethodId = 0; try { paymentMethodId = Integer.parseInt(request.getParameter("paymentMethodId")); } catch (NumberFormatException e) { paymentMethodId = 0; } if (paymentMethodId == 0) { ActionErrors errors = new ActionErrors(); errors.add( "payment", new ActionMessage("error.payment.invalidid", "Invalid paymentMethodID in request")); saveErrors(request, errors); ActionForward fwd = mapping.findForward("Failure"); ActionForward newFwd = new ActionForward(fwd.getPath() + "?ID=" + projectId, fwd.getRedirect()); return newFwd; } try { PaymentMethod paymentMethod = PaymentMethodDAO.getInstance().getPaymentMethod(paymentMethodId); request.setAttribute("paymentMethod", paymentMethod); request.setAttribute("projectId", projectId); } catch (Exception e) { ActionErrors errors = new ActionErrors(); errors.add("payment", new ActionMessage("error.payment.load", "ERROR: " + e.getMessage())); saveErrors(request, errors); log.error("Error loading payment method for ID: " + paymentMethodId, e); ActionForward fwd = mapping.findForward("Failure"); ActionForward newFwd = new ActionForward(fwd.getPath() + "?ID=" + projectId, fwd.getRedirect()); return newFwd; } return mapping.findForward("Success"); }