@SuppressWarnings ( "unchecked" ) private List<StepMetaDataCombi> getSubSteps( Transformation transformation, StepMetaDataCombi combi ) { HashMap<String, Transformation> config = ( (Optional<HashMap<String, Transformation>>) transformation .getConfig( TransMetaConverter.SUB_TRANSFORMATIONS_KEY ) ) .orElse( Maps.newHashMap() ); StepMetaInterface smi = combi.stepMeta.getStepMetaInterface(); return config.keySet().stream() .filter( key -> stepHasDependency( combi, smi, key ) ) .flatMap( key -> opsToSteps( config.get( key ) ).stream() ) .collect( Collectors.toList() ); }
@Test public void transConfigItemsNoNameSpecified() throws Exception { TransMeta meta = new TransMeta(); Transformation trans = TransMetaConverter.convert( meta ); assertThat( trans.getConfig().get( TransMetaConverter.TRANS_META_NAME_CONF_KEY ), is( TransMetaConverter.TRANS_DEFAULT_NAME ) ); assertThat( (String) trans.getConfig().get( TransMetaConverter.TRANS_META_CONF_KEY ), startsWith( "<transformation>" ) ); }
@Test public void testIncludesSubTransformations() throws Exception { TransMeta parentTransMeta = new TransMeta( getClass().getResource( "trans-meta-converter-parent.ktr" ).getPath() ); Transformation transformation = TransMetaConverter.convert( parentTransMeta ); @SuppressWarnings( { "unchecked", "ConstantConditions" } ) HashMap<String, Transformation> config = (HashMap<String, Transformation>) transformation.getConfig( TransMetaConverter.SUB_TRANSFORMATIONS_KEY ).get(); assertEquals( 1, config.size() ); assertNotNull( config.get( "file://" + getClass().getResource( "trans-meta-converter-sub.ktr" ).getPath() ) ); }
@Test public void transConfigItems() throws Exception { TransMeta meta = new TransMeta(); meta.setName( "foo" ); Transformation trans = TransMetaConverter.convert( meta ); assertThat( trans.getConfig().get( TransMetaConverter.TRANS_META_NAME_CONF_KEY ), is( "foo" ) ); assertThat( (String) trans.getConfig().get( TransMetaConverter.TRANS_META_CONF_KEY ), startsWith( "<transformation>" ) ); }
@Test public void testIncludesSubTransformationsFromRepository() throws Exception { TransMeta parentTransMeta = new TransMeta( getClass().getResource( "trans-meta-converter-parent.ktr" ).getPath() ); Repository repository = mock( Repository.class ); TransMeta transMeta = new TransMeta( ); RepositoryDirectoryInterface repositoryDirectory = new RepositoryDirectory( null, "public"); String directory = getClass().getResource( "" ).toString().replace( File.separator, "/" ); when( repository.findDirectory( "public" ) ).thenReturn( repositoryDirectory ); when( repository.loadTransformation( "trans-meta-converter-sub.ktr", repositoryDirectory, null, true, null ) ).thenReturn( transMeta ); parentTransMeta.setRepository( repository ); parentTransMeta.setRepositoryDirectory( repositoryDirectory ); parentTransMeta.setVariable( "Internal.Entry.Current.Directory", "public" ); Transformation transformation = TransMetaConverter.convert( parentTransMeta ); @SuppressWarnings( { "unchecked", "ConstantConditions" } ) HashMap<String, Transformation> config = (HashMap<String, Transformation>) transformation.getConfig( TransMetaConverter.SUB_TRANSFORMATIONS_KEY ).get(); assertEquals( 1, config.size() ); assertNotNull( config.get( "public/trans-meta-converter-sub.ktr" ) ); }
@Test public void lazyConversionTurnedOff() throws KettleException { KettleEnvironment.init(); TransMeta transMeta = new TransMeta(); CsvInputMeta csvInputMeta = new CsvInputMeta(); csvInputMeta.setLazyConversionActive( true ); StepMeta csvInput = new StepMeta( "Csv", csvInputMeta ); transMeta.addStep( csvInput ); TableInputMeta tableInputMeta = new TableInputMeta(); tableInputMeta.setLazyConversionActive( true ); StepMeta tableInput = new StepMeta( "Table", tableInputMeta ); transMeta.addStep( tableInput ); Transformation trans = TransMetaConverter.convert( transMeta ); TransMeta cloneMeta; String transMetaXml = (String) trans.getConfig().get( TransMetaConverter.TRANS_META_CONF_KEY ); Document doc; try { doc = XMLHandler.loadXMLString( transMetaXml ); Node stepNode = XMLHandler.getSubNode( doc, "transformation" ); cloneMeta = new TransMeta( stepNode, null ); } catch ( KettleXMLException | KettleMissingPluginsException e ) { throw new RuntimeException( e ); } assertThat( ( (CsvInputMeta) cloneMeta.findStep( "Csv" ).getStepMetaInterface() ).isLazyConversionActive(), is( false ) ); assertThat( ( (TableInputMeta) cloneMeta.findStep( "Table" ).getStepMetaInterface() ).isLazyConversionActive(), is( false ) ); }