/** * */ package nl.ipo.cds.admin.ba.controller; import java.util.List; import javax.validation.Valid; import nl.ipo.cds.dao.metadata.MetadataDao; import nl.ipo.cds.domain.metadata.Service; 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.ModelAttribute; 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.bind.annotation.RequestParam; import org.springframework.web.bind.support.SessionStatus; /** * Controller class for maintenance of View and DownloadServices. * The data updated here is used by the GetCapabilities-requests * * @author eshuism * 20 jan 2012 */ @Controller @RequestMapping("/ba/vdconfig") public class VDConfigurationController { @Autowired private MetadataDao metadataDao; @ModelAttribute("roleFunction") String getRoleFunction(){ return "beheerder"; } @Autowired private String inspireHost; @Autowired private String inspireGetCapabilitiesRequestTemplate; @Autowired private String inspireGetCapabilitiesRequestWMSVersion; @Autowired private String inspireGetCapabilitiesRequestWFSVersion; @ModelAttribute(value="inspireHost") public String getInspireHost() { return inspireHost; } @ModelAttribute(value="inspireGetCapabilitiesRequestTemplate") public String getInspireGetCapabilitiesRequestTemplate() { return inspireGetCapabilitiesRequestTemplate; } @ModelAttribute (value = "inspireGetCapabilitiesRequestWMSVersion") public String getInspireGetCapabilitiesRequestWMSVersion () { return inspireGetCapabilitiesRequestWMSVersion; } @ModelAttribute (value = "inspireGetCapabilitiesRequestWFSVersion") public String getInspireGetCapabilitiesRequestWFSVersion () { return inspireGetCapabilitiesRequestWFSVersion; } /** * Only necessary for correct binding when doing submit/POST. Make sure that the objects, being command-objects, * are generated by Hibernate and not new Objects created by Spring MVC * * @param serviceId * @param model * @return */ @ModelAttribute("service") public Service getServiceObject (@RequestParam(required=false, value="serviceId") Long serviceId, Model model) { Service service = serviceId != null ? this.metadataDao.getService(serviceId) : null; // Remove all keywords when saving the service if(service != null){ /* Remove all keywords when saving the service. Otherwise keywords are never removed, because they are always * populated here */ service.getServiceIdentification().getKeywords().clear(); } return service; } /** * Parameter for storing the selected (active) (folder)tab of the client * @param serviceTabId * @return */ @ModelAttribute("serviceTabId") public String serviceTabId (@RequestParam(required=false, value="serviceTabId") String serviceTabId) { return serviceTabId; } @ModelAttribute("services") public List<Service> services (Model model) { List<Service> services = this.metadataDao.getAllServices(); return services; } @RequestMapping(method = RequestMethod.GET) public String index (Model model) { List<Service> services = this.metadataDao.getAllServices(); if(services.size()>0){ return "redirect:/ba/vdconfig/service/" + services.get(0).getId(); } else return "/ba/vdconfig"; } @RequestMapping(value = "service/{serviceId}", method = RequestMethod.GET) public String getService (@PathVariable(value="serviceId") Long serviceId, Model model) { Service service = this.metadataDao.getService(serviceId); model.addAttribute("service", service); return "/ba/vdconfig"; } @RequestMapping(value = "service/{serviceId}", method = RequestMethod.POST) public String UpdateService (@Valid @ModelAttribute(value="service") Service service, BindingResult bindingResult, SessionStatus status,@PathVariable(value="serviceId") Long serviceId, Model model) { if (bindingResult.hasErrors ()) { return "/ba/vdconfig"; } service = this.metadataDao.update(service); // Redirect after POST pattern return "redirect:/ba/vdconfig/service/" + serviceId; } }