protected AddColumnCommand(String id, String model, String worksheetId, String hTableId, String hNodeId, String newColumnName, String defaultValue, String selectionId) { super(id, model, worksheetId, selectionId); this.hNodeId = hNodeId; this.hTableId = hTableId; this.newColumnName=newColumnName; this.defaultValue = defaultValue; this.newColumnAbsoluteName = newColumnName; addTag(CommandTag.Transformation); }
@Override public Set<String> getOutputColumns() { if (addColCmd != null) outputColumns.add(addColCmd.getNewHNodeId()); else outputColumns.add(pythonNodeId); return outputColumns; } }
addColCmd = (AddColumnCommand) addColumnFac.createCommand( addColumnInput, this.model, workspace); addColCmd.saveInHistory(false); addColCmd.setExecutedInBatch(this.isExecutedInBatch()); addColCmd.doIt(workspace); pythonNodeId = addColCmd.getNewHNodeId(); else if(null == hTable.getHNode(addColCmd.getNewHNodeId())) addColCmd.doIt(workspace); HNode newNode = f.getHNode(addColCmd.getNewHNodeId()); newColumnAbsoluteName = newNode.getAbsoluteColumnName(f); UpdateContainer c = applyPythonTransformation(workspace, worksheet, f, hNode, ctrl, addColCmd.getNewHNodeId()); if (isJSONOutput) { Map<String, String> mapping = gatherTransformedResults(workspace, addColCmd.getNewHNodeId()); handleJSONOutput(workspace, mapping, workspace.getFactory().getHNode(addColCmd.getNewHNodeId())); addColCmd.undoIt(workspace); logger.error("Error occured during python transformation.",e); return new UpdateContainer(new ErrorUpdate("Error occured while creating applying Python transformation to the column."));
populateRowsWithDefaultValues(worksheet, workspace.getFactory()); c.append(WorksheetUpdateFactory.createRegenerateWorksheetUpdates(worksheetId, getSuperSelection(worksheet), workspace.getContextId())); c.append(computeAlignmentAndSemanticTypesAndCreateUpdates(workspace)); outputColumns.add(newHNodeId); newColumnAbsoluteName = ndid.getAbsoluteColumnName(workspace.getFactory());
@Override public Command createCommand(JSONArray inputJson, String model, Workspace workspace) throws JSONException, KarmaException { /** Parse the input arguments and create proper data structures to be passed to the command **/ String hNodeID = CommandInputJSONUtil.getStringValue(Arguments.hNodeId.name(), inputJson); String worksheetId = CommandInputJSONUtil.getStringValue(Arguments.worksheetId.name(), inputJson); String hTableId = CommandInputJSONUtil.getStringValue(Arguments.hTableId.name(), inputJson); String newColumnName = CommandInputJSONUtil.getStringValue(Arguments.newColumnName.name(), inputJson); String defaultValue = CommandInputJSONUtil.getStringValue(Arguments.defaultValue.name(), inputJson); this.normalizeSelectionId(worksheetId, inputJson, workspace); String selectionName = CommandInputJSONUtil.getStringValue(Arguments.selectionName.name(), inputJson); AddColumnCommand colCmd = new AddColumnCommand(getNewId(workspace), model, worksheetId, hTableId, hNodeID, newColumnName, defaultValue, selectionName ); colCmd.setInputParameterJson(inputJson.toString()); return colCmd; }
private void populateRowsWithDefaultValues(Worksheet worksheet, RepFactory factory) { SuperSelection selection = getSuperSelection(worksheet); HNodePath selectedPath = null; List<HNodePath> columnPaths = worksheet.getHeaders().getAllPaths(); for (HNodePath path : columnPaths) { if (path.getLeaf().getId().equals(newHNodeId)) { selectedPath = path; } } Collection<Node> nodes = new ArrayList<>(Math.max(1000, worksheet.getDataTable().getNumRows())); worksheet.getDataTable().collectNodes(selectedPath, nodes, selection); for (Node node : nodes) { node.setValue(this.defaultValue, NodeStatus.original, factory); } }
@Override public Command createCommand(HttpServletRequest request, Workspace workspace) { String hNodeId = request.getParameter(Arguments.hNodeId.name()); String hTableId = request.getParameter(Arguments.hTableId.name()); String newColumnName = request.getParameter(Arguments.newColumnName.name()); String worksheetId = request.getParameter(Arguments.worksheetId.name()); String defaultValue = request.getParameter(Arguments.defaultValue.name()); String selectionName = request.getParameter(Arguments.selectionName.name()); return new AddColumnCommand(getNewId(workspace), Command.NEW_MODEL, worksheetId, hTableId, hNodeId, newColumnName, defaultValue, selectionName); }
@Override public UpdateContainer undoIt(Workspace workspace) { Worksheet worksheet = workspace.getWorksheet(worksheetId); HTable currentTable = workspace.getFactory().getHTable(hTableId); //remove the new column currentTable.removeHNode(newHNodeId, worksheet); return WorksheetUpdateFactory.createRegenerateWorksheetUpdates(worksheetId, getSuperSelection(worksheet), workspace.getContextId()); }