public Command createCommand(JSONArray inputJson, String model, Workspace workspace) throws JSONException, KarmaException { /** Parse the input arguments and create proper data structues to be passed to the command **/ String hNodeID = CommandInputJSONUtil.getStringValue(Arguments.hNodeID.name(), inputJson); String worksheetId = CommandInputJSONUtil.getStringValue(Arguments.worksheetId.name(), inputJson); JSONArray rows = CommandInputJSONUtil.getJSONArrayValue(Arguments.rows.name(), inputJson); Map<String, String> rowValueMap = new HashMap<>(); for (int i=0; i<rows.length(); i++) { JSONObject rowObj = rows.getJSONObject(i); rowValueMap.put(rowObj.getString(Arguments.rowID.name()), rowObj.getString(Arguments.value.name())); } return new MultipleValueEditColumnCommand(getNewId(workspace), model, worksheetId, hNodeID, rowValueMap); }
@Override public UpdateContainer doIt(Workspace workspace) throws CommandException { final ServletContextParameterMap contextParameters = ContextParametersRegistry.getInstance().getContextParameters(workspace.getContextId()); Worksheet worksheet = workspace.getWorksheet(worksheetId); JSONArray transformedRows = new JSONArray(); JSONArray errorValues = new JSONArray(); PythonRepository repo = PythonRepositoryRegistry.getInstance().getPythonRepository(contextParameters.getParameterValue(ContextParameter.USER_PYTHON_SCRIPTS_DIRECTORY)); repo.resetLibrary(); boolean isError = false; try { generateTransformedValues(workspace, worksheet, workspace.getFactory(), workspace.getFactory().getHNode(hNodeId), transformedRows, errorValues, null); if (errorValues.length() > 0) { isError = true; } JSONArray multiCellEditInput = getMultiCellValueEditInputJSON(transformedRows, hNodeId); MultipleValueEditColumnCommandFactory mfc = new MultipleValueEditColumnCommandFactory(); MultipleValueEditColumnCommand mvecc = (MultipleValueEditColumnCommand) mfc.createCommand(multiCellEditInput, model, workspace); mvecc.doIt(workspace); }catch(Exception e) { isError = true; } worksheet.getMetadataContainer().getColumnMetadata().addColumnOnError(hNodeId, isError); UpdateContainer c = new UpdateContainer(); c.append(WorksheetUpdateFactory.createRegenerateWorksheetUpdates(worksheetId, getSuperSelection(worksheet), workspace.getContextId())); c.append(computeAlignmentAndSemanticTypesAndCreateUpdates(workspace)); return c; }
MultipleValueEditColumnCommandFactory mfc = (MultipleValueEditColumnCommandFactory) ctrl.getCommandFactoryMap().get(MultipleValueEditColumnCommand.class.getSimpleName()); MultipleValueEditColumnCommand mvecc = (MultipleValueEditColumnCommand) mfc.createCommand(multiCellEditInput, model, workspace); mvecc.doIt(workspace);