Rows as Displayed in Screen

Rows from Database

Rows grouping Logic
List<RowsBean> outputList = RowsToBeDisplayedList;
HashMap<String, ArrayList> superGroupPoints = new HashMap<String, ArrayList>();
HashMap<String, EWMDecimal> subGroupTotalPoints = new HashMap<String, Integer>();
String groupName = null;
String prevGroupName = null;
String superGroupName = null;
String prevSuperGroupName = null;
List<Map> subGroupPointsList = new ArrayList();
//Compute grouping totals
Iterator itr = cicCarryPointsList.iterator();
while(itr.hasNext())
{
RowsBean rowBean = (RowsBean) itr.next();
superGroupName = rowBean.getSuperGroupName();
groupName = rowBean.getGroupName();
//Addition of points summed at Group Level
if ((prevGroupName != null && !prevGroupName.equals(groupName))
|| (prevSuperGroupName != null && !prevSuperGroupName.equals(superGroupName)))
{
subGroupPointsList.add(subGroupTotalPoints);
subGroupTotalPoints = new HashMap<String, Integer>();
}
//Rows at GroupLevel with Sub Groups should be added only when Super Group Changes
if((prevSuperGroupName != null && !prevSuperGroupName.equals(superGroupName)))
{
superGroupPoints.put(prevSuperGroupName, (ArrayList) subGroupPointsList);
subGroupPointsList = new ArrayList();
}
Integer subGroupValPoints = rowBean.getPoints();
//If InvGrp level Map exists
if (subGroupTotalPoints.get(groupName) != null) {
Integer currSummedPointsAtGrpLevel = subGroupTotalPoints.get(groupName);
currSummedPointsAtGrpLevel = currSummedPointsAtGrpLevel.add(subGroupValPoints);
subGroupTotalPoints.put(groupName, currSummedPointsAtGrpLevel);
} else {
subGroupTotalPoints.put(groupName, subGroupValPoints);
}
//Incase of last element the loop exits without adding last summed element
//To prevent that we add it with out current and prev comparison
if(!itr.hasNext())
{
subGroupPointsList.add(subGroupTotalPoints);
superGroupPoints.put(superGroupName, (ArrayList) subGroupPointsList);
}
prevSuperGroupName = superGroupName;
prevGroupName = groupName;
}
Retrieval of Rows for Displaying in Screen
String currentSuperGrouping = "";
String prevSuperGrouping = "";
String currGrouping = "";
String prevGrouping = "";
String Value = "";
for (RowsBean rowBean : outputList)
{
currentSuperGrouping = rowBean.getSuperGroupName();
currGrouping = rowBean.getGroupName();
//Level 1 - New Super Group Creation
//New Super Group should be created when ever prevSuperGrouping and currentSuperGrouping are different
if (!currentSuperGrouping.equals(prevSuperGrouping))
{
.
.
Super Group Row Creation HTML Code Goes Here
.
.
.
}
//Level 2 - Group addition under Super Group
//New Group should be created when ever SuperGroup or Group Changes
if(!currGrouping.equals(prevGrouping) || !currentSuperGrouping.equals(prevSuperGrouping))
{
//Taking Group Level Maps List
ArrayList GroupLevelMapList = superGroup.get(rowBean.getGroupName());
Iterator itr = GroupLevelMapList.iterator();
//Taking the Summed up value at Group Level from List
while (itr.hasNext())
{
Map ii = (Map) itr.next();
Points = ii.get(rowBean.getGroupName());
}
.
.
Group Row Creation HTML Code Goes Here
.
.
.
}
//Level 3 - Sub Group Rows Addition
//Rows will be added
if(currentSuperGrouping.equals(rowBean.getGroupName) || currentSuperGrouping.equals(rowBean.getSubGroupName))
{
.
.
Sub Group Row Creation HTML Code Goes Here
.
.
.
}
prevSuperGrouping = currentSuperGrouping;
prevGrouping = currGrouping;
}