package org.transgalactica.web.hangar.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.HangarService;
import org.transgalactica.management.data.materiel.bo.HangarSearchCriteria;
import org.transgalactica.management.data.materiel.bo.HangarSummary;
@Controller
@RequestMapping(value = "/hangars/search")
public class HangarListeController {
private static final String HANGAR_VIEW = "hangar/liste";
@Inject
private BeanFactory beanFactory;
@Inject
private HangarService hangarService;
protected HangarListeController() {
}
@ModelAttribute("criteresRechercheHangar")
public HangarSearchCriteria createCriteresRechercheHangar() {
return beanFactory.getBean(HangarSearchCriteria.class);
}
@RequestMapping(method = RequestMethod.GET)
public String get() {
return HANGAR_VIEW;
}
@RequestMapping(method = RequestMethod.POST)
public String search(@Valid @ModelAttribute("criteresRechercheHangar") HangarSearchCriteria criteres,
BindingResult result, Model model) {
if (result.hasErrors()) {
return HANGAR_VIEW;
}
try {
List<HangarSummary> hangars = hangarService.rechercherHangars(criteres);
model.addAttribute("hangars", hangars);
if (hangars.isEmpty()) {
BusinessMessageUtils.addBusinessMessage(model, "transgalactica.hangar.liste.resultat.vide");
}
}
catch (BusinessException e) {
BusinessMessageUtils.addBusinessException(model, e);
}
return HANGAR_VIEW;
}
}