Class DimensionCache

java.lang.Object
org.pentaho.di.trans.steps.dimensionlookup.DimensionCache
All Implemented Interfaces:
Comparator<Object[]>

public class DimensionCache extends Object implements Comparator<Object[]>
This class will act as a special purpose dimension Cache. The idea here is to not only cache the last version of a dimension entry, but all versions. So basically, the entry key is the natural key as well as the from-to date range. The way to achieve that result is to keep a sorted list in memory. Because we want as few conversion errors as possible, we'll use the same row as we get from the database.
Author:
matt
  • Constructor Details

    • DimensionCache

      public DimensionCache(org.pentaho.di.core.row.RowMetaInterface rowMeta, int[] keyIndexes, int fromDateIndex, int toDateIndex)
      Create a new dimension cache object
      Parameters:
      rowMeta - the description of the rows to store
      keyIndexes - the indexes of the natural key (in that order)
      fromDateIndex - the field index where the start of the date range can be found
      toDateIndex - the field index where the end of the date range can be found
  • Method Details

    • addRow

      public void addRow(Object[] row)
      Add a row to the back of the list
      Parameters:
      row - the row to add
    • getRow

      public Object[] getRow(int index)
      Get a row from the cache on a certain index
      Parameters:
      index - the index to look for
      Returns:
      the row on the specified index
    • addRow

      public void addRow(int index, Object[] row)
      Insert a row into the list on a certain index
      Parameters:
      index - the index on which the row should be inserted
      row - the row to add
    • lookupRow

      public int lookupRow(Object[] lookupRowData) throws org.pentaho.di.core.exception.KettleException
      Looks up a row in the (sorted) cache.
      Parameters:
      lookupRowData - The data of the lookup row. Make sure that on the index of the from date, you put the lookup date.
      Throws:
      a - KettleException in case there are conversion errors during the lookup of the row
      org.pentaho.di.core.exception.KettleException
    • sortRows

      public void sortRows()
    • compare

      public int compare(Object[] o1, Object[] o2)
      Compare 2 rows of data using the natural keys and indexes specified.
      Specified by:
      compare in interface Comparator<Object[]>
      Parameters:
      o1 -
      o2 -
      Returns:
    • getRowMeta

      public org.pentaho.di.core.row.RowMetaInterface getRowMeta()
      Returns:
      the rowMeta
    • setRowMeta

      public void setRowMeta(org.pentaho.di.core.row.RowMetaInterface rowMeta)
      Parameters:
      rowMeta - the rowMeta to set
    • getRowCache

      public List<Object[]> getRowCache()
      Returns:
      the rowCache
    • setRowCache

      public void setRowCache(List<Object[]> rowCache)
      Parameters:
      rowCache - the rowCache to set
    • getKeyIndexes

      public int[] getKeyIndexes()
      Returns:
      the keyIndexes
    • setKeyIndexes

      public void setKeyIndexes(int[] keyIndexes)
      Parameters:
      keyIndexes - the keyIndexes to set
    • getFromDateIndex

      public int getFromDateIndex()
      Returns:
      the fromDateIndex
    • setFromDateIndex

      public void setFromDateIndex(int fromDateIndex)
      Parameters:
      fromDateIndex - the fromDateIndex to set
    • getToDateIndex

      public int getToDateIndex()
      Returns:
      the toDateIndex
    • setToDateIndex

      public void setToDateIndex(int toDateIndex)
      Parameters:
      toDateIndex - the toDateIndex to set