private void wireUpTestTransMeta( TransMeta transMeta, StepMeta toBeAppended1, StepMeta toBeAppended2, StepMeta append, StepMeta after ) { transMeta.addStep( append ); transMeta.addStep( after ); transMeta.addStep( toBeAppended1 ); transMeta.addStep( toBeAppended2 ); transMeta.addTransHop( new TransHopMeta( toBeAppended1, append ) ); transMeta.addTransHop( new TransHopMeta( toBeAppended2, append ) ); transMeta.addTransHop( new TransHopMeta( append, after ) ); }
@Test public void errorHops() throws Exception { TransMeta meta = new TransMeta(); meta.setFilename( "fileName" ); StepMeta from = new StepMeta( "step1", stepMetaInterface ); meta.addStep( from ); StepMeta to = new StepMeta( "step2", stepMetaInterface ); meta.addStep( to ); meta.addTransHop( new TransHopMeta( from, to ) ); StepMeta error = new StepMeta( "errorHandler", stepMetaInterface ); meta.addStep( error ); TransHopMeta errorHop = new TransHopMeta( from, error ); errorHop.setErrorHop( true ); meta.addTransHop( errorHop ); Transformation trans = TransMetaConverter.convert( meta ); Map<String, List<Hop>> hops = trans.getHops().stream().collect( Collectors.groupingBy( Hop::getType ) ); List<Hop> normalHops = hops.get( Hop.TYPE_NORMAL ); assertThat( normalHops.size(), is( 1 ) ); assertThat( normalHops.get( 0 ).getTo().getId(), is( "step2" ) ); List<Hop> errorHops = hops.get( Hop.TYPE_ERROR ); assertThat( errorHops.size(), is( 1 ) ); assertThat( errorHops.get( 0 ).getTo().getId(), is( "errorHandler" ) ); assertThat( hops.values().stream() .flatMap( List::stream ) .map( Hop::getFrom ).map( Operation::getId ) .collect( Collectors.toList() ), everyItem( equalTo( "step1" ) ) ); }
@Test public void testRemovingDisabledInputSteps() { TransMeta trans = new TransMeta(); StepMeta inputToBeRemoved = new StepMeta( "InputToBeRemoved", stepMetaInterface ); trans.addStep( inputToBeRemoved ); StepMeta inputToStay = new StepMeta( "InputToStay", stepMetaInterface ); trans.addStep( inputToStay ); StepMeta inputReceiver1 = new StepMeta( "InputReceiver1", stepMetaInterface ); trans.addStep( inputReceiver1 ); StepMeta inputReceiver2 = new StepMeta( "InputReceiver2", stepMetaInterface ); trans.addStep( inputReceiver2 ); TransHopMeta hop1 = new TransHopMeta( inputToBeRemoved, inputReceiver1, false ); TransHopMeta hop2 = new TransHopMeta( inputToStay, inputReceiver1 ); TransHopMeta hop3 = new TransHopMeta( inputToBeRemoved, inputReceiver2, false ); trans.addTransHop( hop1 ); trans.addTransHop( hop2 ); trans.addTransHop( hop3 ); Transformation transformation = TransMetaConverter.convert( trans ); List<String> steps = transformation.getOperations().stream().map( op -> op.getId() ).collect( Collectors.toList() ); assertThat( "Only 2 ops should exist", steps.size(), is( 2 ) ); assertThat( steps, hasItems( "InputToStay", "InputReceiver1" ) ); List<String> hops = transformation.getHops().stream().map( hop -> hop.getId() ).collect( Collectors.toList() ); assertThat( "Only 1 hop should exist", hops.size(), is( 1 ) ); assertThat( hops, hasItems( "InputToStay -> InputReceiver1" ) ); }
@Test public void transWithHops() { TransMeta meta = new TransMeta(); meta.setFilename( "fileName" ); StepMeta from = new StepMeta( "step1", stepMetaInterface ); meta.addStep( from ); StepMeta to = new StepMeta( "step2", stepMetaInterface ); meta.addStep( to ); meta.addTransHop( new TransHopMeta( from, to ) ); Transformation trans = TransMetaConverter.convert( meta ); assertThat( trans.getId(), is( meta.getFilename() ) ); assertThat( trans.getOperations().size(), is( 2 ) ); assertThat( trans.getHops().size(), is( 1 ) ); assertThat( trans.getHops().get( 0 ).getFrom().getId(), is( from.getName() ) ); assertThat( trans.getHops().get( 0 ).getTo().getId(), is( to.getName() ) ); assertThat( trans.getHops().stream().map( Hop::getType ).collect( Collectors.toList() ), everyItem( is( Hop.TYPE_NORMAL ) ) ); }
transMeta.addTransHop( (TransHopMeta) hop.clone() );
trans.addStep( afterEnabledDisabled ); trans.addTransHop( new TransHopMeta( start, withEnabledHop ) ); trans.addTransHop( new TransHopMeta( start, withDisabledHop, false ) ); trans.addTransHop( new TransHopMeta( withEnabledHop, shouldStay ) ); trans.addTransHop( new TransHopMeta( withDisabledHop, shouldStay ) ); trans.addTransHop( new TransHopMeta( withDisabledHop, shouldNotStay ) ); trans.addTransHop( new TransHopMeta( start, withEnabledAndDisabledHops ) ); trans.addTransHop( new TransHopMeta( withEnabledHop, withEnabledAndDisabledHops, false ) ); trans.addTransHop( new TransHopMeta( withEnabledAndDisabledHops, afterEnabledDisabled ) );
@Test public void testMultipleDisabledHops() { TransMeta trans = new TransMeta(); StepMeta input = new StepMeta( "Input", stepMetaInterface ); trans.addStep( input ); StepMeta step1 = new StepMeta( "Step1", stepMetaInterface ); trans.addStep( step1 ); StepMeta step2 = new StepMeta( "Step2", stepMetaInterface ); trans.addStep( step2 ); StepMeta step3 = new StepMeta( "Step3", stepMetaInterface ); trans.addStep( step3 ); TransHopMeta hop1 = new TransHopMeta( input, step1, false ); TransHopMeta hop2 = new TransHopMeta( step1, step2, false ); TransHopMeta hop3 = new TransHopMeta( step2, step3, false ); trans.addTransHop( hop1 ); trans.addTransHop( hop2 ); trans.addTransHop( hop3 ); Transformation transformation = TransMetaConverter.convert( trans ); assertThat( "Trans has steps though all of them should be removed", transformation.getOperations().size(), is( 0 ) ); assertThat( "Trans has hops though all of them should be removed", transformation.getHops().size(), is( 0 ) ); }
@Test public void testGetAllTransHops() throws Exception { TransMeta transMeta = new TransMeta( "transFile", "myTrans" ); StepMeta step1 = new StepMeta( "name1", null ); StepMeta step2 = new StepMeta( "name2", null ); StepMeta step3 = new StepMeta( "name3", null ); StepMeta step4 = new StepMeta( "name4", null ); TransHopMeta hopMeta1 = new TransHopMeta( step1, step2, true ); TransHopMeta hopMeta2 = new TransHopMeta( step2, step3, true ); TransHopMeta hopMeta3 = new TransHopMeta( step2, step4, true ); transMeta.addTransHop( 0, hopMeta1 ); transMeta.addTransHop( 1, hopMeta2 ); transMeta.addTransHop( 2, hopMeta3 ); List<TransHopMeta> allTransHopFrom = transMeta.findAllTransHopFrom( step2 ); assertEquals( step3, allTransHopFrom.get( 0 ).getToStep() ); assertEquals( step4, allTransHopFrom.get( 1 ).getToStep() ); }
@Test public void testResolveStepMetaResources() throws KettleException, MetaStoreException { Variables variables = new Variables(); TransMeta transMeta = spy( new TransMeta() ); transMeta.setParentVariableSpace( variables ); doReturn( transMeta ).when( transMeta ).realClone( false ); TestMetaResolvableResource testMetaResolvableResource = spy( new TestMetaResolvableResource() ); TestMetaResolvableResource testMetaResolvableResourceTwo = spy( new TestMetaResolvableResource() ); StepMeta testMeta = new StepMeta( "TestMeta", testMetaResolvableResource ); StepMeta testMetaTwo = new StepMeta( "TestMeta2", testMetaResolvableResourceTwo ); transMeta.addStep( testMeta ); transMeta.addStep( testMetaTwo ); transMeta.addTransHop( new TransHopMeta( testMeta, testMetaTwo ) ); TransMetaConverter.convert( transMeta ); verify( testMetaResolvableResource ).resolve(); verify( testMetaResolvableResourceTwo ).resolve(); } private static class TestMetaResolvableResource extends BaseStepMeta
public static final TransMeta generatePreviewTransformation( VariableSpace parent, StepMetaInterface oneMeta, String oneStepname ) { PluginRegistry registry = PluginRegistry.getInstance(); TransMeta previewMeta = new TransMeta( parent ); // The following operation resets the internal variables! // previewMeta.setName( parent == null ? "Preview transformation" : parent.toString() ); // At it to the first step. StepMeta one = new StepMeta( registry.getPluginId( StepPluginType.class, oneMeta ), oneStepname, oneMeta ); one.setLocation( 50, 50 ); one.setDraw( true ); previewMeta.addStep( one ); DummyTransMeta twoMeta = new DummyTransMeta(); StepMeta two = new StepMeta( registry.getPluginId( StepPluginType.class, twoMeta ), "dummy", twoMeta ); two.setLocation( 250, 50 ); two.setDraw( true ); previewMeta.addStep( two ); TransHopMeta hop = new TransHopMeta( one, two ); previewMeta.addTransHop( hop ); return previewMeta; } }
@Test public void testIsAnySelectedStepUsedInTransHopsAnySelectedCase() { StepMeta stepMeta = new StepMeta(); stepMeta.setName( STEP_NAME ); TransHopMeta transHopMeta = new TransHopMeta(); stepMeta.setSelected( true ); List<StepMeta> selectedSteps = asList( new StepMeta(), stepMeta, new StepMeta() ); transHopMeta.setToStep( stepMeta ); transHopMeta.setFromStep( stepMeta ); transMeta.getSteps().addAll( selectedSteps ); transMeta.addTransHop( transHopMeta ); assertTrue( transMeta.isAnySelectedStepUsedInTransHops() ); }
public void newHop( TransMeta transMeta, TransHopMeta transHopMeta ) { if ( checkIfHopAlreadyExists( transMeta, transHopMeta ) ) { transMeta.addTransHop( transHopMeta ); int idx = transMeta.indexOfTransHop( transHopMeta ); if ( !performNewTransHopChecks( transMeta, transHopMeta ) ) { // Some error occurred: loops, existing hop, etc. // Remove it again... // transMeta.removeTransHop( idx ); } else { addUndoNew( transMeta, new TransHopMeta[] { transHopMeta }, new int[] { transMeta .indexOfTransHop( transHopMeta ) } ); } // Just to make sure transHopMeta.getFromStep().drawStep(); transHopMeta.getToStep().drawStep(); refreshTree(); refreshGraph(); } }
public static TransMeta generateTestTransformation( VariableSpace parent, StepMetaInterface oneMeta, String oneStepname, RowMetaInterface injectorRowMeta ) { TransMeta previewMeta = new TransMeta( parent ); // First the injector step... StepMeta zero = getInjectorStepMeta( injectorRowMeta ); previewMeta.addStep( zero ); // Then the middle step to test... // StepMeta one = new StepMeta( registry.getPluginId( StepPluginType.class, oneMeta ), oneStepname, oneMeta ); one.setLocation( 150, 50 ); one.setDraw( true ); previewMeta.addStep( one ); // Then we add the dummy step to read the results from StepMeta two = getReadStepMeta(); previewMeta.addStep( two ); // Add the hops between the 3 steps. TransHopMeta zeroOne = new TransHopMeta( zero, one ); previewMeta.addTransHop( zeroOne ); TransHopMeta oneTwo = new TransHopMeta( one, two ); previewMeta.addTransHop( oneTwo ); return previewMeta; }
TransHopMeta hopMeta2 = new TransHopMeta( step2, step3, true ); TransHopMeta hopMeta3 = new TransHopMeta( step3, step4, false ); transMeta.addTransHop( 0, hopMeta1 ); transMeta.addTransHop( 1, hopMeta2 ); transMeta.addTransHop( 2, hopMeta3 ); List<StepMeta> hops = transMeta.getTransHopSteps( true ); assertSame( step1, hops.get( 0 ) );
transMeta.addStep( dg2 ); transMeta.addStep( udjc ); transMeta.addTransHop( hop1 ); transMeta.addTransHop( hop2 );
previewMeta.addTransHop( zeroOne ); TransHopMeta oneTwo = new TransHopMeta( one, two ); previewMeta.addTransHop( oneTwo ); previewMeta.addTransHop( oneErr );
transMeta.addTransHop( hop );
transMeta.addTransHop( newhop1 ); spoon.addUndoNew( transMeta, new TransHopMeta[] { newhop1, }, new int[] { transMeta.indexOfTransHop( newhop1 ), }, true ); transMeta.addTransHop( newhop2 ); spoon.addUndoNew( transMeta, new TransHopMeta[] { newhop2 }, new int[] { transMeta.indexOfTransHop( newhop2 ) }, true );
transMeta.addStep( dg2 ); transMeta.addStep( textFileOutputStep ); transMeta.addTransHop( hop ); transMeta.addTransHop( hop2 );
meta.addTransHop( shi ); fromstep = selstep; meta.addTransHop( hi );