/** * Get the list of previous steps for a certain reference step. This includes the info steps. * * @param stepMeta * The reference step * @return The list of the preceding steps, including the info steps. */ public List<StepMeta> findPreviousSteps( StepMeta stepMeta ) { return findPreviousSteps( stepMeta, true ); }
private boolean isInputStep( StepMetaDataCombi combi ) { checkNotNull( combi ); return transMeta.findPreviousSteps( combi.stepMeta, true ).size() == 0; }
prevSteps = findPreviousSteps( previousStepMeta ); prevCount++; previousCache.put( previousStepMeta, prevSteps );
prevSteps = findPreviousSteps( stepMeta ); prevCount++; previousCache.put( stepMeta, prevSteps );
List<StepMeta> prevSteps = findPreviousSteps( stepMeta, true ); int nr = prevSteps.size(); for ( int i = 0; i < nr; i++ ) {
public boolean init( StepMetaInterface smi, StepDataInterface sdi ) { meta = (SystemDataMeta) smi; data = (SystemDataData) sdi; if ( super.init( smi, sdi ) ) { data.readsRows = getStepMeta().getRemoteInputSteps().size() > 0; List<StepMeta> previous = getTransMeta().findPreviousSteps( getStepMeta() ); if ( previous != null && previous.size() > 0 ) { data.readsRows = true; } return true; } return false; }
List<StepMeta> previousSteps = findPreviousSteps( startStep, false ); for ( int i = 0; i < previousSteps.size(); i++ ) { StepMeta stepMeta = previousSteps.get( i ); List<StepMeta> infoSteps = findPreviousSteps( startStep, true ); for ( int i = 0; i < infoSteps.size(); i++ ) { StepMeta stepMeta = infoSteps.get( i );
public boolean init( StepMetaInterface smi, StepDataInterface sdi ) { meta = (GetVariableMeta) smi; data = (GetVariableData) sdi; if ( super.init( smi, sdi ) ) { // Add init code here. data.readsRows = getStepMeta().getRemoteInputSteps().size() > 0; List<StepMeta> previous = getTransMeta().findPreviousSteps( getStepMeta() ); if ( previous != null && previous.size() > 0 ) { data.readsRows = true; } return true; } return false; }
List<StepMeta> prevSteps = findPreviousSteps( stepMeta ); int nrPrevious = prevSteps.size(); if ( nrPrevious > 1 ) {
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; }
/** * Initialize the step. * * @param smi * a <code>StepMetaInterface</code> value * @param sdi * a <code>StepDataInterface</code> value * @return a <code>boolean</code> value */ public boolean init( StepMetaInterface smi, StepDataInterface sdi ) { m_meta = (ReservoirSamplingMeta) smi; m_data = (ReservoirSamplingData) sdi; if ( super.init( smi, sdi ) ) { boolean remoteInput = getStepMeta().getRemoteInputSteps().size() > 0; List<StepMeta> previous = getTransMeta().findPreviousSteps( getStepMeta() ); if ( !remoteInput && ( previous == null || previous.size() <= 0 ) ) { m_data.setProcessingMode( PROC_MODE.DISABLED ); } return true; } return false; }
private StepMockHelper<DatabaseLookupMeta, DatabaseLookupData> createMockHelper() { StepMockHelper<DatabaseLookupMeta, DatabaseLookupData> mockHelper = new StepMockHelper<DatabaseLookupMeta, DatabaseLookupData>( "test DatabaseLookup", DatabaseLookupMeta.class, DatabaseLookupData.class ); when( mockHelper.logChannelInterfaceFactory.create( any(), any( LoggingObjectInterface.class ) ) ) .thenReturn( mockHelper.logChannelInterface ); when( mockHelper.trans.isRunning() ).thenReturn( true ); RowMeta inputRowMeta = new RowMeta(); RowSet rowSet = mock( RowSet.class ); when( rowSet.getRowWait( anyLong(), any( TimeUnit.class ) ) ).thenReturn( new Object[ 0 ] ).thenReturn( null ); when( rowSet.getRowMeta() ).thenReturn( inputRowMeta ); when( mockHelper.trans.findRowSet( anyString(), anyInt(), anyString(), anyInt() ) ).thenReturn( rowSet ); when( mockHelper.transMeta.findNextSteps( Matchers.any( StepMeta.class ) ) ) .thenReturn( Collections.singletonList( mock( StepMeta.class ) ) ); when( mockHelper.transMeta.findPreviousSteps( any( StepMeta.class ), anyBoolean() ) ) .thenReturn( Collections.singletonList( mock( StepMeta.class ) ) ); return mockHelper; }
@Test public void safeLetsNonInputStepsKeepRunning() throws KettleException { trans.setSteps( of( combi( stepMock, data, stepMeta ), combi( stepMock2, data2, stepMeta2 ) ) ); when( transMeta.findPreviousSteps( stepMeta, true ) ).thenReturn( emptyList() ); // stepMeta2 will have stepMeta as previous, so is not an input step when( transMeta.findPreviousSteps( stepMeta2, true ) ).thenReturn( of( stepMeta ) ); trans.transMeta = transMeta; trans.safeStop(); verifyStopped( stepMock, 1 ); // non input step shouldn't have stop called verifyStopped( stepMock2, 0 ); }
@Test public void safeStopStopsInputStepsRightAway() throws KettleException { trans.setSteps( of( combi( stepMock, data, stepMeta ) ) ); when( transMeta.findPreviousSteps( stepMeta, true ) ).thenReturn( emptyList() ); trans.transMeta = transMeta; trans.safeStop(); verifyStopped( stepMock, 1 ); }
@Test public void testHasLoop_simpleLoop() throws Exception { //main->2->3->main TransMeta transMetaSpy = spy( transMeta ); StepMeta stepMetaMain = createStepMeta( "mainStep" ); StepMeta stepMeta2 = createStepMeta( "step2" ); StepMeta stepMeta3 = createStepMeta( "step3" ); List<StepMeta> mainPrevSteps = new ArrayList<>(); mainPrevSteps.add( stepMeta2 ); doReturn( mainPrevSteps ).when( transMetaSpy ).findPreviousSteps( stepMetaMain, true ); when( transMetaSpy.findNrPrevSteps( stepMetaMain ) ).thenReturn( 1 ); when( transMetaSpy.findPrevStep( stepMetaMain, 0 ) ).thenReturn( stepMeta2 ); List<StepMeta> stepmeta2PrevSteps = new ArrayList<>(); stepmeta2PrevSteps.add( stepMeta3 ); doReturn( stepmeta2PrevSteps ).when( transMetaSpy ).findPreviousSteps( stepMeta2, true ); when( transMetaSpy.findNrPrevSteps( stepMeta2 ) ).thenReturn( 1 ); when( transMetaSpy.findPrevStep( stepMeta2, 0 ) ).thenReturn( stepMeta3 ); List<StepMeta> stepmeta3PrevSteps = new ArrayList<>(); stepmeta3PrevSteps.add( stepMetaMain ); doReturn( stepmeta3PrevSteps ).when( transMetaSpy ).findPreviousSteps( stepMeta3, true ); when( transMetaSpy.findNrPrevSteps( stepMeta3 ) ).thenReturn( 1 ); when( transMetaSpy.findPrevStep( stepMeta3, 0 ) ).thenReturn( stepMetaMain ); assertTrue( transMetaSpy.hasLoop( stepMetaMain ) ); }
@Test public void findPreviousStepsNullMeta( ) { TransMeta transMeta = new TransMeta( new Variables() ); List<StepMeta> result = transMeta.findPreviousSteps( null, false ); assertThat( 0, equalTo( result.size() ) ); assertThat( result, equalTo( new ArrayList<>() ) ); }
List<StepMeta> previous = getTransMeta().findPreviousSteps( getStepMeta() ); if ( previous != null && previous.size() > 0 ) { data.readsRows = true;
return null; List<StepMeta> prevSteps = findPreviousSteps( stepMeta ); int nrPrevSteps = prevSteps.size(); if ( log.isDebug() ) {
List<StepMeta> previous = getTransMeta().findPreviousSteps( getStepMeta() ); if ( previous != null && previous.size() > 0 ) { data.readsRows = true;
List<StepMeta> previous = getTransMeta().findPreviousSteps( getStepMeta() ); if ( previous != null && previous.size() > 0 ) { data.readsRows = true;