private String statusList(Map<String, String> parameters) throws Exception {
    WorkflowStatus[] list =
        studioController.getWorkflowStatuses(sessionUid, Long.parseLong(parameters.get("uid")));
    WorkflowStatusDefinition[] results = new WorkflowStatusDefinition[list.length];
    int ind = 0;
    for (WorkflowStatus it : list) {
      WorkflowStatusDefinition n = new WorkflowStatusDefinition();
      n.setPosition(ind);
      n.setWorkflowStatus(it);
      WorkflowStatusManager[] mn =
          studioController.getWorkflowStatusManagers(sessionUid, it.getUid());
      n.setWorkflowStatusManagers(mn);
      results[ind] = n;
      ind++;
    }
    XStream xml = new XStream(new DomDriver());
    XStream xstream =
        new XStream(
            new JettisonMappedXmlDriver() {

              public HierarchicalStreamWriter createWriter(Writer writer) {
                return new JsonWriter(writer, "".toCharArray(), "", JsonWriter.DROP_ROOT_MODE);
              }
            });
    xstream.aliasField(
        "securityEntityName", WorkflowStatusManager.class, "localSecurityEntityName");
    xstream.aliasField(
        "securityEntitySource", WorkflowStatusManager.class, "localSecurityEntitySource");
    xstream.aliasField(
        "securityEntityType", WorkflowStatusManager.class, "localSecurityEntityType");
    xstream.aliasField("workflowStatusUid", WorkflowStatusManager.class, "localWorkflowStatusUid");
    xstream.setMode(XStream.NO_REFERENCES);
    String jsonResp = xstream.toXML(results);
    return jsonResp;
  }
  private String updateWorflow(Map<String, String> parameters) throws Exception {
    ArrayList<Map<String, String>> statusList =
        (ArrayList<Map<String, String>>)
            new JSONDeserializer().deserialize(parameters.get("jsonParameters"));
    Vector<WorkflowStatusDefinition> statusDefinitionList = new Vector<WorkflowStatusDefinition>();

    for (Map statusMap : statusList) {
      long statusUid =
          statusMap.get("uid") != null ? Long.parseLong(String.valueOf(statusMap.get("uid"))) : -1;
      long successorUid =
          statusMap.get("successorUid") != null
              ? Long.parseLong(String.valueOf(statusMap.get("successorUid")))
              : -1;

      // WorkflowStatus

      WorkflowStatus status = new WorkflowStatus();
      status.setUid(statusUid);
      status.setName(String.valueOf(statusMap.get("name")));
      status.setSuccessorUid(successorUid);

      // WorkflowStatusManagers

      ArrayList<Map<String, String>> managersList =
          (ArrayList<Map<String, String>>) statusMap.get("managers");
      WorkflowStatusManager[] wsmTab = new WorkflowStatusManager[managersList.size()];
      for (int i = 0; i < managersList.size(); ++i) {
        Map managersMap = managersList.get(i);
        WorkflowStatusManager wsm = new WorkflowStatusManager();
        wsm.setSecurityEntityName(String.valueOf(managersMap.get("uid")));
        wsm.setSecurityEntitySource(String.valueOf(managersMap.get("source")));
        wsm.setSecurityEntityType(Integer.parseInt(String.valueOf(managersMap.get("type"))));
        wsmTab[i] = wsm;
      }

      WorkflowStatusDefinition statusDefinition = new WorkflowStatusDefinition();
      statusDefinition.setWorkflowStatus(status);
      statusDefinition.setWorkflowStatusManagers(wsmTab);

      statusDefinitionList.add(statusDefinition);
    }

    studioController.updateWorkflow(
        sessionUid,
        Long.parseLong(parameters.get("uid")),
        parameters.get("name"),
        parameters.get("description"),
        XMLGenerators.getWorkflowXMLDescriptor(-1, statusDefinitionList));
    return "";
  }
  /** @deprecated */
  private String createWorkflowStatus(Map<String, String> parameters) throws Exception {
    long workflowUid = Long.parseLong(parameters.get("workflowUid"));
    String workflowName = parameters.get("workflowName");
    String workflowDescription = parameters.get("workflowDescription");
    String statusName = parameters.get("statusName");

    //        Vector<WorkflowStatusDefinition> workflowStatus = new
    // Vector<WorkflowStatusDefinition>();
    //        XMLGenerators.getWorkflowXMLDescriptor(workflowUid, workflowStatus);

    String xmlStream = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
    xmlStream += "<workflow uid=\"" + workflowUid + "\">\n";
    for (WorkflowStatus ws : studioController.getWorkflowStatuses(sessionUid, workflowUid)) {
      xmlStream +=
          "<status uid=\"" + ws.getUid() + "\" successor-uid=\"" + ws.getSuccessorUid() + "\">";
      xmlStream += "<name>" + ws.getName() + "</name>\n";
      for (WorkflowStatusManager wsm :
          studioController.getWorkflowStatusManagers(sessionUid, ws.getUid())) {
        xmlStream +=
            "<manager type=\""
                + 1
                + "\" uid=\""
                + wsm.getSecurityEntityName()
                + "\" source=\""
                + wsm.getSecurityEntitySource()
                + "\" />";
      }
      xmlStream += "</status>\n";
    }
    xmlStream += "<status uid=\"-1\" successor-uid=\"-1\">";
    xmlStream += "<name>" + statusName + "</name>";
    xmlStream += "</status>\n";
    xmlStream += "</workflow>\n";

    studioController.updateWorkflow(
        sessionUid, workflowUid, workflowName, workflowDescription, xmlStream);
    return "";
  }