Package com.wordpress.salaboy.emergencyservice.web.task

Source Code of com.wordpress.salaboy.emergencyservice.web.task.EmergencyOperatorController

package com.wordpress.salaboy.emergencyservice.web.task;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
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.external.DistributedService;
import com.wordpress.salaboy.model.Call;
import com.wordpress.salaboy.model.Emergency;
import com.wordpress.salaboy.model.Location;

/**
* Controller to handle the emergency operator requests.
*
* @author calcacuervo
*/
@Controller
public class EmergencyOperatorController extends AbstractTaskFormController {
  @Override
  protected void addCustomFormLogic(Model model) {
    // taskInfo.remove("Call Id");
    String id = String.valueOf(System.currentTimeMillis());
    callsById.put(id, (Call) taskInfo.get("Call"));
    taskInfo.remove("Call");
    model.addAttribute("callId", id);
  }

  @Override
  protected String getTaskType() {
    return "Phone";
  }

  @Override
  protected String getViewPrefix() {
    return viewPrefix;
  }

  private static final String viewPrefix = "op_";
  private static final Logger logger = LoggerFactory
      .getLogger(EmergencyOperatorController.class);

  private static Map<String, Call> callsById = new HashMap<String, Call>();

  public EmergencyOperatorController() {
    super();
  }

  @RequestMapping(value = "/task/op/{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) {
    String ti = super.taskInfo(id, entity, name, profile, model);
    // As we don't have in smart tasks the notion of dependency between
    // inputs.. let's make it here.
    Map<String, Object> children = new HashMap<String, Object>();
    Map<String, List<Object>> parent = new HashMap<String, List<Object>>();
    Map<String, Object> newTaskOutput = new HashMap<String, Object>();
    for (String key : taskOutput.keySet()) {
      if (key.contains(":")) {
        String[] splitted = key.split(":");
        children.put(splitted[1], splitted[0]);
        List current = parent.get(splitted[0]);
        if (current == null) {
          current = new ArrayList<Object>();
          parent.put(splitted[0], current);
        }
        current.add(splitted[1]);
//        parent.put(splitted[0], splitted[1]);
        newTaskOutput.put(splitted[1], taskOutput.get(key));
      } else {
        newTaskOutput.put(key, taskOutput.get(key));
      }
    }
    model.addAttribute("taskOutput", newTaskOutput);
    model.addAttribute("children", children);
    model.addAttribute("parents", parent);
    return ti;
  }

  @Override
  @RequestMapping(value = "/task/op/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/op/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) {
    // TODO for now, only for phone call form
    Map<String, Object> info = new HashMap<String, Object>();
    Emergency emergency = new Emergency();

    // persists the emergency
    Location location = new Location();
    location.setLocationX(Integer.parseInt(data.get("Location X")));
    location.setLocationY(Integer.parseInt(data.get("Location Y")));
    emergency.setLocation(location);
    if (data.get("Number Of People") != null) {
      emergency.setNroOfPeople(Integer.valueOf(Integer.parseInt(data
          .get("Number Of People"))));
    } else {
      // this patch is because in the process we currently use fire
      // intensity taken from nro of people :S
      emergency.setNroOfPeople(Integer.valueOf(Integer.parseInt(data
          .get("Intensity"))));
    }
    emergency.setType(data.get("Emergency Type"));
    emergency.setCall(callsById.get(data.get("callId")));
    new DistributedService().getDistributedService().storeEmergency(
        emergency);
    info.put("emergency", emergency);
    return info;
  }

}
TOP

Related Classes of com.wordpress.salaboy.emergencyservice.web.task.EmergencyOperatorController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.