package edu.isi.karma.controller.command.transformation;
import edu.isi.karma.controller.command.Command;
import edu.isi.karma.controller.command.CommandException;
import edu.isi.karma.controller.command.ICommand;
import edu.isi.karma.controller.history.CommandConsolidator;
import edu.isi.karma.controller.history.HistoryJsonUtil;
import edu.isi.karma.controller.history.WorksheetCommandHistoryExecutor;
import edu.isi.karma.rep.Workspace;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class PyTransformConsolidator extends CommandConsolidator {
@Override
public Pair<ICommand, Object> consolidateCommand(List<ICommand> commands, ICommand newCommand, Workspace workspace) {
if (newCommand instanceof SubmitEditPythonTransformationCommand) {
Iterator<ICommand> itr = commands.iterator();
String model = newCommand.getModel();
while(itr.hasNext()) {
ICommand tmp = itr.next();
if (((Command)tmp).getOutputColumns().equals(((Command)newCommand).getOutputColumns())
&& tmp instanceof SubmitPythonTransformationCommand
&& !(tmp instanceof SubmitEditPythonTransformationCommand)
&& model.equals(tmp.getModel())) {
SubmitPythonTransformationCommand py = (SubmitPythonTransformationCommand)tmp;
SubmitPythonTransformationCommand edit = (SubmitPythonTransformationCommand)newCommand;
JSONArray inputJSON = new JSONArray(py.getInputParameterJson());
JSONArray oldInputJSON = new JSONArray(py.getInputParameterJson());
HistoryJsonUtil.setArgumentValue("transformationCode", edit.getTransformationCode(), inputJSON);
py.setInputParameterJson(inputJSON.toString());
py.setTransformationCode(edit.getTransformationCode());
return new ImmutablePair<>(tmp, (Object)oldInputJSON);
}
}
}
return null;
}
}