TwoDimensionalValueObject (2DVO) is a object that can hold a two dimensional array of ValueObjects. This makes it convenient to store values from a database table. The data is stored in column format with each column being represented by a vector. There are n of these where n is the number of rows. All these are stored in a single vector “values”.
That is, the size of the Vector is the number of rows of the data. The organization is: Vector 'Values' (size()== number of columns) VectorColumn0 [Row0Value, Row1Value, …] (size() = number of rows) VectorColumn1 [Row0Value, Row1Value, …] VectorColumn2 [Row0Value, Row1Value, …] ..
getColumnCount() returns values.size(); getRowCount() returns values.elementAt(0)).size(). The data is square, that is, no column values are missing, no rows are short.
Overall, The core idea of 2DVO is to represent each column as a vector and then store these vectors in a main vector. This structure allows for efficient access to rows and columns.
The following code snippet demonstrates how to extract data from a TwoDimensionalValueObject and populate a java.util.ArrayList with the objects in an object called “dataObject”:
//1. Create a variable to store the 2DVO object values in a java.util.ArrayList
var dataArrayList = new java.util.ArrayList();
//2. Get all data from the database by using Database Raw Table Lookup, the output is in a 2D value object with rows and columns. Asssigne the output to a variable "dataResult:
var dataResult = 2DVO table output;
// Count the rows of the table using vector.getRowCount() method
rowCount = dataResult.getRowCount();
for (var i = 0; i < rowCount; i++) {
// If want to get all the objects, each row is one object
var rowData = dataResult.getRow(i);
// below codes use vector.getValueAt(i, column_index) method to retrieve the values of a specific column and assign it to the corresponding property in the SomeDataObject instance
// Create a new object (replace with your actual object type)
var dataObject = new SomeDataObject();
// To access properties and populate dataObject
dataObject.property1 =dataResult.getValueAt (i, 0);
dataObject.property2=dataResult.getValueAt(i, 1);
dataObject.property3 =dataResult.getValueAt(i, 2);
...
dataObject.property6 = dataResult.getValueAt(i, 5);
dataObject.property7 = dataResult.getValueAt(i, 6);
....
// Add each data object to the dataArrayList
dataArrayList.add(dataObject);
}
