package edu.isi.karma.controller.command; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import edu.isi.karma.controller.command.selection.SuperSelection; import edu.isi.karma.controller.history.HistoryJsonUtil.ParameterType; import edu.isi.karma.rep.Worksheet; import edu.isi.karma.rep.Workspace; import edu.isi.karma.util.CommandInputJSONUtil; import edu.isi.karma.webserver.KarmaException; public abstract class JSONInputCommandFactory extends CommandFactory { private enum Arguments { selectionName } @Override public abstract Command createCommand(JSONArray inputJson, String model, Workspace workspace) throws JSONException, KarmaException; //TODO For backward compatibility protected void normalizeSelectionId(String worksheetId, JSONArray inputJson, Workspace workspace) { Worksheet worksheet = workspace.getWorksheet(worksheetId); String selectionName = CommandInputJSONUtil.getStringValue(Arguments.selectionName.name(), inputJson); if (worksheet == null) return; SuperSelection sel = worksheet.getSuperSelectionManager().getSuperSelection(selectionName); JSONObject obj = CommandInputJSONUtil.getJSONObjectWithName(selectionName, inputJson); if (obj != null) obj.put("value", sel.getName()); else CommandInputJSONUtil.createJsonObject(Arguments.selectionName.name(), sel.getName(), ParameterType.other); } }