@Override public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { try { String view = VIEW_FORM_PAGE; String viewType = request.getParameter("viewType"); if (viewType == null) { viewType = (String) request.getPortletSession().getAttribute("viewType"); } // Set global preferences request.setAttribute(TITLE, request.getPreferences().getValue(PREF_TITLE, null)); request.setAttribute( INTRODUCTION_MESSAGE, request.getPreferences().getValue(PREF_INTRODUCTION_MESSAGE, null)); User user = PortalUtils.getUser(request); Project project = PortalUtils.getProject(request); Task task = (Task) request.getPortletSession().getAttribute("task"); int projectId = project == null ? -1 : project.getId(); String projectIdOfLists = request.getParameter(PROJECT_ID_OF_LISTS); int pidOfLists = projectIdOfLists == null ? -1 : Integer.parseInt(projectIdOfLists); LOG.debug("doView: pidOfLists -- " + pidOfLists); // Clean up session request.getPortletSession().removeAttribute(VIEW_TYPE); request.getPortletSession().removeAttribute(PROJECT_ID_OF_LISTS); if (SAVE_FAILURE.equals(viewType)) { // Prep the form to show errors... request.setAttribute( ACTION_ERROR, request.getPreferences().getValue(PREF_FAILURE_MESSAGE, null)); // Show the form with any errors provided PortalUtils.processErrors(request, task.getErrors()); } else if (SAVE_SUCCESS.equals(viewType)) { // Save Success request.setAttribute( SUCCESS_MESSAGE, request.getPreferences().getValue(PREF_SUCCESS_MESSAGE, null)); view = VIEW_MESSAGE_PAGE; } else { if (!user.isLoggedIn()) { // If user is not logged in, redirect view = VIEW_MESSAGE_PAGE; request.setAttribute(ACTION_ERROR, "You need to be logged in to perform this action"); } else if (projectId <= 0) { request.setAttribute(ACTION_ERROR, "No project was specified"); view = VIEW_MESSAGE_PAGE; } else { view = VIEW_FORM_PAGE; try { Connection db = PortalUtils.useConnection(request); int userProfileId = user.getProfileProjectId(); Project userProfile; if (userProfileId == -1) { view = VIEW_MESSAGE_PAGE; request.setAttribute(ACTION_ERROR, "No profile is available to bookmark."); } else { userProfile = ProjectUtils.loadProject(userProfileId); if (pidOfLists == -1) { pidOfLists = userProfile.getId(); } // check the user has permissions to add/delete from lists for the project whose lists // are being modified // these will be used by the view to dynamically show/hide functionality request.setAttribute( CAN_ADD_LIST, ProjectUtils.hasAccess(pidOfLists, user, "project-lists-add")); request.setAttribute( CAN_DELETE_FROM_LIST, ProjectUtils.hasAccess(pidOfLists, user, "project-lists-delete")); ProjectList projectList = findUserProjects(db, user); ProjectList availableProjects = new ProjectList(); // Profile needs to appear on top so remove it from list and don't add twice availableProjects.add(userProfile); for (int i = 0; i != projectList.size(); i++) { Project p = projectList.get(i); if (p.getId() != userProfile.getId()) { availableProjects.add(p); } } TaskCategoryList availableLists = getAvailableLists(db, pidOfLists); String errorMessage = (String) request.getPortletSession().getAttribute(ACTION_ERROR); if (StringUtils.hasText(errorMessage)) { request.setAttribute(ACTION_ERROR, errorMessage); } Map<Integer, TaskCategory> usedLists = findExistingTaskCategorysForProjects(db, pidOfLists, project.getId()); request.setAttribute(PROJECT_ID_OF_LISTS, pidOfLists); request.setAttribute(PROJECT, project); request.setAttribute(AVAILABLE_LISTS, availableLists); request.setAttribute(USER_PROFILE, userProfile); request.setAttribute(AVAILABLE_PROJECTS, availableProjects); request.setAttribute(USED_LIST_MAP, usedLists); } } catch (SQLException e) { e.printStackTrace(); view = VIEW_MESSAGE_PAGE; request.setAttribute( ACTION_ERROR, "An error occurred processing your request. Please try again."); } } } // Clean up session request.getPortletSession().removeAttribute(ACTION_ERROR); PortletContext context = getPortletContext(); PortletRequestDispatcher requestDispatcher = context.getRequestDispatcher(view); requestDispatcher.include(request, response); } catch (Exception e) { e.printStackTrace(); throw new PortletException(e); } }
public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { try { String ctx = request.getContextPath(); String defaultView = VIEW_PAGE; // Get portal items String queryString = (String) request.getAttribute(BASE_QUERY_STRING); IIndexerSearch searcher = (IIndexerSearch) request.getAttribute(SEARCHER); ProjectCategoryList categories = (ProjectCategoryList) request.getAttribute(PROJECT_CATEGORY_LIST); SearchBean searchBean = (SearchBean) request.getAttribute(SEARCH_BEAN); // Get preferences String category = request.getPreferences().getValue(PREF_CATEGORY_NAME, null); request.setAttribute(TITLE, request.getPreferences().getValue(TITLE, "Projects")); int recordLimit = Integer.parseInt(request.getPreferences().getValue(PREF_RECORD_LIMIT, "10")); request.setAttribute(RECORD_LIMIT, recordLimit); boolean hasPaging = "true".equals(request.getPreferences().getValue(PREF_HAS_PAGING, null)); if (hasPaging) { request.setAttribute(HAS_PAGING, hasPaging); } if (category != null && categories.getIdFromValue(category) == -1) { // don't display anything because the category does not exist in the category list } else { // If the searchbean category is not this category, then provide a link to that category // page if (category != null && categories.getIdFromValue(category) != searchBean.getCategoryId()) { request.setAttribute( HAS_MORE_URL, request .getPreferences() .getValue( PREF_HAS_MORE_URL, searchBean.getUrlByCategory(categories.getIdFromValue(category)))); } else { request.setAttribute( HAS_MORE_URL, request.getPreferences().getValue(PREF_HAS_MORE_URL, "")); } request.setAttribute( HAS_MORE_TITLE, request.getPreferences().getValue(PREF_HAS_MORE_TITLE, "Browse more items")); // Request items request.setAttribute(SEARCH_BEAN_ATTRIBUTE, searchBean); // Customize the string queryString += " AND (type:project) " + (category != null ? "AND (projectCategoryId:" + categories.getIdFromValue(category) + ") " : ""); // Efficient unsorted list /* TopDocCollector collector = new TopDocCollector(50); searcher.search(query, collector); ScoreDoc[] hits = collector.topDocs().scoreDocs; */ // IndexerQueryResultList hits = new IndexerQueryResultList(); hits.setQueryString(queryString); hits.getPagedListInfo().setItemsPerPage(recordLimit); // Use paging if requested PagedListInfo searchBeanInfo = new PagedListInfo(); if (hasPaging) { searchBeanInfo.setLink("/search"); String offsetStr = request.getParameter("offset"); int offset = offsetStr == null ? 0 : Integer.parseInt(offsetStr); searchBeanInfo.setCurrentOffset(offset); searchBeanInfo.setRenderParameters(searchBean.getParameterMap()); searchBeanInfo.setNamespace(response.getNamespace()); searchBeanInfo.setContextPath(ctx); searchBeanInfo.setItemsPerPage(recordLimit); hits.setPagedListInfo(searchBeanInfo); } // Configure the parameters for the search results if (searchBean.getFilter() == SearchBean.NEWLY_ADDED) { // Newly Added (parse in reverse) hits.getPagedListInfo().setColumnToSortBy("entered"); hits.getPagedListInfo().setSortOrder("desc"); searcher.search(hits); } else if (searchBean.getFilter() == SearchBean.HIGHEST_RATED) { // Highest Rated (parse in reverse) hits.getPagedListInfo().setColumnToSortBy("ratingAverage"); hits.getPagedListInfo().setSortOrder("desc"); searcher.search(hits); } else if (searchBean.getFilter() == SearchBean.MOST_REVIEWED) { // Most Reviewed (parse in reverse) hits.getPagedListInfo().setColumnToSortBy("ratingCount"); hits.getPagedListInfo().setSortOrder("desc"); searcher.search(hits); } else { // Best Match searcher.search(hits); } if (hits.getPagedListInfo().moreRecordsExist()) { request.setAttribute(HAS_MORE_RECORDS, "true"); } // Set the results for the view request.setAttribute(HITS, hits); // This portlet can provide data to other portlets for (String event : PortalUtils.getDashboardPortlet(request).getGenerateDataEvents()) { PortalUtils.setGeneratedData(request, event, hits); } if (hits.size() > 0) { // JSP view PortletContext context = getPortletContext(); PortletRequestDispatcher requestDispatcher = context.getRequestDispatcher(defaultView); requestDispatcher.include(request, response); } } } catch (Exception e) { e.printStackTrace(System.out); throw new PortletException(e); } }