package edu.isi.karma.controller.command.alignment; import org.json.JSONArray; import edu.isi.karma.controller.command.CommandException; import edu.isi.karma.controller.command.CommandType; import edu.isi.karma.controller.command.WorksheetSelectionCommand; import edu.isi.karma.controller.update.UpdateContainer; import edu.isi.karma.controller.update.WorksheetUpdateFactory; import edu.isi.karma.rep.Workspace; public class AugmentDataDispachCommand extends WorksheetSelectionCommand { private String predicateIncoming, predicateOutgoing; private AugmentDataCommand incoming; private AugmentDataCommand outgoing; public AugmentDataDispachCommand(String id, String model, String dataRepoUrl, String worksheetId, String columnUri, String predicateIncoming, String otherClassIncoming, String predicateOutgoing, String otherClassOutgoing, String hNodeId, String sameAsPredicate, String selectionId) { super(id, model, worksheetId, selectionId); this.predicateIncoming = predicateIncoming; this.predicateOutgoing = predicateOutgoing; incoming = new AugmentDataCommand(id, model, dataRepoUrl, worksheetId, columnUri, predicateIncoming, otherClassIncoming, hNodeId, true, sameAsPredicate, selectionId); outgoing = new AugmentDataCommand(id, model, dataRepoUrl, worksheetId, columnUri, predicateOutgoing, otherClassOutgoing, hNodeId, false, sameAsPredicate, selectionId); addTag(CommandTag.Transformation); } @Override public String getCommandName() { // TODO Auto-generated method stub return this.getClass().getSimpleName(); } @Override public String getTitle() { // TODO Auto-generated method stub return "Augment Data"; } @Override public String getDescription() { // TODO Auto-generated method stub JSONArray predicatesarray = new JSONArray(predicateIncoming); StringBuilder builder = new StringBuilder(); boolean flag = false; if (predicatesarray.length() > 0) { for(int i = 0; i < predicatesarray.length() - 1; i++) builder.append(predicatesarray.getJSONObject(i).getString("predicate")).append(" "); builder.append(predicatesarray.getJSONObject(predicatesarray.length() - 1).getString("predicate")); flag = true; } predicatesarray = new JSONArray(predicateOutgoing); if (predicatesarray.length() > 0 && flag) builder.append(" "); if (predicatesarray.length() > 0) { for(int i = 0; i < predicatesarray.length() - 1; i++) builder.append(predicatesarray.getJSONObject(i).getString("predicate")).append(" "); builder.append(predicatesarray.getJSONObject(predicatesarray.length() - 1).getString("predicate")); } return builder.toString(); } @Override public CommandType getCommandType() { // TODO Auto-generated method stub return CommandType.undoable; } @Override public UpdateContainer doIt(Workspace workspace) throws CommandException { // TODO Auto-generated method stub UpdateContainer c = new UpdateContainer(); JSONArray predicatesincomingarray = new JSONArray(predicateIncoming); JSONArray predicatesoutgoingarray = new JSONArray(predicateOutgoing); if (predicatesincomingarray.length() > 0) incoming.doIt(workspace); if (predicatesoutgoingarray.length() > 0) outgoing.doIt(workspace); c.append(WorksheetUpdateFactory.createRegenerateWorksheetUpdates(worksheetId, getSuperSelection(workspace), workspace.getContextId())); c.append(computeAlignmentAndSemanticTypesAndCreateUpdates(workspace)); return c; } @Override public UpdateContainer undoIt(Workspace workspace) { UpdateContainer c = new UpdateContainer(); JSONArray predicatesincomingarray = new JSONArray(predicateIncoming); JSONArray predicatesoutgoingarray = new JSONArray(predicateOutgoing); if (predicatesincomingarray.length() > 0) incoming.undoIt(workspace); if (predicatesoutgoingarray.length() > 0) outgoing.undoIt(workspace); c.append(WorksheetUpdateFactory.createRegenerateWorksheetUpdates(worksheetId, getSuperSelection(workspace), workspace.getContextId())); c.append(computeAlignmentAndSemanticTypesAndCreateUpdates(workspace)); return c; } }