Class RowUtil
A row or partial row is described by two or three parameters.
- DataValueDescriptor[] row - an array of objects, one per column.
- FormatableBitSet validColumns - an indication of which objects in row map to which columns
// allocate/initialize the row DataValueDescriptor row = new DataValueDescriptor[10] row[0] = new FOO(); row[4] = new BAR(); row[7] = new MMM(); // allocate/initialize the bit set FormatableBitSet FormatableBitSet = new FormatableBitSet(10); FormatableBitSet.set(0); FormatableBitSet.set(4); FormatableBitSet.set(7);
Column mapping
When validColumns is null:
- The number of columns is given by row.length
- Column N maps to row[N], where column numbers start at zero.
When validColumns is not null, then
- The number of requested columns is given by the number of bits set in validColumns.
- Column N is not in the partial row if validColumns.isSet(N) returns false.
- Column N is in the partial row if validColumns.isSet(N) returns true.
- If column N is in the partial row then it maps to row[N]. If N >= row.length then the column is taken as non existent for an insert or update, and not fetched on a fetch.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final DataValueDescriptor[]
An object that can be used on a fetch to indicate no fields need to be fetched.static final FormatableBitSet
An object that can be used on a fetch as a FormatableBitSet to indicate no fields need to be fetched.static final FetchDescriptor
An object that can be used on a fetch as a FormatableBitSet to indicate no fields need to be fetched.private static final FetchDescriptor[]
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic int
columnOutOfRange
(DataValueDescriptor[] row, FormatableBitSet columnList, int maxColumns) Return the column number of the first column out of range, or a number less than zero if all columns are in range.static Object
getColumn
(Object[] row, FormatableBitSet columnList, int columnId) static DataValueDescriptor
getColumn
(DataValueDescriptor[] row, FormatableBitSet columnList, int columnId) Get the object for a column identifer (0 based) from a complete or partial row.static final FetchDescriptor
getFetchDescriptorConstant
(int single_column_number) Return a FetchDescriptor which describes a single column set.static int
getNumberOfColumns
(int maxColumnNumber, FormatableBitSet columnList) Get the number of columns represented by a FormatableBitSet.static FormatableBitSet
getQualifierBitSet
(Qualifier[][] qualifiers) Get a FormatableBitSet representing all the columns represented in a qualifier list.static boolean
isRowEmpty
(DataValueDescriptor[] row) See if a row actually contains no columns.static DataValueDescriptor[]
newRowFromTemplate
(DataValueDescriptor[] template) Generate an "empty" row from an array of DataValueDescriptor objects.static DataValueDescriptor[]
newTemplate
(DataValueFactory dvf, FormatableBitSet column_list, int[] format_ids, int[] collation_ids) Generate a template row of DataValueDescriptor'sstatic int
nextColumn
(Object[] row, FormatableBitSet columnList, int startColumn) Get the next valid column after or including start column.static final boolean
qualifyRow
(DataValueDescriptor[] row, Qualifier[][] qual_list) Process the qualifier list on the row, return true if it qualifies.static String
return string version of row.static String
return string version of a HashTable returned from a FetchSet.
-
Field Details
-
EMPTY_ROW
An object that can be used on a fetch to indicate no fields need to be fetched. -
EMPTY_ROW_BITSET
An object that can be used on a fetch as a FormatableBitSet to indicate no fields need to be fetched. -
EMPTY_ROW_FETCH_DESCRIPTOR
An object that can be used on a fetch as a FormatableBitSet to indicate no fields need to be fetched. -
ROWUTIL_FETCH_DESCRIPTOR_CONSTANTS
-
-
Constructor Details
-
RowUtil
private RowUtil()
-
-
Method Details
-
getColumn
public static DataValueDescriptor getColumn(DataValueDescriptor[] row, FormatableBitSet columnList, int columnId) Get the object for a column identifer (0 based) from a complete or partial row.- Parameters:
row
- the rowcolumnList
- valid columns in the rowcolumnId
- which column to return (0 based)- Returns:
- the obejct for the column, or null if the column is not represented.
-
getColumn
-
getQualifierBitSet
Get a FormatableBitSet representing all the columns represented in a qualifier list.- Returns:
- a FormatableBitSet describing the valid columns.
-
getNumberOfColumns
Get the number of columns represented by a FormatableBitSet.This is simply a count of the number of bits set in the FormatableBitSet.
- Parameters:
maxColumnNumber
- Because the FormatableBitSet.size() can't be used as the number of columns, allow caller to tell the maximum column number if it knows. -1 means caller does not know. >=0 number is the largest column number.columnList
- valid columns in the row- Returns:
- The number of columns represented in the FormatableBitSet.
-
isRowEmpty
See if a row actually contains no columns. Returns true if row is null or row.length is zero.- Returns:
- true if row is empty.
-
columnOutOfRange
public static int columnOutOfRange(DataValueDescriptor[] row, FormatableBitSet columnList, int maxColumns) Return the column number of the first column out of range, or a number less than zero if all columns are in range. -
nextColumn
Get the next valid column after or including start column. Returns -1 if no valid columns exist after startColumn -
getFetchDescriptorConstant
Return a FetchDescriptor which describes a single column set.This routine returns one of a set of constant FetchDescriptor's, and should not be altered by the caller.
-
newTemplate
public static DataValueDescriptor[] newTemplate(DataValueFactory dvf, FormatableBitSet column_list, int[] format_ids, int[] collation_ids) throws StandardException Generate a template row of DataValueDescriptor'sGenerate an array of DataValueDescriptor objects which will be used to make calls to newRowFromClassInfoTemplate(), to repeatedly and efficiently generate new rows. This is important for certain applications like the sorter and fetchSet which generate large numbers of "new" empty rows.
- Parameters:
column_list
- A bit set indicating which columns to include in row.format_ids
- an array of format id's, one per column in row.- Returns:
- The new row.
- Throws:
StandardException
- Standard exception policy.
-
newRowFromTemplate
public static DataValueDescriptor[] newRowFromTemplate(DataValueDescriptor[] template) throws StandardException Generate an "empty" row from an array of DataValueDescriptor objects.Generate an array of new'd objects by using the getNewNull() method on each of the DataValueDescriptor objects.
- Parameters:
template
- An array of DataValueDescriptor objects each of which can be used to create a new instance of the appropriate type to build a new empty template row.- Returns:
- The new row.
- Throws:
StandardException
- Standard exception policy.
-
toString
return string version of row.For debugging only.
- Parameters:
row
- The row.- Returns:
- The string version of row.
-
toString
return string version of a HashTable returned from a FetchSet.- Returns:
- The string version of row.
-
qualifyRow
public static final boolean qualifyRow(DataValueDescriptor[] row, Qualifier[][] qual_list) throws StandardException Process the qualifier list on the row, return true if it qualifies.A two dimensional array is to be used to pass around a AND's and OR's in conjunctive normal form. The top slot of the 2 dimensional array is optimized for the more frequent where no OR's are present. The first array slot is always a list of AND's to be treated as described above for single dimensional AND qualifier arrays. The subsequent slots are to be treated as AND'd arrays or OR's. Thus the 2 dimensional array qual[][] argument is to be treated as the following, note if qual.length = 1 then only the first array is valid and it is and an array of and clauses: (qual[0][0] and qual[0][0] ... and qual[0][qual[0].length - 1]) and (qual[1][0] or qual[1][1] ... or qual[1][qual[1].length - 1]) and (qual[2][0] or qual[2][1] ... or qual[2][qual[2].length - 1]) ... and (qual[qual.length - 1][0] or qual[1][1] ... or qual[1][2])
- Parameters:
row
- The row being qualified.qual_list
- 2 dimensional array representing conjunctive normal form of simple qualifiers.- Returns:
- true if the row qualifies.
- Throws:
StandardException
- Standard exception policy.
-