public Optional<Result> execute( List<RowMetaAndData> rows ) throws KettleException { if ( rows.isEmpty() || stopped ) { return Optional.empty(); } Trans subtrans = this.createSubtrans(); running.add( subtrans ); parentTrans.addActiveSubTransformation( subTransName, subtrans ); // Pass parameter values passParametersToTrans( subtrans, rows.get( 0 ) ); Result result = new Result(); result.setRows( rows ); subtrans.setPreviousResult( result ); subtrans.prepareExecution( this.parentTrans.getArguments() ); List<RowMetaAndData> rowMetaAndData = new ArrayList<>(); subtrans.getSteps().stream() .filter( c -> c.step.getStepname().equalsIgnoreCase( subStep ) ) .findFirst() .ifPresent( c -> c.step.addRowListener( new RowAdapter() { @Override public void rowWrittenEvent( RowMetaInterface rowMeta, Object[] row ) { rowMetaAndData.add( new RowMetaAndData( rowMeta, row ) ); } } ) ); subtrans.startThreads(); subtrans.waitUntilFinished(); updateStatuses( subtrans ); running.remove( subtrans ); Result subtransResult = subtrans.getResult(); subtransResult.setRows( rowMetaAndData ); return Optional.of( subtransResult ); }
case TYPE_SYSTEM_INFO_ARGUMENT_10: argnr = meta.getFieldType()[i].ordinal() - SystemDataTypes.TYPE_SYSTEM_INFO_ARGUMENT_01.ordinal(); if ( getTrans().getArguments() != null && argnr < getTrans().getArguments().length ) { row[index] = getTrans().getArguments()[argnr]; } else { row[index] = null;
@SuppressWarnings ( "deprecation" ) private void checkCompatibility() { // If we don't have a previous result and transMeta does have one, someone has been using a deprecated method. // if ( transMeta.getPreviousResult() != null && getPreviousResult() == null ) { setPreviousResult( transMeta.getPreviousResult() ); } // If we don't have arguments set and TransMeta has, someone has been using a deprecated method. // if ( transMeta.getArguments() != null && getArguments() == null ) { setArguments( transMeta.getArguments() ); } }
@VisibleForTesting Trans createInternalTrans() throws KettleException { Trans executorTrans = new Trans( getData().getExecutorTransMeta(), this ); executorTrans.setParentTrans( getTrans() ); executorTrans.setRepository( getTrans().getRepository() ); executorTrans.setLogLevel( getLogLevel() ); executorTrans.setArguments( getTrans().getArguments() ); executorTrans.setInternalKettleVariables( this ); executorTrans.setPreview( getTrans().isPreview() ); TransStepUtil.initServletConfig( getTrans(), executorTrans ); return executorTrans; }
private Trans createSubtrans() { Trans subTrans = new Trans( this.subtransMeta, this.parentTrans ); subTrans.setParentTrans( this.parentTrans ); subTrans.setRepository( this.parentTrans.getRepository() ); subTrans.setLogLevel( this.parentTrans.getLogLevel() ); subTrans.setArguments( this.parentTrans.getArguments() ); if ( this.shareVariables ) { subTrans.shareVariablesWith( this.parentTrans ); } subTrans.setInternalKettleVariables( this.parentTrans ); subTrans.copyParametersFrom( this.subtransMeta ); subTrans.setPreview( this.parentTrans.isPreview() ); TransStepUtil.initServletConfig( this.parentTrans, subTrans ); return subTrans; }
executorTrans.prepareExecution( getTrans().getArguments() );
if ( getArguments() != null ) { if ( log.isDetailed() ) { log.logDetailed( BaseMessages.getString( PKG, "Trans.Log.NumberOfArgumentsDetected", String.valueOf( getArguments().length ) ) );
data.executorJob.setInternalKettleVariables( this ); data.executorJob.copyParametersFrom( data.executorJobMeta ); data.executorJob.setArguments( getTrans().getArguments() );
simpleMappingData.mappingTrans.prepareExecution( getTrans().getArguments() ); } catch ( KettleException e ) { throw new KettleException( BaseMessages.getString( PKG,
mappingData.getMappingTrans().prepareExecution( getTrans().getArguments() ); } catch ( KettleException e ) { throw new KettleException( BaseMessages.getString( PKG, "Mapping.Exception.UnableToPrepareExecutionOfMapping" ),
protected void prepareTransform( Trans trans, final IPentahoSession session ) throws KettleException { trans.prepareExecution( trans.getArguments() );