<commit_before>package br.com.fsp.wine.controller;

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.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import br.com.fsp.wine.model.TipoVinho;
import br.com.fsp.wine.model.Vinho;
import br.com.fsp.wine.service.VinhoService;

import static br.com.fsp.wine.util.ConstantesURL.URL_404;

@Controller
@RequestMapping("/vinhos")
public class VinhosController {

	private final String VINHO_SALVO_COM_SUCESSO = "Vinho salvo com sucesso.";
	private final String VINHO_DELETADO_COM_SUCESSO = "Vinho deletado com sucesso.";
	
	@Autowired
	private VinhoService vinhoService;
	

	@RequestMapping
	public String pesquisa(Model model) {
		model.addAttribute("vinhos", vinhoService.buscarTodos());
		return "/vinho/Listagem";
	}
	
	@RequestMapping("/novo")
	public String novo(Vinho vinho, Model model) {
		model.addAttribute("vinho", vinho);
		model.addAttribute("tipos", TipoVinho.values());
		return "/vinho/Cadastro";
	}
	
	@RequestMapping(value = "/novo", method = RequestMethod.POST)
	public String salvar(@Valid Vinho vinho, BindingResult resultado, RedirectAttributes atributos, Model model) {
		if (resultado.hasErrors()) {
			return novo(vinho, model);
		}
		vinhoService.salvar(vinho);
		atributos.addFlashAttribute("mensagem", VINHO_SALVO_COM_SUCESSO);
		return "redirect:/vinhos/novo";
	}
	
	@RequestMapping("/editar/{codigo}")
	public String editar(@PathVariable Long codigo, Model model) {
		if (vinhoService.existeVinhoCom(codigo)) {
			return novo(vinhoService.buscarPorCodigo(codigo), model);
		}
		return URL_404;
	}
	
	@RequestMapping("/deletar/{codigo}")
	public String deletar(@PathVariable Long codigo, RedirectAttributes atributos, Model model) {
		if (vinhoService.existeVinhoCom(codigo)) {
			vinhoService.deletarPorCodigo(codigo);
			atributos.addFlashAttribute("mensagem", VINHO_DELETADO_COM_SUCESSO);
			return novo(new Vinho(), model);
		}
		return URL_404;
	}
	
}<commit_msg>Refatoração controlador vinhos.<commit_after>package br.com.fsp.wine.controller;

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.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import br.com.fsp.wine.model.TipoVinho;
import br.com.fsp.wine.model.Vinho;
import br.com.fsp.wine.service.VinhoService;

@Controller
@RequestMapping("/vinhos")
public class VinhosController {

	private final String VINHO_SALVO_COM_SUCESSO = "Vinho salvo com sucesso.";
	private final String VINHO_DELETADO_COM_SUCESSO = "Vinho deletado com sucesso.";
	
	private final String NOT_FOUND ="/error/404";
	
	@Autowired
	private VinhoService vinhoService;
	

	@RequestMapping
	public String pesquisa(Model model) {
		model.addAttribute("vinhos", vinhoService.buscarTodos());
		return "/vinho/Listagem";
	}
	
	@RequestMapping("/novo")
	public String novo(Vinho vinho, Model model) {
		model.addAttribute("vinho", vinho);
		model.addAttribute("tipos", TipoVinho.values());
		return "/vinho/Cadastro";
	}
	
	@RequestMapping(value = "/novo", method = RequestMethod.POST)
	public String salvar(@Valid Vinho vinho, BindingResult resultado, RedirectAttributes atributos, Model model) {
		if (resultado.hasErrors()) {
			return novo(vinho, model);
		}
		vinhoService.salvar(vinho);
		atributos.addFlashAttribute("mensagem", VINHO_SALVO_COM_SUCESSO);
		return "redirect:/vinhos/novo";
	}
	
	@RequestMapping("/editar/{codigo}")
	public String editar(@PathVariable Long codigo, Model model) {
		if (vinhoService.existeVinhoCom(codigo)) {
			return novo(vinhoService.buscarPorCodigo(codigo), model);
		}
		return NOT_FOUND;
	}
	
	@RequestMapping("/deletar/{codigo}")
	public String deletar(@PathVariable Long codigo, RedirectAttributes atributos, Model model) {
		if (vinhoService.existeVinhoCom(codigo)) {
			vinhoService.deletarPorCodigo(codigo);
			atributos.addFlashAttribute("mensagem", VINHO_DELETADO_COM_SUCESSO);
			return novo(new Vinho(), model);
		}
		return NOT_FOUND;
	}
	
}
{'fraction_non_alphanumeric': 0.11543394613082514, 'fraction_numerical': 0.0025651988029072254, 'mean_word_length': 5.921597633136095, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5216261', 'n_tokens_mistral': 1645, 'n_tokens_neox': 1543, 'n_words': 278}