package com.wordpress.salaboy.emergencyservice.web.task; import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.wordpress.salaboy.emergencyservice.web.task.exception.FormValidationException; import com.wordpress.salaboy.model.SelectedProcedures; /** * Controller to handle control operator requests. * * @author calcacuervo */ @Controller public class ControlOperatorController extends AbstractTaskFormController { @Override protected void addCustomFormLogic(Model model) { this.emergencyId = (String)this.taskInfo.get("EmergencyId"); this.taskInfo.remove("EmergencyId"); model.addAttribute("suggestedProcedure", this .getCleanSuggestedProcedure((String) this.taskInfo .get("suggestedProcedures"))); this.taskInfo.remove("suggestedProcedures"); } private String[] getCleanSuggestedProcedure(String suggestedProceduresString) { suggestedProceduresString = suggestedProceduresString.trim(); if (suggestedProceduresString.startsWith("[")) { suggestedProceduresString = suggestedProceduresString.substring(1); } if (suggestedProceduresString.endsWith("]")) { suggestedProceduresString = suggestedProceduresString.substring(0, suggestedProceduresString.length() - 1); } suggestedProceduresString = suggestedProceduresString.trim(); return suggestedProceduresString.split(":"); } @Override protected String getTaskType() { return "Control"; } @Override protected String getViewPrefix() { return viewPrefix; } private static final String viewPrefix = "co_"; private static final Logger logger = LoggerFactory .getLogger(ControlOperatorController.class); public ControlOperatorController() { super(); } private String emergencyId; @Override @RequestMapping(value = "/task/co/{entity}/{profile}/{id}/{name}", method = RequestMethod.GET) public String taskInfo(@PathVariable("id") String id, @PathVariable("entity") String entity, @PathVariable("name") String name, @PathVariable("profile") String profile, Model model) { return super.taskInfo(id, entity, name, profile, model); } @RequestMapping(value = "/task/co/execute/{entity}/{profile}/{id}/{name}/{action}/{document}", method = RequestMethod.GET) public String executeTask(@PathVariable("id") String taskId, @PathVariable("action") String action, @PathVariable("entity") String entity, @PathVariable("name") String name, @PathVariable("document") String document, @PathVariable("profile") String profile, Model model) { return super.executeTask(taskId, action, entity, name, document, profile, model); } @RequestMapping(value = "/task/co/execute/{entity}/{profile}/{id}/{name}/{action}", method = RequestMethod.GET) public String executeTask(@PathVariable("id") String taskId, @PathVariable("action") String action, @PathVariable("entity") String entity, @PathVariable("name") String name, @PathVariable("profile") String profile, Model model) { return this.executeTask(taskId, action, entity, name, null, profile, model); } protected Map<String, Object> generateOutputForForm(String form, Map<String, String> data) { Map<String, Object> info = new HashMap<String, Object>(); SelectedProcedures selectedProcedures = new SelectedProcedures(emergencyId); String[] sps =data.get("Suggested Procedures").substring(1).split("_"); for (String string : sps) { if (string != null && string != "") { selectedProcedures.addSelectedProcedureName(string); } } info.put("selectedProcedures", selectedProcedures); return info; } @Override protected void validate(Map<String, String> formSubmittedData) throws FormValidationException { String selected = formSubmittedData.get("Suggested Procedures"); if (selected == null || selected.isEmpty()) { throw new FormValidationException("Not recognized procedure"); } } }