Package mondrian.rolap.agg
Class SparseSegmentDataset
- java.lang.Object
-
- mondrian.rolap.agg.SparseSegmentDataset
-
- All Implemented Interfaces:
Iterable<Map.Entry<CellKey,Object>>,SegmentDataset
class SparseSegmentDataset extends Object implements SegmentDataset
ASparseSegmentDatasetis a means of storing segment values which is suitable when few of the combinations of keys have a value present.The storage requirements are as follows. Key is 1 word for each dimension. Hashtable entry is 3 words. Value is 1 word. Total space is (4 + d) * v. (May also need hash table to ensure that values are only stored once.)
NOTE: This class is not synchronized.
- Since:
- 21 March, 2002
- Author:
- jhyde
-
-
Constructor Summary
Constructors Constructor Description SparseSegmentDataset()Creates an empty SparseSegmentDataset.SparseSegmentDataset(Map<CellKey,Object> values)Creates a SparseSegmentDataset with a given value map.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description SegmentBodycreateSegmentBody(List<Pair<SortedSet<Comparable>,Boolean>> axes)Return an immutable, final and serializable implementation of a SegmentBody in order to cache this dataset.booleanexists(CellKey pos)Returns whether there is a value at a given coordinate.doublegetBytes()Returns the number of bytes occupied by this dataset.doublegetDouble(CellKey pos)Returns the value at a given coordinate, as adouble.intgetInt(CellKey pos)Returns the value at a given coordinate, as anint.ObjectgetObject(CellKey pos)Returns the value at a given coordinate, as anObject.SqlStatement.TypegetType()Returns the SQL type of the data contained in this dataset.booleanisNull(CellKey pos)Returns whether the cell at a given coordinate is null.Iterator<Map.Entry<CellKey,Object>>iterator()voidpopulateFrom(int[] pos, SegmentDataset data, CellKey key)voidpopulateFrom(int[] pos, SegmentLoader.RowList rowList, int column)Sets the value a given ordinal.voidput(CellKey key, Object value)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
SparseSegmentDataset
SparseSegmentDataset()
Creates an empty SparseSegmentDataset.
-
SparseSegmentDataset
SparseSegmentDataset(Map<CellKey,Object> values)
Creates a SparseSegmentDataset with a given value map. The map is not copied; a reference to the map is retained inside the dataset, and therefore the contents of the dataset will change if the map is modified.- Parameters:
values- Value map
-
-
Method Detail
-
getObject
public Object getObject(CellKey pos)
Description copied from interface:SegmentDatasetReturns the value at a given coordinate, as anObject.- Specified by:
getObjectin interfaceSegmentDataset- Parameters:
pos- Coordinate position- Returns:
- Value
-
isNull
public boolean isNull(CellKey pos)
Description copied from interface:SegmentDatasetReturns whether the cell at a given coordinate is null.- Specified by:
isNullin interfaceSegmentDataset- Parameters:
pos- Coordinate position- Returns:
- Whether cell value is null
-
getInt
public int getInt(CellKey pos)
Description copied from interface:SegmentDatasetReturns the value at a given coordinate, as anint.- Specified by:
getIntin interfaceSegmentDataset- Parameters:
pos- Coordinate position- Returns:
- Value
-
getDouble
public double getDouble(CellKey pos)
Description copied from interface:SegmentDatasetReturns the value at a given coordinate, as adouble.- Specified by:
getDoublein interfaceSegmentDataset- Parameters:
pos- Coordinate position- Returns:
- Value
-
exists
public boolean exists(CellKey pos)
Description copied from interface:SegmentDatasetReturns whether there is a value at a given coordinate.- Specified by:
existsin interfaceSegmentDataset- Parameters:
pos- Coordinate position- Returns:
- Whether there is a value
-
getBytes
public double getBytes()
Description copied from interface:SegmentDatasetReturns the number of bytes occupied by this dataset.- Specified by:
getBytesin interfaceSegmentDataset- Returns:
- number of bytes
-
populateFrom
public void populateFrom(int[] pos, SegmentDataset data, CellKey key)- Specified by:
populateFromin interfaceSegmentDataset
-
populateFrom
public void populateFrom(int[] pos, SegmentLoader.RowList rowList, int column)Description copied from interface:SegmentDatasetSets the value a given ordinal.- Specified by:
populateFromin interfaceSegmentDataset- Parameters:
pos- OrdinalrowList- Row listcolumn- Column of row list
-
getType
public SqlStatement.Type getType()
Description copied from interface:SegmentDatasetReturns the SQL type of the data contained in this dataset.- Specified by:
getTypein interfaceSegmentDataset- Returns:
- A value of SqlStatement.Type
-
createSegmentBody
public SegmentBody createSegmentBody(List<Pair<SortedSet<Comparable>,Boolean>> axes)
Description copied from interface:SegmentDatasetReturn an immutable, final and serializable implementation of a SegmentBody in order to cache this dataset.- Specified by:
createSegmentBodyin interfaceSegmentDataset- Parameters:
axes- An array with, for each axis, the set of axis values, sorted in natural order, and a flag saying whether the null value is also present. This is supplied by theSegmentLoader.- Returns:
- A
SegmentBody.
-
-