Package org.uned.agonzalo16.bitacora.web.article

Source Code of org.uned.agonzalo16.bitacora.web.article.ContributorArticleController

package org.uned.agonzalo16.bitacora.web.article;

import java.util.Date;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
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.uned.agonzalo16.bitacora.dao.ArticleDao;
import org.uned.agonzalo16.bitacora.dao.BlogDao;
import org.uned.agonzalo16.bitacora.dao.UserDao;
import org.uned.agonzalo16.bitacora.domain.Article;
import org.uned.agonzalo16.bitacora.service.search.SearchService;
import org.uned.agonzalo16.bitacora.service.security.AuthenticatedUser;

@RequestMapping("/contributor/article")
@Controller
@SessionAttributes({ "userAttribute" })
public class ContributorArticleController {

  @Autowired
  private ArticleDao articleDao;

  @Autowired
  private BlogDao blogDao;

  @Autowired
  private UserDao userDao;

  @Autowired
  private SearchService searchService;

  @RequestMapping(method = RequestMethod.GET, value = "/beginCreate/{id}")
  public String beginCreate(@PathVariable("id") Long id, Model model) {
    model.addAttribute("article", new ArticleForm(id));
    return "contributor/article/create";
  }

  @RequestMapping(method = RequestMethod.POST, value = "/create")
  public String create(@Valid @ModelAttribute("article") ArticleForm form, BindingResult result, @ModelAttribute("userAttribute") AuthenticatedUser user) {

    if (result.hasErrors()) {
      return "contributor/article/create";
    }

    Article article = new Article();
    article.setCreationDate(new Date());
    article.setOpenComments(true);
    article.setTitle(form.getTitle());
    article.setText(form.getText());
    article.setBlog(blogDao.get(form.getBlogId()));
    article.setUser(userDao.get(user.getId()));

    articleDao.merge(article);

    searchService.addArticle(article);

    return "redirect:/article/" + article.getId();
  }

  @RequestMapping(method = RequestMethod.GET, value = "/beginUpdate/{id}")
  public String beginUpdate(@PathVariable("id") Long id, Model model) {
    model.addAttribute("article", new ArticleForm(articleDao.get(id)));
    return "contributor/article/update";
  }

  @RequestMapping(method = RequestMethod.POST, value = "/update")
  public String update(@Valid @ModelAttribute("article") ArticleForm form, BindingResult result) {

    if (result.hasErrors()) {
      return "contributor/article/update";
    }

    Article article = articleDao.get(form.getId());
    article.setTitle(form.getTitle());
    article.setText(form.getText());

    articleDao.merge(article);

    searchService.addArticle(article);

    return "redirect:/article/" + article.getId();
  }

  @RequestMapping(method = RequestMethod.GET, value = "/openComments/{id}")
  public String openComments(@PathVariable("id") Long id) {
    Article article = articleDao.get(id);
    article.setOpenComments(true);
    articleDao.merge(article);
    return "redirect:/contributor/article/beginUpdate/" + id;
  }

  @RequestMapping(method = RequestMethod.GET, value = "/closeComments/{id}")
  public String closeComments(@PathVariable("id") Long id) {
    Article article = articleDao.get(id);
    article.setOpenComments(false);
    articleDao.merge(article);
    return "redirect:/contributor/article/beginUpdate/" + id;
  }

  @RequestMapping(method = RequestMethod.POST, value = "/delete")
  public String delete(@RequestParam("id") Long id) {

    articleDao.delete(id);

    searchService.removeArticle(id);

    return "redirect:/";
  }
}
TOP

Related Classes of org.uned.agonzalo16.bitacora.web.article.ContributorArticleController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.