if ( ioMetaVar != null ) { StepIOMetaInterface stepIOMeta = new StepIOMeta( ioMetaVar.isInputAcceptor(), ioMetaVar.isOutputProducer(), ioMetaVar.isInputOptional(), ioMetaVar.isSortedDataRequired(), ioMetaVar.isInputDynamic(), ioMetaVar.isOutputDynamic() ); List<StreamInterface> infoStreams = ioMetaVar.getInfoStreams(); for ( StreamInterface infoStream : infoStreams ) { stepIOMeta.addStream( new Stream( infoStream ) ); List<StreamInterface> targetStreams = ioMetaVar.getTargetStreams(); for ( StreamInterface targetStream : targetStreams ) { stepIOMeta.addStream( new Stream( targetStream ) );
public String[] getInfoSteps() { String[] infoSteps = getStepIOMeta().getInfoStepnames(); // Return null instead of empty array to preserve existing behavior return infoSteps.length == 0 ? null : infoSteps; }
@Override public void searchInfoAndTargetSteps( List<StepMeta> steps ) { StepIOMetaInterface ioMeta = getStepIOMeta(); ioMeta.getInfoStreams().clear(); for ( int i = 0; i < inputSteps.length; i++ ) { String inputStepName = inputSteps[i]; if ( i >= ioMeta.getInfoStreams().size() ) { ioMeta.addStream( new Stream( StreamType.INFO, StepMeta.findStep( steps, inputStepName ), BaseMessages.getString( PKG, "MultiMergeJoin.InfoStream.Description" ), StreamIcon.INFO, inputStepName ) ); } } }
/** * For compatibility, wraps around the standard step IO metadata * * @return The step where you read lookup data from */ public StepMeta getLookupFromStep() { return getStepIOMeta().getInfoStreams().get( 0 ).getStepMeta(); } }
@Override public int hashCode() { return Objects.hash( getStepIOMeta().getTargetStreams(), condition ); }
List<StreamInterface> targetStreams = fromIoMeta.getTargetStreams(); if ( forward ) { streams.addAll( targetStreams ); List<StreamInterface> infoStreams = toIoMeta.getInfoStreams(); if ( !forward ) { streams.addAll( infoStreams ); if ( fromIoMeta.isOutputProducer() && toStep.equals( currentStep ) ) { streams.add( new Stream( StreamType.OUTPUT, fromStep, BaseMessages .getString( PKG, "Spoon.Hop.MainOutputOfStep" ), StreamIcon.OUTPUT, null ) ); if ( toIoMeta.isInputAcceptor() && fromStep.equals( currentStep ) ) { streams.add( new Stream( StreamType.INPUT, toStep, BaseMessages.getString( PKG, "Spoon.Hop.MainInputOfStep" ), StreamIcon.INPUT, null ) );
public static StepIOMetaInterface getStepIOMeta( UserDefinedJavaClassMeta meta ) { StepIOMetaInterface ioMeta = new StepIOMeta( true, true, true, false, true, true ); for ( InfoStepDefinition stepDefinition : meta.getInfoStepDefinitions() ) { ioMeta.addStream( new Stream( StreamType.INFO, stepDefinition.stepMeta, stepDefinition.description, StreamIcon.INFO, null ) ); } for ( TargetStepDefinition stepDefinition : meta.getTargetStepDefinitions() ) { ioMeta.addStream( new Stream( StreamType.TARGET, stepDefinition.stepMeta, stepDefinition.description, StreamIcon.TARGET, null ) ); } return ioMeta; }
switch ( i ) { case 0: // INPUT enabled = ioMeta.isInputAcceptor() || ioMeta.isInputDynamic(); areaOwners.add( new AreaOwner( AreaType.STEP_INPUT_HOP_ICON, translateTo1To1( xIcon ), translateTo1To1( yIcon ), translateTo1To1( bounds.x ), translateTo1To1( bounds.y ), offset, stepMeta, break; case 3: // OUTPUT enabled = ioMeta.isOutputProducer() || ioMeta.isOutputDynamic(); areaOwners.add( new AreaOwner( AreaType.STEP_OUTPUT_HOP_ICON, translateTo1To1( xIcon ), translateTo1To1( yIcon ), translateTo1To1( bounds.x ), translateTo1To1( bounds.y ), offset, stepMeta, List<StreamInterface> targetStreams = ioMeta.getTargetStreams(); int targetsWidth = 0; int targetsHeight = 0;
for ( StreamInterface stream : fromIo.getTargetStreams() ) { if ( stream.getStepMeta() != null && stream.getStepMeta().equals( toStep ) ) { for ( StreamInterface stream : toIo.getInfoStreams() ) { if ( stream.getStepMeta() != null && stream.getStepMeta().equals( fromStep ) ) {
if ( ioMeta.isInputAcceptor() ) { candidate = new TransHopMeta( startHopStep, stepMeta ); endHopLocation = null; if ( ioMeta.isOutputProducer() ) { candidate = new TransHopMeta( stepMeta, endHopStep ); endHopLocation = null;
Const.indexOfString( ts.getName(), fs.getStepMetaInterface().getStepIOMeta().getTargetStepnames() ) >= 0; StreamInterface targetStream = ioMeta.findTargetStream( ts ); if ( targetStream != null ) { EImage hopsIcon = BasePainter.getStreamIconImage( targetStream.getStreamIcon() ); String[] infoStepnames = ioMeta.getInfoStepnames();
masterTargetStep.getStepMetaInterface().getStepIOMeta().getInfoStepnames(); if ( infoStepNames != null ) { StepMeta[] is = new StepMeta[infoStepNames.length]; masterTargetStep.getStepMetaInterface().getStepIOMeta().setInfoSteps( infoSteps ); String[] infoStepNames = slaveStep.getStepMetaInterface().getStepIOMeta().getInfoStepnames(); if ( infoStepNames != null ) { StepMeta[] is = new StepMeta[infoStepNames.length]; slaveStep.getStepMetaInterface().getStepIOMeta().setInfoSteps( infoSteps ); TransMeta slave = getSlaveTransformation( clusterSchema, slaveServer ); StepMeta slaveStep = slave.findStep( originalStep.getName() ); String[] infoStepNames = slaveStep.getStepMetaInterface().getStepIOMeta().getInfoStepnames(); if ( infoStepNames != null ) { StepMeta[] is = new StepMeta[infoStepNames.length]; slaveStep.getStepMetaInterface().getStepIOMeta().setInfoSteps( infoSteps );
private boolean checkNumberOfCopies( TransMeta transMeta, StepMeta stepMeta ) { boolean enabled = true; List<StepMeta> prevSteps = transMeta.findPreviousSteps( stepMeta ); for ( StepMeta prevStep : prevSteps ) { // See what the target steps are. // If one of the target steps is our original step, we can't start multiple copies // String[] targetSteps = prevStep.getStepMetaInterface().getStepIOMeta().getTargetStepnames(); if ( targetSteps != null ) { for ( int t = 0; t < targetSteps.length && enabled; t++ ) { if ( !Utils.isEmpty( targetSteps[ t ] ) && targetSteps[ t ].equalsIgnoreCase( stepMeta.getName() ) ) { enabled = false; } } } } return enabled; }
/** * For compatibility, wraps around the standard step IO metadata * * @param stepMeta * The step where you read lookup data from */ public void setLookupFromStep( StepMeta stepMeta ) { getStepIOMeta().getInfoStreams().get( 0 ).setStepMeta( stepMeta ); }
private String getTargetStepName( int streamIndex ) { StreamInterface stream = getStepIOMeta().getTargetStreams().get( streamIndex ); return java.util.stream.Stream.of( stream.getStepname(), stream.getSubject() ) .filter( Objects::nonNull ) .findFirst().map( Object::toString ).orElse( null ); }
@Override public StepIOMetaInterface getStepIOMeta() { StepIOMetaInterface ioMeta = super.getStepIOMeta( false ); if ( ioMeta == null ) { ioMeta = new StepIOMeta( true, true, true, false, true, false ); ioMeta.addStream( new Stream( StreamType.TARGET, executionResultTargetStepMeta, BaseMessages.getString( PKG, "TransExecutorMeta.ResultStream.Description" ), StreamIcon.TARGET, null ) ); ioMeta.addStream( new Stream( StreamType.TARGET, outputRowsSourceStepMeta, BaseMessages.getString( PKG, "TransExecutorMeta.ResultRowsStream.Description" ), StreamIcon.TARGET, null ) ); ioMeta.addStream( new Stream( StreamType.TARGET, resultFilesTargetStepMeta, BaseMessages.getString( PKG, "TransExecutorMeta.ResultFilesStream.Description" ), StreamIcon.TARGET, null ) ); ioMeta.addStream( new Stream( StreamType.TARGET, executorsOutputStepMeta, BaseMessages.getString( PKG, "TransExecutorMeta.ExecutorOutputStream.Description" ), StreamIcon.OUTPUT, null ) ); setStepIOMeta( ioMeta ); } return ioMeta; }
public Object clone() { MergeJoinMeta retval = (MergeJoinMeta) super.clone(); int nrKeys1 = keyFields1.length; int nrKeys2 = keyFields2.length; retval.allocate( nrKeys1, nrKeys2 ); System.arraycopy( keyFields1, 0, retval.keyFields1, 0, nrKeys1 ); System.arraycopy( keyFields2, 0, retval.keyFields2, 0, nrKeys2 ); StepIOMetaInterface stepIOMeta = new StepIOMeta( true, true, false, false, false, false ); List<StreamInterface> infoStreams = getStepIOMeta().getInfoStreams(); for ( StreamInterface infoStream : infoStreams ) { stepIOMeta.addStream( new Stream( infoStream ) ); } retval.setStepIOMeta( stepIOMeta ); return retval; }
assertEquals( ioMeta.isInputAcceptor(), cloneIOMeta.isInputAcceptor() ); assertEquals( ioMeta.isInputDynamic(), cloneIOMeta.isInputDynamic() ); assertEquals( ioMeta.isInputOptional(), cloneIOMeta.isInputOptional() ); assertEquals( ioMeta.isOutputDynamic(), cloneIOMeta.isOutputDynamic() ); assertEquals( ioMeta.isOutputProducer(), cloneIOMeta.isOutputProducer() ); assertEquals( ioMeta.isSortedDataRequired(), cloneIOMeta.isSortedDataRequired() ); assertNotNull( cloneIOMeta.getInfoStreams() ); assertEquals( 0, cloneIOMeta.getInfoStreams().size() );
public String getXML() { StringBuilder retval = new StringBuilder(); List<StreamInterface> infoStreams = getStepIOMeta().getInfoStreams(); retval.append( XMLHandler.addTagValue( "head_name", infoStreams.get( 0 ).getStepname() ) ); retval.append( XMLHandler.addTagValue( "tail_name", infoStreams.get( 1 ).getStepname() ) ); return retval.toString(); }
public String getXML() { StringBuilder retval = new StringBuilder(); List<StreamInterface> targetStreams = getStepIOMeta().getTargetStreams(); retval.append( XMLHandler.addTagValue( "send_true_to", targetStreams.get( 0 ).getStepname() ) ); retval.append( XMLHandler.addTagValue( "send_false_to", targetStreams.get( 1 ).getStepname() ) ); retval.append( XMLHandler.addTagValue( "condition", condition ) ); return retval.toString(); }