public StepPartitioningMeta clone() { try { StepPartitioningMeta stepPartitioningMeta = new StepPartitioningMeta( method, partitionSchema != null ? (PartitionSchema) partitionSchema.clone() : null ); stepPartitioningMeta.partitionSchemaName = partitionSchemaName; stepPartitioningMeta.setMethodType( methodType ); stepPartitioningMeta.setPartitioner( partitioner == null ? null : partitioner.clone() ); return stepPartitioningMeta; } catch ( KettlePluginException e ) { throw new RuntimeException( "Unable to load partitioning plugin", e ); } }
/** * @param stepname * The name of the new step * @param stepMetaInterface * The step metadata interface to use (TextFileInputMeta, etc) */ public StepMeta( String stepname, StepMetaInterface stepMetaInterface ) { if ( stepMetaInterface != null ) { PluginRegistry registry = PluginRegistry.getInstance(); this.stepid = registry.getPluginId( StepPluginType.class, stepMetaInterface ); setDeprecationAndSuggestedStep(); } this.name = stepname; setStepMetaInterface( stepMetaInterface ); selected = false; distributes = true; copiesString = "1"; location = new Point( 0, 0 ); drawstep = false; description = null; stepPartitioningMeta = new StepPartitioningMeta(); // targetStepPartitioningMeta = new StepPartitioningMeta(); clusterSchema = null; // non selected by default. remoteInputSteps = new ArrayList<RemoteStep>(); remoteOutputSteps = new ArrayList<RemoteStep>(); attributesMap = new HashMap<String, Map<String, String>>(); }
private static StepPartitioningMeta createStepPartitioningMeta( String method, String schemaName ) throws Exception { StepPartitioningMeta meta = new StepPartitioningMeta( method, new PartitionSchema( schemaName, Collections.<String>emptyList() ) ); meta.setPartitionSchemaName( "schema_name" ); return meta; }
/** * This is a case when we have 1 step to 1 clustered step distribution. * * @throws KettlePluginException */ private void prepareStepMetas_1_cl1() throws KettlePluginException { StepMeta dummy1 = new StepMeta( ONE, null ); StepMeta dummy2 = new StepMeta( TWO, null ); PartitionSchema schema = new PartitionSchema( "p1", Arrays.asList( new String[] { PID1, PID2 } ) ); StepPartitioningMeta partMeta = new StepPartitioningMeta( "Mirror to all partitions", schema ); dummy2.setStepPartitioningMeta( partMeta ); chain.add( dummy1 ); chain.add( dummy2 ); for ( StepMeta item : chain ) { item.setStepMetaInterface( new DummyTransMeta() ); } }
public StepPartitioningMeta loadStepPartitioningMeta( ObjectId id_step ) throws KettleException { StepPartitioningMeta stepPartitioningMeta = new StepPartitioningMeta(); stepPartitioningMeta.setPartitionSchemaName( repository .getStepAttributeString( id_step, "PARTITIONING_SCHEMA" ) ); String methodCode = repository.getStepAttributeString( id_step, "PARTITIONING_METHOD" ); stepPartitioningMeta.setMethod( StepPartitioningMeta.getMethod( methodCode ) ); if ( stepPartitioningMeta.getPartitioner() != null ) { stepPartitioningMeta.getPartitioner().loadRep( repository, id_step ); } stepPartitioningMeta.hasChanged( true ); return stepPartitioningMeta; }
/** * This is a case when first step running 2 copies and next is partitioned one. * * @throws KettlePluginException */ private void prepareStepMetas_x2_cl1() throws KettlePluginException { StepMeta dummy1 = new StepMeta( ONE, null ); StepMeta dummy2 = new StepMeta( TWO, null ); PartitionSchema schema1 = new PartitionSchema( "p1", Arrays.asList( new String[] { PID1, PID2 } ) ); StepPartitioningMeta partMeta1 = new StepPartitioningMeta( "Mirror to all partitions", schema1 ); dummy2.setStepPartitioningMeta( partMeta1 ); dummy1.setCopies( 2 ); chain.add( dummy1 ); chain.add( dummy2 ); for ( StepMeta item : chain ) { item.setStepMetaInterface( new DummyTransMeta() ); } } }
/** * This is a case when we have 2 steps, but partitioned differently * * @throws KettlePluginException */ private void prepareStepMetas_cl1_cl2() throws KettlePluginException { StepMeta dummy1 = new StepMeta( ONE, null ); StepMeta dummy2 = new StepMeta( TWO, null ); PartitionSchema schema1 = new PartitionSchema( "p1", Arrays.asList( new String[] { PID1, PID2 } ) ); PartitionSchema schema2 = new PartitionSchema( "p2", Arrays.asList( new String[] { PID1, PID2 } ) ); StepPartitioningMeta partMeta1 = new StepPartitioningMeta( "Mirror to all partitions", schema1 ); StepPartitioningMeta partMeta2 = new StepPartitioningMeta( "Mirror to all partitions", schema2 ); partMeta1.setPartitionSchemaName( schema1.getName() ); partMeta2.setPartitionSchemaName( schema2.getName() ); dummy1.setStepPartitioningMeta( partMeta1 ); dummy2.setStepPartitioningMeta( partMeta2 ); chain.add( dummy1 ); chain.add( dummy2 ); for ( StepMeta item : chain ) { item.setStepMetaInterface( new DummyTransMeta() ); } }
stepMetas.add( mockHelper.stepMeta ); stepMetas.add( mockHelper.stepMeta ); StepPartitioningMeta stepPartitioningMeta = spy( new StepPartitioningMeta() ); BasePartitioner partitioner = mock( BasePartitioner.class );
/** * This case simulates when we do have 2 step partitioned with one same partitioner We want to get a 'swim-lanes' * transformation * * @throws KettlePluginException */ private void prepareStepMetas_cl1_cl1() throws KettlePluginException { StepMeta dummy1 = new StepMeta( ONE, null ); StepMeta dummy2 = new StepMeta( TWO, null ); PartitionSchema schema = new PartitionSchema( "p1", Arrays.asList( new String[] { PID1, PID2 } ) ); // for delayed binding StepPartitioning meta does not achieve // schema name when using in constructor so we have to set it // explicitly. See equals implementation for StepPartitioningMeta. StepPartitioningMeta partMeta = new StepPartitioningMeta( "Mirror to all partitions", schema ); // that is what I am talking about: partMeta.setPartitionSchemaName( schema.getName() ); dummy1.setStepPartitioningMeta( partMeta ); dummy2.setStepPartitioningMeta( partMeta ); chain.add( dummy1 ); chain.add( dummy2 ); for ( StepMeta item : chain ) { item.setStepMetaInterface( new DummyTransMeta() ); } }
stepPartitioningMeta = new StepPartitioningMeta( partNode ); partNode = XMLHandler.getSubNode( targetPartNode, "partitioning" ); if ( partNode != null ) { targetStepPartitioningMeta = new StepPartitioningMeta( partNode );
StepPartitioningMeta stepPartitioningMeta = new StepPartitioningMeta(); if ( stepNode.hasProperty( PROP_PARTITIONING_SCHEMA ) ) { String partSchemaId = stepNode.getProperty( PROP_PARTITIONING_SCHEMA ).getRef().getId().toString();