Class DimensionCache
java.lang.Object
org.pentaho.di.trans.steps.dimensionlookup.DimensionCache
- All Implemented Interfaces:
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 Summary
ConstructorDescriptionDimensionCache
(org.pentaho.di.core.row.RowMetaInterface rowMeta, int[] keyIndexes, int fromDateIndex, int toDateIndex) Create a new dimension cache object -
Method Summary
Modifier and TypeMethodDescriptionvoid
Insert a row into the list on a certain indexvoid
Add a row to the back of the listint
Compare 2 rows of data using the natural keys and indexes specified.int
int[]
Object[]
getRow
(int index) Get a row from the cache on a certain indexorg.pentaho.di.core.row.RowMetaInterface
int
int
Looks up a row in the (sorted) cache.void
setFromDateIndex
(int fromDateIndex) void
setKeyIndexes
(int[] keyIndexes) void
setRowCache
(List<Object[]> rowCache) void
setRowMeta
(org.pentaho.di.core.row.RowMetaInterface rowMeta) void
setToDateIndex
(int toDateIndex) void
sortRows()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.util.Comparator
equals, reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
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 storekeyIndexes
- the indexes of the natural key (in that order)fromDateIndex
- the field index where the start of the date range can be foundtoDateIndex
- the field index where the end of the date range can be found
-
-
Method Details
-
addRow
Add a row to the back of the list- Parameters:
row
- the row to add
-
getRow
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
Insert a row into the list on a certain index- Parameters:
index
- the index on which the row should be insertedrow
- the row to add
-
lookupRow
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 roworg.pentaho.di.core.exception.KettleException
-
sortRows
public void sortRows() -
compare
Compare 2 rows of data using the natural keys and indexes specified.- Specified by:
compare
in interfaceComparator<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
- Returns:
- the rowCache
-
setRowCache
- 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
-