/src/main/java/com/google/ie/web/controller/ProjectController.java
http://thoughtsite.googlecode.com/ · Java · 694 lines · 459 code · 36 blank · 199 comment · 118 complexity · e4f0b8a8638baae4319374c57cd5e615 MD5 · raw file
- /* Copyright 2010 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS.
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
- package com.google.ie.web.controller;
- import static com.google.ie.web.controller.WebConstants.ERROR;
- import static com.google.ie.web.controller.WebConstants.SUCCESS;
- import static com.google.ie.web.controller.WebConstants.VIEW_STATUS;
- import com.google.appengine.api.datastore.Blob;
- import com.google.ie.business.domain.Developer;
- import com.google.ie.business.domain.Idea;
- import com.google.ie.business.domain.Project;
- import com.google.ie.business.domain.User;
- import com.google.ie.business.service.DeveloperService;
- import com.google.ie.business.service.IdeaService;
- import com.google.ie.business.service.ProjectService;
- import com.google.ie.business.service.UserService;
- import com.google.ie.common.builder.ProjectBuilder;
- import com.google.ie.common.editor.StringEditor;
- import com.google.ie.common.email.EmailManager;
- import com.google.ie.common.util.ReCaptchaUtility;
- import com.google.ie.dto.ProjectDetail;
- import com.google.ie.dto.RetrievalInfo;
- import com.google.ie.dto.ViewStatus;
- import org.apache.commons.lang.StringUtils;
- import org.apache.log4j.Logger;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.beans.propertyeditors.CustomBooleanEditor;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.validation.BindingResult;
- import org.springframework.validation.Validator;
- import org.springframework.web.bind.WebDataBinder;
- import org.springframework.web.bind.annotation.InitBinder;
- import org.springframework.web.bind.annotation.ModelAttribute;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.SessionAttributes;
- import org.springframework.web.multipart.MultipartFile;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- /**
- * A controller that handles request for Project entities.
- *
- * @author Charanjeet singh
- *
- */
- @Controller
- @RequestMapping("/projects")
- @SessionAttributes("user")
- public class ProjectController {
- private static Logger logger = Logger.getLogger(ProjectController.class);
- private static final String PROJECT_EMAIL_TYPE_INVITE_TO_JOIN = "joinProject";
- private static final String SEMICOLON = ";";
- private static final String NAME = "name";
- private static final String EMAILID = "emailId";
- @Autowired
- private ProjectService projectService;
- @Autowired
- private ProjectBuilder projectBuilder;
- @Autowired
- private IdeaService ideaService;
- @Autowired
- private DeveloperService developerService;
- @Autowired
- private UserService userService;
- @Autowired
- private ReCaptchaUtility reCaptchaUtility;
- @Autowired
- @Qualifier("projectValidator")
- private Validator projectValidator;
- /**
- * Register custom binders for Spring. Needed to run on app engine
- *
- * @param binder
- * @param request
- */
- @InitBinder
- public void initBinder(WebDataBinder binder) {
- binder.registerCustomEditor(Boolean.class, new CustomBooleanEditor(true));
- binder.registerCustomEditor(String.class, new StringEditor(true));
- }
- /**
- * Handles the request for search/list idea.
- *
- * @param model Carries data for the view
- * @return View name.
- */
- @RequestMapping(value = "/list", method = RequestMethod.GET)
- public String listProjects() {
- return "projects/list";
- }
- /**
- * Creates project for the idea identified by ideaKey.
- *
- * @param ideaKey for the {@link Idea}
- * @param model Carries data for the view
- * @return
- */
- @RequestMapping("/showForm/{ideaKey}")
- public String edit(@PathVariable String ideaKey, Model model) {
- ProjectDetail projectDetail = new ProjectDetail();
- projectDetail.setProject(new Project());
- ViewStatus viewStatus = new ViewStatus();
- viewStatus.addData(WebConstants.PROJECT_DETAIL, projectDetail);
- viewStatus.setStatus(SUCCESS);
- Idea idea = ideaService.getIdeaByKey(ideaKey);
- viewStatus.addData(WebConstants.IDEA_TITLE, idea.getTitle());
- model.addAttribute(VIEW_STATUS, viewStatus);
- model.addAttribute("ideaKey", ideaKey);
- return "projects/edit";
- }
- /**
- * Displays the project details identified by projectKey
- *
- * @param projectKey the id of {@link Project} to display
- * @param model Carries data for the view
- * @param req reference of the {@link HttpServletRequest}
- * @return
- */
- @RequestMapping("/show/{projectKey}")
- public String show(@PathVariable String projectKey, Map<String, Object> model,
- HttpServletRequest req) {
- ViewStatus viewStatus = new ViewStatus();
- User user = null;
- if (req.getSession(true).getAttribute(WebConstants.USER) != null)
- user = (User) req.getSession(true).getAttribute(WebConstants.USER);
- ProjectDetail projectDetail = projectBuilder.getProjectDetail(projectKey);
- if (null != projectDetail && null != projectDetail.getProject()) {
- Project project = projectDetail.getProject();
- Idea associatedIdea = ideaService.getIdeaByKey(project.getIdeaKey());
- /*
- * Set containing the status for which the idea should not be
- * displayed
- */
- Set<String> setOfStatus = new HashSet<String>();
- setOfStatus.add(Idea.STATUS_DELETED);
- setOfStatus.add(Idea.STATUS_OBJECTIONABLE);
- /*
- * If the idea has status contained in the set created above,set the
- * idea key for the project to null
- */
- if (setOfStatus.contains(associatedIdea.getStatus())) {
- project.setIdeaKey(null);
- logger.debug("The idea is either deleted or objectionable," +
- "hence setting the idea key for project to null");
- } else {
- projectDetail.setIdeaTitle(associatedIdea.getTitle());
- }
- if (user != null)
- logger.debug("Checking if project is editable to the user with userkey ="
- + user.getUserKey());
- projectDetail.setProjectEditable(isProjectEditable(projectDetail, user));
- logger.info("projectDetail.projectEditable is set to ="
- + projectDetail.isProjectEditable());
- viewStatus.addData(WebConstants.PROJECT_DETAIL, projectDetail);
- viewStatus.setStatus(SUCCESS);
- } else {
- viewStatus.setStatus(ERROR);
- viewStatus.addMessage(ERROR, WebConstants.RECORD_NOT_FOUND);
- }
- model.put(VIEW_STATUS, viewStatus);
- return "projects/show";
- }
- /**
- * Check for project edit-able attribute on the basis of logged in user.
- *
- * @param projectDetail {@link ProjectDetail} to edit
- * @return boolean status of the action
- */
- private boolean isProjectEditable(ProjectDetail projectDetail, User user) {
- boolean isEditable = false;
- if (projectDetail.getProject() != null) {
- if (user != null) {
- if (projectDetail.getUser() != null) {
- if (user.getUserKey() != null
- && user.getUserKey().equalsIgnoreCase(
- projectDetail.getUser().getUserKey())) {
- isEditable = true;
- }
- }
- for (Developer developer : projectDetail.getDevelopers()) {
- logger.debug("developer's status =" + developer.getStatus());
- if (user.getUserKey().equalsIgnoreCase(developer.getUserKey())) {
- isEditable = true;
- break;
- }
- }
- }
- }
- return isEditable;
- }
- /**
- * Handles request for editing an project. Validates the Project details
- * and saves the project if no validation errors are found.
- *
- * @return name of project detail JSP to be shown.
- */
- @RequestMapping("/editProject/{projectKey}")
- public String editProject(@PathVariable String projectKey,
- HttpSession session,
- Map<String, Object> model) {
- User user = (User) session.getAttribute(WebConstants.USER);
- ViewStatus viewStatus = new ViewStatus();
- ProjectDetail projectDetail = projectBuilder.getProjectDetail(projectKey);
- projectDetail.setProjectEditable(isProjectEditable(projectDetail, user));
- if (null != projectDetail.getProject()) {
- projectDetail.setIdeaTitle(ideaService.getIdeaByKey(
- projectDetail.getProject().getIdeaKey()).getTitle());
- viewStatus.addData(WebConstants.PROJECT_DETAIL, projectDetail);
- viewStatus.setStatus(SUCCESS);
- } else {
- viewStatus.setStatus(ERROR);
- viewStatus.addMessage(ERROR, WebConstants.RECORD_NOT_FOUND);
- }
- Idea idea = ideaService.getIdeaByKey(projectDetail.getProject().getIdeaKey());
- model.put(VIEW_STATUS, viewStatus);
- viewStatus.addData(WebConstants.IDEA_TITLE, idea.getTitle());
- model.put("ideaKey", projectDetail.getProject().getIdeaKey());
- model.put("projectKey", projectDetail.getProject().getKey());
- model.put("editProject", true);
- return "projects/edit";
- }
- /**
- * Handles request for creating an project. Validates the Project details
- * and saves the project if no validation errors are found.
- *
- * @return name of project detail JSP to be shown.
- */
- @RequestMapping(value = "/create", method = RequestMethod.POST)
- public String createProject(HttpServletRequest request,
- @RequestParam(required = true) String ideaKey,
- @RequestParam(required = false) String projectKey,
- @RequestParam(required = false, value = "devName") String[] devNames,
- @RequestParam(required = false, value = "email") String[] emails,
- @RequestParam(required = false, value = "status") String[] statusArr,
- @RequestParam(required = false, value = "devKey") String[] devKeys,
- @RequestParam(required = false, value = "logoFile") MultipartFile logoFile,
- @ModelAttribute Project project,
- BindingResult errors,
- Map<String, Object> model,
- @RequestParam String recaptchaChallengeField,
- @RequestParam String recaptchaResponseField,
- HttpSession session) throws IOException {
- ViewStatus viewStatus = new ViewStatus();
- Boolean captchaValidation = reCaptchaUtility.verifyCaptcha(request.getRemoteAddr(),
- recaptchaChallengeField,
- recaptchaResponseField);
- User user = (User) session.getAttribute(WebConstants.USER);
- ProjectDetail projectDetail = new ProjectDetail();
- /* create developer list. */
- projectDetail.setDevelopers(createDeveloperList(devNames, emails, statusArr,
- devKeys, user));
- projectDetail.setProject(project);
- String ideaTitle = ideaService.getIdeaByKey(ideaKey).getTitle();
- projectDetail.getProject().setIdeaKey(ideaKey);
- if (projectKey != null) {
- projectDetail.getProject().setKey(projectKey);
- }
- if (!captchaValidation) {
- getViewStatusForInvalidCaptcha(model, viewStatus, projectDetail, ideaTitle, user);
- return "projects/edit";
- }
- uploadLogo(projectKey, logoFile, projectDetail);
- /* call projectValidator to validate projectDetail object */
- projectValidator.validate(projectDetail, errors);
- /* If the errors exist in the data being posted, return to edit page */
- if (errors.hasErrors()) {
- viewStatus = ViewStatus.createProjectErrorViewStatus(errors);
- model.put(WebConstants.VIEW_STATUS, viewStatus);
- return "projects/edit";
- }
- projectDetail = createProjectAndGetDetail(user, projectDetail, ideaTitle);
- if (null != projectDetail.getProject()) {
- viewStatus.addData(WebConstants.PROJECT_DETAIL, projectDetail);
- viewStatus.setStatus(SUCCESS);
- } else {
- viewStatus.setStatus(ERROR);
- viewStatus.addMessage(ERROR, WebConstants.RECORD_NOT_FOUND);
- }
- model.put("editProject", "");
- model.put(VIEW_STATUS, viewStatus);
- // redirect to project detail page
- if (null != projectKey) {
- return "redirect:show/" + projectKey;
- } else if (null != projectDetail.getProject()) {
- return "redirect:show/" + projectDetail.getProject().getKey();
- } else {
- return "projects/show";
- }
- }
- /**
- * Get View Status For Captcha Invalid
- *
- * @param model Carries data for the view
- * @param viewStatus
- * @param projectDetail
- * @param ideaTitle
- */
- private void getViewStatusForInvalidCaptcha(Map<String, Object> model, ViewStatus viewStatus,
- ProjectDetail projectDetail, String ideaTitle, User user) {
- viewStatus.addMessage(WebConstants.ERROR, WebConstants.CAPTCHA_MISMATCH);
- viewStatus.addData(WebConstants.IDEA_TITLE, ideaTitle);
- model.put("ideaKey", projectDetail.getProject().getIdeaKey());
- model.put("projectKey", projectDetail.getProject().getKey());
- /*
- * If project is not created then delete user information from developer
- * list.
- */
- if (projectDetail.getProject().getKey() == null) {
- Developer developerToDelete = null;
- for (Developer developer : projectDetail.getDevelopers()) {
- if (user.getDisplayName() != null && user.getEmailId() != null) {
- if (user.getDisplayName().equalsIgnoreCase(developer.getName())
- && user.getEmailId().equalsIgnoreCase(developer.getEmailId())) {
- developerToDelete = developer;
- break;
- }
- }
- }
- if (developerToDelete != null) {
- projectDetail.getDevelopers().remove(developerToDelete);
- }
- } else {
- model.put("editProject", true);
- }
- viewStatus.addData(WebConstants.PROJECT_DETAIL, projectDetail);
- model.put(VIEW_STATUS, viewStatus);
- }
- /**
- * Creates the project and retrieves the project details.
- *
- * @param user creating the project.
- * @param projectDetail
- * @param ideaTitle
- * @return
- */
- private ProjectDetail createProjectAndGetDetail(User user, ProjectDetail projectDetail,
- String ideaTitle) {
- Project project = projectService.createOrUpdateProject(projectDetail.getProject(), user);
- // handle developers functionality.
- handleDeveloper(projectDetail.getDevelopers(), user, project);
- projectDetail = projectBuilder.getProjectDetail(project.getKey());
- projectDetail.setIdeaTitle(ideaTitle);
- projectDetail.setProjectEditable(isProjectEditable(projectDetail, user));
- return projectDetail;
- }
- /**
- * @param projectKey
- * @param logoFile
- * @param projectDetail
- * @throws IOException
- */
- private void uploadLogo(String projectKey, MultipartFile logoFile, ProjectDetail projectDetail)
- throws IOException {
- if (logoFile != null && logoFile.getBytes().length > 0) {
- try {
- Blob file = new Blob(logoFile.getBytes());
- projectDetail.getProject().setLogo(file);
- } catch (IOException e) {
- logger.error("couldn't find an Image at " + logoFile, e);
- }
- } else {
- Project project1 = new Project();
- if (projectService.getProjectById(projectKey) != null)
- project1 = projectService.getProjectById(projectKey);
- if (project1.getLogo() != null && project1.getLogo().getBytes().length > 0) {
- Blob file = new Blob(project1.getLogo().getBytes());
- projectDetail.getProject().setLogo(file);
- }
- }
- }
- /**
- * create Developer List
- *
- * @param devName
- * @param email
- * @param status
- * @param devKey
- * @param user
- * @return List<Developer>
- */
- private List<Developer> createDeveloperList(String[] devName, String[] email, String[] status,
- String[] devKey, User user) {
- List<Developer> developers = new ArrayList<Developer>();
- Set<String> emailsSet = new HashSet<String>();
- if ((devName != null && devName.length > 0) && (email != null && email.length > 0)) {
- Developer developer = null;
- for (int i = 0; i < devName.length; i++) {
- if (validDeveloperData(devName, email, i)) {
- // Check if email ids are unique
- boolean unique = emailsSet.add(email[i]);
- if (unique) {
- developer = new Developer();
- developer.setEmailId(email[i]);
- developer.setName(devName[i]);
- // If devKey is not present, it is a create request
- if (devKey[i] != null && devKey[i].trim().length() > 0) {
- developer.setKey(devKey[i]);
- }
- // If status is not present, it is a create request
- if (status[i] != null && status[i].trim().length() > 0) {
- developer.setStatus(status[i]);
- }
- // While editing, set user key into developer object, if
- // developer's email id is same as users email id.
- if (developer.getEmailId().equals(user.getEmailId())) {
- // If user explicitly adding himself as a developer
- // while creating the project then set its user key
- // and status as accepted.
- developer.setUserKey(user.getUserKey());
- developer.setStatus(Developer.STATUS_REQUEST_ACCEPTED);
- }
- developers.add(developer);
- }
- }
- }
- }
- // Check if creator has not already added himself as developer.
- boolean unique = emailsSet.add(user.getEmailId());
- if (unique) {
- Developer developer = new Developer();
- developer.setEmailId(user.getEmailId());
- developer.setName(user.getDisplayName());
- developer.setUserKey(user.getUserKey());
- developer.setStatus(Developer.STATUS_REQUEST_ACCEPTED);
- logger.debug("Added project creator to it's developer list.");
- developers.add(developer);
- }
- return developers;
- }
- /**
- * check for valid Developer Data.
- *
- * @param devName
- * @param email
- * @param index
- * @return boolean
- */
- private boolean validDeveloperData(String[] devName, String[] email, int index) {
- if (devName.length > index && email.length > index) {
- String name = devName[index];
- String emailId = email[index];
- if ((name != null && name.trim().length() > 0 && !name.trim().equals(NAME))
- && (emailId != null && emailId.trim().length() > 0 && !emailId.trim()
- .equals(EMAILID))) {
- return true;
- }
- }
- return false;
- }
- /**
- * This method check for new user and save them and send mail for joining
- * the project.
- *
- * @param developers list of developer
- * @param user
- * @param project
- * @param isUpdateRequest
- * @return List<Developer>
- */
- private List<Developer> handleDeveloper(List<Developer> developers, User user, Project project) {
- List<Developer> updatedDevelopers = new ArrayList<Developer>();
- List<String> emailList = new ArrayList<String>();
- for (Developer developer : developers) {
- logger.debug("Developer status =" + developer.getStatus() + " , user.userkey="
- + user.getUserKey() + " ,developer.userkey =" + developer.getUserKey());
- if (developer.getStatus().equalsIgnoreCase(Developer.STATUS_JOIN_REQUEST)) {
- developer.setStatus(Developer.STATUS_REQUEST_ALLREADY_SENT);
- developer.setProjectKey(project.getKey());
- developer = developerService.saveDeveloper(developer);
- updatedDevelopers.add(developer);
- emailList.add(developer.getEmailId() + SEMICOLON + developer.getName() + SEMICOLON
- + developer.getKey());
- } else if (developer.getStatus().equalsIgnoreCase(Developer.STATUS_REQUEST_ACCEPTED)) {
- developer.setProjectKey(project.getKey());
- developer = developerService.saveDeveloper(developer);
- updatedDevelopers.add(developer);
- } else {
- updatedDevelopers.add(developer);
- }
- }
- // /* Send email to developer */
- if (emailList.size() > 0) {
- List<String> otherInfoList = new ArrayList<String>();
- otherInfoList.add(user.getDisplayName());
- otherInfoList.add(project.getName());
- otherInfoList.add(project.getKey());
- EmailManager.sendMail(PROJECT_EMAIL_TYPE_INVITE_TO_JOIN, emailList, otherInfoList);
- }
- return updatedDevelopers;
- }
- @RequestMapping("/joinProject/{projectKey}/{developerKey}/{emailId}")
- public String joinProject(@PathVariable String projectKey, @PathVariable String developerKey,
- @PathVariable String emailId,
- Map<String, Object> model, HttpServletRequest req) {
- User user = null;
- ProjectDetail projectDetail = projectBuilder.getProjectDetail(projectKey);
- Developer developer = developerService.getDeveloperById(developerKey);
- if (projectDetail == null || projectDetail.getProject() == null || developer == null) {
- return "error/data-access-error";
- }
- if (req.getSession(true).getAttribute(WebConstants.USER) != null) {
- user = (User) req.getSession(true).getAttribute(WebConstants.USER);
- if (null == user.getUserKey()) {
- user = userService.addOrUpdateUser(user);
- req.getSession(true).setAttribute(WebConstants.USER, user);
- }
- }
- if (user != null) {
- developer.setStatus(Developer.STATUS_REQUEST_ACCEPTED);
- developer.setUserKey(user.getUserKey());
- developerService.saveDeveloper(developer);
- ViewStatus viewStatus = new ViewStatus();
- viewStatus.addData(WebConstants.PROJECT_DETAIL, projectDetail);
- viewStatus.setStatus(WebConstants.SUCCESS);
- model.put(VIEW_STATUS, viewStatus);
- // return "projects/show";
- }
- return "users/activate";
- }
- /**
- * Handles the request for search/list Project.
- *
- * @param model Carries data for the view
- * @return View name.
- */
- // @RequestMapping(value = "/list", method = RequestMethod.GET)
- // public String listProjects(Map<String, Object> model) {
- @RequestMapping(value = "/get", method = RequestMethod.GET)
- public String listProjects(@ModelAttribute RetrievalInfo retrievalInfo,
- Map<String, Object> model) {
- /* Fetch the range parameters as sent in the request */
- long startIndex = retrievalInfo.getStartIndex();
- long noOfRecordsRequested = retrievalInfo.getNoOfRecords();
- /* Get the idea list */
- // List<Project> projects = new ArrayList<Project>();
- List<Project> projects = projectService.listProjects(retrievalInfo);
- Iterator<Project> iterator = projects.iterator();
- Project projectWithDesc = null;
- while (iterator.hasNext()) {
- projectWithDesc = iterator.next();
- projectWithDesc.setDescriptionAsString(projectWithDesc.getDescription());
- shortenFields(projectWithDesc);
- }
- /* Map of data to be inserted into the view status object */
- HashMap<String, Object> parameters = new HashMap<String, Object>();
- /* Map containing the previous and next index values */
- HashMap<String, Long> pagingMap = new HashMap<String, Long>();
- /*
- * If the size of the list is greater than the no. of records requested
- * ,set the parameter 'next' to be used as start index for the next
- * page retrieval.
- */
- if (projects != null && projects.size() > noOfRecordsRequested) {
- pagingMap.put(WebConstants.NEXT, startIndex + noOfRecordsRequested);
- } else {
- /*
- * If the list size is not greater than the number requested set
- * the 'next' parameter to minus one
- */
- pagingMap.put(WebConstants.NEXT, (long) WebConstants.MINUS_ONE);
- }
- /*
- * Set the parameter 'previous' to be used as the start index for the
- * previous page retrieval
- */
- pagingMap.put(WebConstants.PREVIOUS, startIndex - noOfRecordsRequested);
- /* Add the map containing the paging values to the map of parameters */
- parameters.put(WebConstants.PAGING, pagingMap);
- // Create viewStatus
- ViewStatus viewStatus = createTheViewStatus(projects, parameters);
- model.put(VIEW_STATUS, viewStatus);
- return "projects/list";
- }
- /**
- * Shortens the length of title and description fields
- *
- * @param project
- */
- private void shortenFields(Project project) {
- if (null != project) {
- /* 50 chars for title */
- project.setName(StringUtils.abbreviate(project.getName(), 50));
- /* 150 chars for description */
- project.setDescriptionAsString(StringUtils.abbreviate(project.getDescriptionAsString(),
- 150));
- }
- }
- /**
- * Create the {@link ViewStatus} object containing the data retrieved.This
- * object has the status codes set to success/error based on whether the
- * parameter list contains data or not.
- *
- * @param listOfProjects the list containing data
- * @param hitCount
- * @return object containing the data and status codes
- */
- private ViewStatus createTheViewStatus(List<?> listProjects, Map<String, ?> parameters) {
- ViewStatus viewStatus = new ViewStatus();
- /*
- * If the list of ideas is not null and at least one idea
- * exists create the view status object with status as 'success' and
- * also set the data.
- */
- if (listProjects != null && listProjects.size() > WebConstants.ZERO) {
- viewStatus.setStatus(SUCCESS);
- viewStatus.addData(WebConstants.PROJECTS, listProjects);
- viewStatus.addData(WebConstants.MY_IDEAS_COUNT, listProjects.size());
- if (parameters != null) {
- Iterator<String> keysIter = parameters.keySet().iterator();
- String objectKey = null;
- while (keysIter.hasNext()) {
- objectKey = keysIter.next();
- viewStatus.addData(objectKey, parameters.get(objectKey));
- }
- }
- } else {/* In case the idea list is null or empty */
- viewStatus.setStatus(WebConstants.ERROR);
- viewStatus.addMessage(WebConstants.PROJECTS, WebConstants.NO_RECORDS_FOUND);
- }
- return viewStatus;
- }
- /**
- * @param projectService the projectService to set
- */
- public void setProjectService(ProjectService projectService) {
- this.projectService = projectService;
- }
- /**
- *
- * @return the projectService
- */
- public ProjectService getProjectService() {
- return projectService;
- }
- }