package org.batfish.common;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.UUID;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
public class WorkItem {
public static WorkItem FromJsonString(String jsonString)
throws JSONException {
JSONArray array = new JSONArray(jsonString);
UUID id = UUID.fromString(array.get(0).toString());
String containerName = array.get(1).toString();
String testrigName = array.get(2).toString();
HashMap<String, String> requestParams = new HashMap<>();
HashMap<String, String> responseParams = new HashMap<>();
JSONObject requestObject = new JSONObject(array.get(3).toString());
JSONObject responseObject = new JSONObject(array.get(4).toString());
PopulateHashMap(requestParams, requestObject);
PopulateHashMap(responseParams, responseObject);
return new WorkItem(id, containerName, testrigName, requestParams,
responseParams);
}
private static void PopulateHashMap(HashMap<String, String> map,
JSONObject jsonObject) throws JSONException {
Iterator<?> keys = jsonObject.keys();
while (keys.hasNext()) {
String key = (String) keys.next();
map.put(key, jsonObject.getString(key));
}
}
private String _containerName;
private UUID _id;
private HashMap<String, String> _requestParams;
private HashMap<String, String> _responseParams;
private String _testrigName;
public WorkItem(String containerName, String testrigName) {
_id = UUID.randomUUID();
_containerName = containerName;
_testrigName = testrigName;
_requestParams = new HashMap<>();
_responseParams = new HashMap<>();
}
public WorkItem(UUID id, String containerName, String testrigName,
HashMap<String, String> reqParams, HashMap<String, String> resParams) {
_id = id;
_containerName = containerName;
_testrigName = testrigName;
_requestParams = reqParams;
_responseParams = resParams;
}
public void addRequestParam(String key, String value) {
_requestParams.put(key, value);
}
public String getContainerName() {
return _containerName;
}
public UUID getId() {
return _id;
}
public HashMap<String, String> getRequestParams() {
return _requestParams;
}
public String getTestrigName() {
return _testrigName;
}
public void setId(String idString) {
_id = UUID.fromString(idString);
}
public String toJsonString() {
JSONObject requestObject = new JSONObject(_requestParams);
JSONObject responseObject = new JSONObject(_responseParams);
JSONArray array = new JSONArray(Arrays.asList(_id, _containerName,
_testrigName, requestObject.toString(), responseObject.toString()));
return array.toString();
}
public JSONObject toTask() {
return new JSONObject(_requestParams);
}
}