@Override public void execute(ExecutionUnit unit) throws OperatorException { Logger logger = unit.getEnclosingOperator().getLogger(); if (logger.isLoggable(Level.FINE)) { logger.fine( "Executing subprocess " + unit.getEnclosingOperator().getName() + "." + unit.getName() + ". Execution order is: " + unit.getOperators()); } Enumeration<Operator> opEnum = unit.getOperatorEnumeration(); while (opEnum.hasMoreElements()) { // for (Operator operator : unit.getOperators()) { Operator operator = opEnum.nextElement(); operator.execute(); operator.freeMemory(); } }
private void cloneConnections( OutputPorts originalPorts, ExecutionUnit originalExecutionUnit, Map<String, Operator> clonedOperatorsByName) { for (OutputPort originalSource : originalPorts.getAllPorts()) { if (originalSource.isConnected()) { OutputPort mySource; if (originalPorts.getOwner().getOperator() == originalExecutionUnit.getEnclosingOperator()) { // this is an inner source mySource = getInnerSources().getPortByName(originalSource.getName()); if (mySource == null) { throw new RuntimeException( "Error during clone: Corresponding source for " + originalSource + " not found (no such inner source)."); } } else { // this is an output port Operator myOperator = clonedOperatorsByName.get( originalSource.getPorts().getOwner().getOperator().getName()); if (myOperator == null) { throw new RuntimeException( "Error during clone: Corresponding source for " + originalSource + " not found (no such operator)."); } mySource = myOperator.getOutputPorts().getPortByName(originalSource.getName()); if (mySource == null) { throw new RuntimeException( "Error during clone: Corresponding source for " + originalSource + " not found (no such output port)."); } } InputPort originalDestination = originalSource.getDestination(); InputPort myDestination; if (originalDestination.getPorts().getOwner().getOperator() == originalExecutionUnit.getEnclosingOperator()) { // this is an inner sink myDestination = getInnerSinks().getPortByName(originalDestination.getName()); if (myDestination == null) { throw new RuntimeException( "Error during clone: Corresponding destination for " + originalDestination + " not found (no such inner sink)."); } } else { // this is an input port Operator myOperator = clonedOperatorsByName.get( originalDestination.getPorts().getOwner().getOperator().getName()); if (myOperator == null) { throw new RuntimeException( "Error during clone: Corresponding destination for " + originalDestination + " not found (no such operator)."); } myDestination = myOperator.getInputPorts().getPortByName(originalDestination.getName()); if (myDestination == null) { throw new RuntimeException( "Error during clone: Corresponding destination for " + originalDestination + " not found (no such input port)."); } } mySource.connectTo(myDestination); } } }