protected Edit<?> makeInsertNestedWorkflowEdit(Dataflow nestedFlow, String name) { List<Edit<?>> editList = new ArrayList<Edit<?>>(); insertedActivity = new DataflowActivity(); editList.add(edits.getConfigureActivityEdit(insertedActivity, nestedFlow)); Processor p = edits.createProcessor(name); editList.add(edits.getDefaultDispatchStackEdit(p)); editList.add(edits.getAddActivityEdit(p, insertedActivity)); editList.add(edits.getAddProcessorEdit(destinationDataflow, p)); CompoundEdit edit = new CompoundEdit(editList); return edit; }
public static Processor pasteProcessor(final Element e, final Dataflow d) throws ActivityConfigurationException, Exception, ClassNotFoundException, InstantiationException, IllegalAccessException, DeserializationException { final Processor result = ProcessorXMLDeserializer.getInstance() .deserializeProcessor(e, requiredSubworkflows); if (result == null) { return null; } String newName = uniqueProcessorName(result.getLocalName(), d); List<Edit<?>> editList = new ArrayList<Edit<?>>(); if (!newName.equals(result.getLocalName())) { Edit<?> renameEdit = edits.getRenameProcessorEdit(result, newName); editList.add(renameEdit); } Edit<?> edit = edits.getAddProcessorEdit(d, result); editList.add(edit); em.doDataflowEdit(d, new CompoundEdit(editList)); return result; }
editList.add(edits.getAddProcessorEdit(dataflow, p)); editManager .doDataflowEdit(dataflow, new CompoundEdit(editList));
private void createNestedWorkflow(ActionEvent e) { final List<Edit<?>> currentWorkflowEditList = new ArrayList<Edit<?>>(); Map<Object, Object> oldNewMapping = new HashMap<Object, Object>(); Map<Datalink, String> linkProcessorPortMapping = new HashMap<Datalink, String>(); Map<EventForwardingOutputPort, DataflowOutputPort> outputPortMap = new HashMap<EventForwardingOutputPort, DataflowOutputPort>(); Map<EventHandlingInputPort, DataflowInputPort> inputPortMap = new HashMap<EventHandlingInputPort, DataflowInputPort>(); Processor nestingProcessor = createNestingProcessor(currentWorkflowEditList); Dataflow nestedDataflow = createNestedDataflow(e); transferProcessors(currentWorkflowEditList, oldNewMapping, nestedDataflow); transferDatalinks(oldNewMapping, linkProcessorPortMapping, outputPortMap, inputPortMap, nestedDataflow); transferConditions(currentWorkflowEditList, oldNewMapping, nestingProcessor); addDataflowToNestingProcessor(nestingProcessor, nestedDataflow); currentWorkflowEditList.add(edits.getAddProcessorEdit(currentDataflow, nestingProcessor)); createDatalinkEdits(currentWorkflowEditList, oldNewMapping, linkProcessorPortMapping, nestingProcessor); try { GraphController gc = graphControllerMap.get(currentDataflow); gc.setExpandNestedDataflow(nestedDataflow, true); em.doDataflowEdit(currentDataflow, new CompoundEdit( currentWorkflowEditList)); gc.redraw(); } catch (EditException e1) { logger.error("failed to manufacture nested workflow", e1); } }
Processor p = ProcessorXMLDeserializer.getInstance().deserializeProcessor(procElement,innerDataflowElements); createdProcessors.put(p.getLocalName(),p); edits.getAddProcessorEdit(df, p).doEdit();
editList.add(addActivityToProcessorEdit); editList.add(edits.getAddProcessorEdit(dataflow, sinkProcessor));
Processor p = ProcessorXMLDeserializer.getInstance().deserializeProcessor(procElement,innerDataflowElements); createdProcessors.put(p.getLocalName(),p); edits.getAddProcessorEdit(df, p).doEdit();
editList.add(addActivityToProcessorEdit); editList.add(edits.getAddProcessorEdit(dataflow, sinkProcessor));
editList.add(edits.getAddProcessorEdit(currentDataflow, p)); Edit insertionEdit = sd.getInsertionEdit(currentDataflow, p, activity); if (insertionEdit != null) {
editList.add(edits.getAddProcessorEdit( dataflow, sourceProcessor));
editList.add(edits.getAddProcessorEdit(dataflow, sourceProcessor));
edits.getAddProcessorEdit(dataflow, t2Processor).doEdit(); processorMap.put(t1Processor, t2Processor);
edits.getAddProcessorEdit(dataflow, t2Processor).doEdit(); processorMap.put(t1Processor, t2Processor);
editList.add(addActivityToProcessorEdit); editList.add(edits.getAddProcessorEdit(dataflow, sinkProcessor));
editList.add(addActivityToProcessorEdit); editList.add(edits.getAddProcessorEdit(dataflow, sourceProcessor));
@Before public void makeDataflow() throws EditException { List<Edit<?>> compoundEdit = new ArrayList<Edit<?>>(); dataflow = fileManager.newDataflow(); Edits edits = EditsRegistry.getEdits(); proc1 = edits.createProcessor("processor1"); compoundEdit.add(edits.getAddProcessorEdit(dataflow, proc1)); Processor proc2 = edits.createProcessor("processor2"); compoundEdit.add(edits.getAddProcessorEdit(dataflow, proc2)); ProcessorInputPort in1 = edits.createProcessorInputPort(proc1, "in1", 0); compoundEdit.add(edits.getAddProcessorInputPortEdit(proc1, in1)); ProcessorInputPort in2 = edits .createProcessorInputPort(proc1, "in2", 0); compoundEdit.add(edits.getAddProcessorInputPortEdit(proc1, in2)); Activity<EchoConfig> activity = new AsynchEchoActivity(); compoundEdit.add(edits.getConfigureActivityEdit(activity, new EchoConfig())); compoundEdit.add(edits.getAddActivityEdit(proc1, activity)); compoundEdit.add(edits.getDefaultDispatchStackEdit(proc1)); editManager.doDataflowEdit(dataflow, new CompoundEdit(compoundEdit)); activityInputPort = activity.getInputPorts().iterator().next(); } }
@Test public void extraUndoesDoesNotFail() throws Exception { EditManager editManager = EditManager.getInstance(); editManager.addObserver(editManagerObserver); Edits edits = editManager.getEdits(); Edit<Dataflow> edit = edits.getAddProcessorEdit(dataflow, processor); editManager.doDataflowEdit(dataflow, edit); assertFalse("Did not add processor", dataflow.getProcessors().isEmpty()); editManager.undoDataflowEdit(dataflow); assertTrue("Did not undo add processor", dataflow.getProcessors() .isEmpty()); editManager.undoDataflowEdit(dataflow); }
@Test public void undoAddProcessor() throws Exception { EditManager editManager = EditManager.getInstance(); editManager.addObserver(editManagerObserver); Edits edits = editManager.getEdits(); Edit<Dataflow> edit = edits.getAddProcessorEdit(dataflow, processor); editManager.doDataflowEdit(dataflow, edit); assertFalse("Did not add processor", dataflow.getProcessors().isEmpty()); editManager.undoDataflowEdit(dataflow); assertTrue("Did not undo add processor", dataflow.getProcessors() .isEmpty()); // Should have received the undo event assertEquals("Incorrect number of events", 2, editManagerObserver.events.size()); EditManagerEvent event = editManagerObserver.events.get(1); assertTrue("Event was not a DataflowEditEvent", event instanceof DataFlowUndoEvent); DataFlowUndoEvent dataEditEvent = (DataFlowUndoEvent) event; assertEquals("Event did not have correct dataflow", dataflow, dataEditEvent.getDataFlow()); assertEquals("Event did not have correct edit", edit, dataEditEvent .getEdit()); assertFalse("Edit was still applied", edit.isApplied()); }
@Test public void addProcessor() throws Exception { EditManager editManager = EditManager.getInstance(); editManager.addObserver(editManagerObserver); Edits edits = editManager.getEdits(); Edit<Dataflow> edit = edits.getAddProcessorEdit(dataflow, processor); assertFalse("Edit was already applied", edit.isApplied()); assertTrue("Did already add processor", dataflow.getProcessors() .isEmpty()); editManager.doDataflowEdit(dataflow, edit); assertTrue("Edit was not applied", edit.isApplied()); assertEquals("Did not add processor", processor, dataflow .getProcessors().get(0)); // Should have received the edit event assertEquals("Incorrect number of events", 1, editManagerObserver.events.size()); EditManagerEvent event = editManagerObserver.events.get(0); assertTrue("Event was not a DataflowEditEvent", event instanceof DataflowEditEvent); DataflowEditEvent dataEditEvent = (DataflowEditEvent) event; assertEquals("Event did not have correct dataflow", dataflow, dataEditEvent.getDataFlow()); assertEquals("Event did not have correct edit", edit, dataEditEvent .getEdit()); }
private void makeProcessor() throws EditException { processor = edits.createProcessor("Hello"); Edit<Dataflow> edit = edits.getAddProcessorEdit(currentDataflow, processor); editManager.doDataflowEdit(currentDataflow, edit); editManager.doDataflowEdit(currentDataflow, edits .getDefaultDispatchStackEdit(processor)); BeanshellActivity beanshell = new BeanshellActivity(); BeanshellActivityConfigurationBean beanshellConfig = new BeanshellActivityConfigurationBean(); editManager.doDataflowEdit(currentDataflow, edits .getConfigureActivityEdit(beanshell, beanshellConfig)); editManager.doDataflowEdit(currentDataflow, edits.getAddActivityEdit( processor, beanshell)); }