/** * Returns all NEW projects submitted to this YRC member's group(s) * * @param researcherID The researcher ID of the YRC member * @return A list of new projects (within the last 30 days) for this member's groups, null if this * is not a YRC member */ public static List<Project> getNewProjectsForYRCMember(Researcher r) throws SQLException { int researcherID = r.getID(); Groups gm = Groups.getInstance(); // return null if they're not in a YRC group if (!gm.isInAGroup(researcherID)) return null; ProjectsSearcher ps = new ProjectsSearcher(); // ps.setResearcher(r); // Set the start date of the search to 1 month ago Calendar cal = GregorianCalendar.getInstance(); cal.add(Calendar.MONTH, -1); ps.setStartDate(cal.getTime()); // Set the groups to search List groups = gm.getGroups(); Iterator iter = groups.iterator(); while (iter.hasNext()) { String group = (String) (iter.next()); if (gm.isMember(researcherID, group)) { ps.addGroup(group); } } List<Project> projects = ps.search(); return projects; }
/** * Returns the ID of ONE of the groups the user is a member of. If the user is an administrator, * the ID of the "administrators" group is returned. If the user is not a member of any group, 0 * is returned * * @param user * @return * @throws SQLException */ public static int getOneGroupId(User user) throws SQLException { Groups groups = Groups.getInstance(); // If the user is an administrator return the ID of the administrators group if (groups.isMember(user.getResearcher().getID(), "administrators")) return groups.getGroupID("administrators"); // Otherwise get a list of groups that this user is a member of. Returns the // ID of the first group. List<String> groupMemberships = groups.getUserGroups(user.getResearcher().getID()); if (groupMemberships != null && groupMemberships.size() > 0) return groups.getGroupID(groupMemberships.get(0)); // If the user is not a member of any group return 0 return 0; }
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"); } // Restrict access to researchers who are members of a group Groups groupMan = Groups.getInstance(); if (!groupMan.isInAGroup(user.getResearcher().getID())) { ActionErrors errors = new ActionErrors(); errors.add("access", new ActionMessage("error.access.invalidgroup")); saveErrors(request, errors); return mapping.findForward("standardHome"); } UploadMSDataForm newForm = new UploadMSDataForm(); if (groupMan.isMember(user.getResearcher().getID(), "administrators")) { newForm.setPipeline(Pipeline.TPP); newForm.setDataServer("local"); } else if (groupMan.isMember(user.getResearcher().getID(), "MacCoss")) { newForm.setPipeline(Pipeline.MACOSS); newForm.setDataServer("local"); } else { newForm.setPipeline(Pipeline.TPP); newForm.setDataServer("local"); } try { int projectID = Integer.parseInt(request.getParameter("projectID")); newForm.setProjectID(projectID); } catch (Exception e) { newForm.setProjectID(0); } request.setAttribute("uploadMSDataForm", newForm); // get a list of projects on which this researcher is listed List<ProjectLite> projects = ProjectLiteDAO.instance().getResearcherWritableProjects(user.getResearcher().getID()); Collections.sort( projects, new Comparator<ProjectLite>() { @Override public int compare(ProjectLite o1, ProjectLite o2) { return Integer.valueOf(o2.getId()).compareTo(o1.getId()); } }); request.getSession().setAttribute("researcherProjects", projects); // get a list of instruments available List<MsInstrument> instruments = DAOFactory.instance().getInstrumentDAO().loadAllInstruments(); request.getSession().setAttribute("instrumentList", instruments); // Kick it to the view page return mapping.findForward("Success"); }