package org.transgalactica.web.vaisseau.controller; import java.util.List; import javax.inject.Inject; import javax.validation.Valid; import org.springframework.beans.factory.BeanFactory; 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.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.transgalactica.fwk.validation.exception.BusinessException; import org.transgalactica.fwk.web.message.BusinessMessageUtils; import org.transgalactica.management.business.logistics.service.VaisseauService; import org.transgalactica.management.data.materiel.bo.VaisseauSearchCriteria; import org.transgalactica.management.data.materiel.bo.VaisseauSummary; @Controller @RequestMapping(value = "/vaisseaux/search") public class VaisseauListeController { private static final String VAISSEAUX_VIEW = "vaisseaux/liste"; @Inject private BeanFactory beanFactory; @Inject private VaisseauService vaisseauService; protected VaisseauListeController() { } @ModelAttribute("criteresRechercheVaisseau") public VaisseauSearchCriteria createCriteresRechercheVaisseau() { return beanFactory.getBean(VaisseauSearchCriteria.class); } @RequestMapping(method = RequestMethod.GET) public String get() { return VAISSEAUX_VIEW; } @RequestMapping(method = RequestMethod.POST) public String search(@Valid @ModelAttribute("criteresRechercheVaisseau") VaisseauSearchCriteria criteres, BindingResult result, Model model) { if (result.hasErrors()) { return VAISSEAUX_VIEW; } try { List<VaisseauSummary> vaisseaux = vaisseauService.rechercherVaisseaux(criteres); model.addAttribute("vaisseaux", vaisseaux); if (vaisseaux.isEmpty()) { BusinessMessageUtils.addBusinessMessage(model, "transgalactica.vaisseau.liste.resultat.vide"); } } catch (BusinessException e) { BusinessMessageUtils.addBusinessException(model, e); } return VAISSEAUX_VIEW; } }