Skip to content

Commit

Permalink
set derived uuids into cloned table page footer elements
Browse files Browse the repository at this point in the history
  • Loading branch information
teodord committed May 11, 2021
1 parent 6c19a04 commit 99f71f4
Showing 1 changed file with 19 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
import net.sf.jasperreports.engine.base.JRBaseTextElement;
import net.sf.jasperreports.engine.component.FillContext;
import net.sf.jasperreports.engine.design.JRDesignBand;
import net.sf.jasperreports.engine.design.JRDesignElement;
import net.sf.jasperreports.engine.design.JRDesignElementGroup;
import net.sf.jasperreports.engine.design.JRDesignExpression;
import net.sf.jasperreports.engine.design.JRDesignFrame;
Expand Down Expand Up @@ -1734,7 +1735,8 @@ protected void addSummaryGroup(List<FillColumn> fillColumns)
// we can't do that directly to the band since its print when expression
// is evaluated too soon
JRDesignFrame footerFrame = new JRDesignFrame();
UUID uuid = DigestUtils.instance().deriveUUID(
DigestUtils digestUtils = DigestUtils.instance();
UUID uuid = digestUtils.deriveUUID(
fillContext.getComponentElement().getUUID(),
BandTypeEnum.GROUP_FOOTER + "-" + SUMMARY_GROUP_NAME);
footerFrame.setUUID(uuid);
Expand All @@ -1750,8 +1752,8 @@ protected void addSummaryGroup(List<FillColumn> fillColumns)
footerFrame.setPrintWhenExpression(footerPrintWhen);

// clone the contents of the page footer in the frame
List<JRChild> footerElements = pageFooter.getChildren();
for (Iterator<JRChild> iterator = footerElements.iterator(); iterator
List<JRChild> footerChildren = pageFooter.getChildren();
for (Iterator<JRChild> iterator = footerChildren.iterator(); iterator
.hasNext();)
{
JRChild child = iterator.next();
Expand All @@ -1773,6 +1775,20 @@ else if (childClone instanceof JRElementGroup)
);
}
}

// set derived uuid for cloned elements so that it does not get randomly regenerated;
// we count on the fact that cloned elements would be as many as the original elements
// and appear in the same order in the array
JRElement[] footerElements = pageFooter.getElements();
JRElement[] footerCloneElements = footerFrame.getElements();
for (int i = 0; i < footerElements.length; i++)
{
uuid = digestUtils.deriveUUID(
footerElements[i].getUUID(),
BandTypeEnum.GROUP_FOOTER + "-" + SUMMARY_GROUP_NAME);

((JRDesignElement)footerCloneElements[i]).setUUID(uuid);
}

groupFooter.addElement(footerFrame);
((JRDesignSection) summaryGroup.getGroupFooterSection()).addBand(groupFooter);
Expand Down

0 comments on commit 99f71f4

Please sign in to comment.