applikaasie.domein.artikel.ArtikelController.java Source code

Java tutorial

Introduction

Here is the source code for applikaasie.domein.artikel.ArtikelController.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package applikaasie.domein.artikel;

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.Errors;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import static org.springframework.web.bind.annotation.RequestMethod.POST;

/**
 *
 * @author Sonja
 */
@Controller
@RequestMapping(value = "artikel")
public class ArtikelController {

    private final ArtikelRepository artikelRepository;

    // ------------------ CONSTRUCTOR --------------------------------------------
    @Autowired
    public ArtikelController(ArtikelRepository artikelRepository) {
        this.artikelRepository = artikelRepository;
    }

    // ------------------ MAPPED METHODS -----------------------------------------
    @RequestMapping(value = "/artikelen")
    public String artikelList(Model model) {
        model.addAttribute("artikelList", artikelRepository.getAllArtikelen());
        return "artikel/artikelen";
    }

    @RequestMapping(value = "/{id}/delete")
    public String deleteArtikel(@PathVariable int id) {
        if (artikelRepository.deleteArtikelById(id)) {
            return "artikel/deleted";
        }
        return "error";

    }

    @RequestMapping(value = "/{id}/edit")
    public String editArtikel(@PathVariable int id, Model model) {
        Artikel artikel = artikelRepository.getArtikelById(id);
        model.addAttribute("artikel", artikel);
        return "artikel/newAndEdit";
    }

    @RequestMapping(value = "/nieuwArtikel")
    public String newArtikel(Model model) {
        model.addAttribute("artikel", new Artikel());
        return "artikel/newAndEdit";
    }

    @RequestMapping(value = { "/saveArtikel", "/nieuwArtikel" }, method = POST)
    public String saveOrUpdateArtikel(@Valid Artikel artikel, Errors errors, Model model) {
        if (errors.hasErrors()) {
            model.addAttribute("artikel", artikel);
            return "artikel/newAndEdit";
        }
        // TODO create expection catcher. Aspect spring thing ;)
        artikelRepository.updateOrSaveArtikel(artikel);
        // TODO add flash attribute to make sure we can show the artikel once its saved. 
        // Spring site offline atm, so can't look at docs how to do this. 
        return "redirect:/artikel/saved";

    }

    @RequestMapping(value = "/saved")
    public String ArtikelSaved() {
        return "artikel/saved";
    }

}