org.pentaho.di.partition
Class PartitionSchema

java.lang.Object
  extended by org.pentaho.di.core.changed.ChangedFlag
      extended by org.pentaho.di.partition.PartitionSchema
All Implemented Interfaces:
Cloneable, ChangedFlagInterface, ResourceHolderInterface, org.pentaho.di.shared.SharedObjectInterface

public class PartitionSchema
extends ChangedFlag
implements Cloneable, org.pentaho.di.shared.SharedObjectInterface, ResourceHolderInterface

A partition schema allow you to partition a step according into a number of partitions that run independendly. It allows us to "map"

Author:
Matt

Field Summary
static String XML_TAG
           
 
Constructor Summary
PartitionSchema()
           
PartitionSchema(Node partitionSchemaNode)
           
PartitionSchema(Repository rep, long id_partition_schema)
           
PartitionSchema(String name, List<String> partitionIDs)
           
 
Method Summary
 Object clone()
           
 boolean equals(Object obj)
           
 void expandPartitionsDynamically(int nrSlaves, org.pentaho.di.core.variables.VariableSpace space)
           
 String getDescription()
           
 String getHolderType()
          Gets the high-level type of resource holder.
 long getId()
           
 long getID()
           
 String getName()
           
 String getNumberOfPartitionsPerSlave()
           
 List<String> getPartitionIDs()
           
 String getTypeId()
           
 String getXML()
           
 int hashCode()
           
 boolean isDynamicallyDefined()
           
 boolean isShared()
           
 void replaceMeta(PartitionSchema partitionSchema)
           
 void retainPartitionsForSlaveServer(int slaveCount, int slaveNumber)
          Slaves don't need ALL the partitions, they just need a few.
So we should only retain those partitions that are of interest to the slave server.
Divide the number of partitions (6) through the number of slaves (2)
That gives you 0, 1, 2, 3, 4, 5
Slave 0 : 0, 2, 4
Slave 1 : 1, 3, 5
--> slaveNumber == partitionNr % slaveCount
 void saveRep(Repository rep)
           
 void saveRep(Repository rep, long id_transformation, boolean isUsedByTransformation)
           
 void setDynamicallyDefined(boolean dynamicallyDefined)
           
 void setId(long id)
           
 void setName(String name)
           
 void setNumberOfPartitionsPerSlave(String numberOfPartitionsPerSlave)
           
 void setPartitionIDs(List<String> partitionIDs)
           
 void setShared(boolean shared)
           
 String toString()
           
 
Methods inherited from class org.pentaho.di.core.changed.ChangedFlag
addObserver, clearChanged, deleteObserver, hasChanged, notifyObservers, setChanged, setChanged
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

XML_TAG

public static final String XML_TAG
See Also:
Constant Field Values
Constructor Detail

PartitionSchema

public PartitionSchema()

PartitionSchema

public PartitionSchema(String name,
                       List<String> partitionIDs)
Parameters:
name -
partitionIDs -

PartitionSchema

public PartitionSchema(Node partitionSchemaNode)

PartitionSchema

public PartitionSchema(Repository rep,
                       long id_partition_schema)
                throws org.pentaho.di.core.exception.KettleException
Throws:
org.pentaho.di.core.exception.KettleException
Method Detail

clone

public Object clone()
Overrides:
clone in class Object

replaceMeta

public void replaceMeta(PartitionSchema partitionSchema)

toString

public String toString()
Overrides:
toString in class Object

equals

public boolean equals(Object obj)
Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object

getName

public String getName()
Specified by:
getName in interface ResourceHolderInterface
Specified by:
getName in interface org.pentaho.di.shared.SharedObjectInterface
Returns:
the name

setName

public void setName(String name)
Parameters:
name - the name to set

getPartitionIDs

public List<String> getPartitionIDs()
Returns:
the partitionIDs

setPartitionIDs

public void setPartitionIDs(List<String> partitionIDs)
Parameters:
partitionIDs - the partitionIDs to set

getXML

public String getXML()
Specified by:
getXML in interface org.pentaho.di.shared.SharedObjectInterface

saveRep

public void saveRep(Repository rep)
             throws org.pentaho.di.core.exception.KettleException
Throws:
org.pentaho.di.core.exception.KettleException

saveRep

public void saveRep(Repository rep,
                    long id_transformation,
                    boolean isUsedByTransformation)
             throws org.pentaho.di.core.exception.KettleException
Throws:
org.pentaho.di.core.exception.KettleException

isShared

public boolean isShared()
Specified by:
isShared in interface org.pentaho.di.shared.SharedObjectInterface
Returns:
the shared

setShared

public void setShared(boolean shared)
Specified by:
setShared in interface org.pentaho.di.shared.SharedObjectInterface
Parameters:
shared - the shared to set

getId

public long getId()
Returns:
the id

getID

public long getID()
Specified by:
getID in interface ResourceHolderInterface
Returns:
the id

setId

public void setId(long id)
Parameters:
id - the id to set

getDescription

public String getDescription()
Specified by:
getDescription in interface ResourceHolderInterface
Returns:
The description of the holder of the resource

getHolderType

public String getHolderType()
Description copied from interface: ResourceHolderInterface
Gets the high-level type of resource holder.

Specified by:
getHolderType in interface ResourceHolderInterface
Returns:
JOBENTRY, STEP, etc.

getTypeId

public String getTypeId()
Specified by:
getTypeId in interface ResourceHolderInterface
Returns:
The Type ID of the resource holder. The Type ID is the system-defined type identifier (like TRANS or SORT).

isDynamicallyDefined

public boolean isDynamicallyDefined()
Returns:
the dynamicallyDefined

setDynamicallyDefined

public void setDynamicallyDefined(boolean dynamicallyDefined)
Parameters:
dynamicallyDefined - the dynamicallyDefined to set

getNumberOfPartitionsPerSlave

public String getNumberOfPartitionsPerSlave()
Returns:
the numberOfStepCopiesPerSlave

setNumberOfPartitionsPerSlave

public void setNumberOfPartitionsPerSlave(String numberOfPartitionsPerSlave)
Parameters:
numberOfPartitionsPerSlave - the number of partitions per slave to set...

expandPartitionsDynamically

public void expandPartitionsDynamically(int nrSlaves,
                                        org.pentaho.di.core.variables.VariableSpace space)

retainPartitionsForSlaveServer

public void retainPartitionsForSlaveServer(int slaveCount,
                                           int slaveNumber)
Slaves don't need ALL the partitions, they just need a few.
So we should only retain those partitions that are of interest to the slave server.
Divide the number of partitions (6) through the number of slaves (2)
That gives you 0, 1, 2, 3, 4, 5
Slave 0 : 0, 2, 4
Slave 1 : 1, 3, 5
--> slaveNumber == partitionNr % slaveCount

Parameters:
slaveCount -
slaveNumber -