Package org.geekhub

Source Code of org.geekhub.MainController

package org.geekhub;

import org.geekhub.database.ActorDAO;
import org.geekhub.database.MovieDAO;
import org.geekhub.objects.Actor;
import org.geekhub.objects.Movie;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.beans.PropertyEditorSupport;
import java.util.List;

@Controller
public class MainController {

    @Autowired
    private MovieDAO movieDAO;
    @Autowired
    private ActorDAO actorDAO;

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(Movie.class, new PropertyEditorSupport() {
            @Override
            public void setAsText(String text) throws IllegalArgumentException {
                Movie movie = new Movie();
                movie.setId(Integer.parseInt(text));
                setValue(movie);
            }
        });
    }

  @RequestMapping(value = "/", method = RequestMethod.GET)
  public String showList(ModelMap model) {
        List<Movie> movies = movieDAO.queryMovies();
        List<Actor> actors = actorDAO.queryActors();
        model.addAttribute("movies", movies);
        model.addAttribute("actors", actors);
        return "list";
  }

    @RequestMapping(value = "/create-actor.html", method = RequestMethod.GET)
    public String createActor(ModelMap model) {
        List<Movie> movies = movieDAO.queryMovies();
        Actor actor = new Actor();
        model.addAttribute("actor", actor);
        model.addAttribute("movies", movies);
        model.addAttribute("save_or_update", "Save");
        return "actor_form";
    }

    @RequestMapping(value = "/create-movie.html", method = RequestMethod.GET)
    public String editMovie(ModelMap model) {
        model.addAttribute("movie", new Movie());
        model.addAttribute("save_or_update", "Save");
        return "movie_form";
    }

    @RequestMapping("/edit-movie")
    public String editMovie(@RequestParam int id, ModelMap model) {
        Movie movie = movieDAO.getById(id);
        model.addAttribute("movie", movie);
        model.addAttribute("save_or_update", "Update");
        return "movie_form";
    }

    @RequestMapping(value = "/save-movie.html", method = RequestMethod.POST)
    public String saveMovie(@RequestParam String action, @Valid @ModelAttribute("movie") Movie movie, BindingResult result,
                            ModelMap model) {
        MovieValidator movieValidator = new MovieValidator();
        movieValidator.validate(movie, result);

        if (result.hasErrors()) {
            model.addAttribute("movie", movie);
            model.addAttribute("save_or_update", "Save");
            return "movie_form";
        }

        if (action.equals("Save")) {
            movieDAO.insert(movie);
        } else {
            movieDAO.update(movie);
        }
        return "redirect:/";
    }

    @RequestMapping(value = "/save-actor.html", method = RequestMethod.POST)
    public String saveActor(@RequestParam String action, @Valid @ModelAttribute("actor") Actor actor, BindingResult result,
                            ModelMap model) {
        ActorValidator actorValidator = new ActorValidator();
        actorValidator.validate(actor, result);

        if (result.hasErrors()) {
            model.addAttribute("actor", actor);
            model.addAttribute("movies", movieDAO.queryMovies());
            model.addAttribute("save_or_update", "Save");
            return "actor_form";
        }

        if (action.equals("Save")) {
            actorDAO.insert(actor);
        } else if (action.equals("Update")) {
            actorDAO.update(actor);
        }
        return "redirect:/";
    }

    @RequestMapping(value = "/edit-actor.html", method = RequestMethod.POST)
    public String editActor(@RequestParam("id") int actorId, ModelMap model) {
        Actor actor = actorDAO.getById(actorId);
        model.addAttribute("actor", actor);
        model.addAttribute("movies", movieDAO.queryMovies());
        model.addAttribute("save_or_update", "Update");
        return "actor_form";
    }

    @RequestMapping("/delete-actor")
    public String deleteActor(@RequestParam int id) {
        actorDAO.delete(id);
        return "redirect:/";
    }

    @RequestMapping("/delete-movie")
    public String deleteMovie(@RequestParam int id) {
        movieDAO.delete(id);
        return "redirect:/";
    }
}
TOP

Related Classes of org.geekhub.MainController

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.