diff --git a/src/main/java/report/FeedbackReportGenerator.java b/src/main/java/report/FeedbackReportGenerator.java index 77297c6..9617f53 100644 --- a/src/main/java/report/FeedbackReportGenerator.java +++ b/src/main/java/report/FeedbackReportGenerator.java @@ -56,27 +56,27 @@ } StyleBuilder labelSty - = stl.style() - .bold() - .setHorizontalTextAlignment(HorizontalTextAlignment.RIGHT) - .setVerticalTextAlignment(VerticalTextAlignment.MIDDLE); + = stl.style() + .bold() + .setHorizontalTextAlignment(HorizontalTextAlignment.RIGHT) + .setVerticalTextAlignment(VerticalTextAlignment.MIDDLE); StyleBuilder valSty - = stl.style() - .setHorizontalTextAlignment(HorizontalTextAlignment.LEFT) - .setVerticalTextAlignment(VerticalTextAlignment.MIDDLE); + = stl.style() + .setHorizontalTextAlignment(HorizontalTextAlignment.LEFT) + .setVerticalTextAlignment(VerticalTextAlignment.MIDDLE); StyleBuilder markSty - = stl.style() - .bold() - .setHorizontalTextAlignment(HorizontalTextAlignment.RIGHT) - .setVerticalTextAlignment(VerticalTextAlignment.MIDDLE); + = stl.style() + .bold() + .setHorizontalTextAlignment(HorizontalTextAlignment.RIGHT) + .setVerticalTextAlignment(VerticalTextAlignment.MIDDLE); StyleBuilder criterionSty - = stl.style() - .bold() - .setHorizontalTextAlignment(HorizontalTextAlignment.LEFT) - .setVerticalTextAlignment(VerticalTextAlignment.MIDDLE); + = stl.style() + .bold() + .setHorizontalTextAlignment(HorizontalTextAlignment.LEFT) + .setVerticalTextAlignment(VerticalTextAlignment.MIDDLE); FieldBuilder assessment = field("ASSESSMENT", type.stringType()); FieldBuilder outOf = field("OUT_OF", type.bigDecimalType()); @@ -88,7 +88,7 @@ FieldBuilder category = field("CATEGORY", type.stringType()); CustomGroupBuilder categoryGroup = grp.group(category) - .setStyle(stl.style().bold().setFontSize(13)); + .setStyle(stl.style().bold().setFontSize(13)); FieldBuilder criterion = field("CRITERION", type.stringType()); FieldBuilder result = field("RESULT", type.bigDecimalType()); @@ -101,100 +101,107 @@ if (MarkingProperties.reportShowMax()) { marksHeader = cmp.horizontalList().add( - cmp.text("").setStyle(criterionSty).setWidth(50), - cmp.text("Mark").setStyle(markSty).setWidth(4), - cmp.text("/").setStyle(labelSty).setWidth(1), - cmp.horizontalGap(5), - cmp.text("Out Of").setStyle(valSty).setWidth(4) + cmp.text("").setStyle(criterionSty).setWidth(50), + cmp.text("Mark").setStyle(markSty).setWidth(4), + cmp.text("/").setStyle(labelSty).setWidth(1), + cmp.horizontalGap(5), + cmp.text("Out Of").setStyle(valSty).setWidth(4) ); marksDetails = cmp.horizontalList() - .add( - cmp.text(criterion).setStyle(criterionSty).setWidth(50), - cmp.text(result).setStyle(markSty).setWidth(4), - cmp.text("/").setStyle(labelSty).setWidth(1), - cmp.horizontalGap(5), - cmp.text(max).setStyle(valSty).setWidth(4) - ); + .add( + cmp.text(criterion).setStyle(criterionSty).setWidth(50), + cmp.text(result).setStyle(markSty).setWidth(4), + cmp.text("/").setStyle(labelSty).setWidth(1), + cmp.horizontalGap(5), + cmp.text(max).setStyle(valSty).setWidth(4) + ); } else { marksHeader = cmp.horizontalList().add( - cmp.text("").setStyle(criterionSty).setWidth(50), - cmp.text("Mark").setStyle(markSty).setWidth(4) + cmp.text("").setStyle(criterionSty).setWidth(50), + cmp.text("Mark").setStyle(markSty).setWidth(4) ); marksDetails = cmp.horizontalList().add( - cmp.text(criterion).setStyle(criterionSty).setWidth(50), - cmp.text(result).setStyle(markSty).setWidth(4) + cmp.text(criterion).setStyle(criterionSty).setWidth(50), + cmp.text(result).setStyle(markSty).setWidth(4) ); } try { + + // header details + HorizontalListBuilder headerDetails = cmp.horizontalList() + .add( + cmp.text("Assessment:").setStyle(labelSty).setWidth(18), + cmp.horizontalGap(5), + cmp.text(assessment).setStyle(valSty) + ) + .newRow().add( + cmp.text("ID:").setStyle(labelSty).setWidth(18), + cmp.horizontalGap(5), + cmp.text(id).setStyle(valSty) + ) + .newRow().add( + cmp.text("Name:").setStyle(labelSty).setWidth(18), + cmp.horizontalGap(5), + cmp.text(name).setStyle(valSty) + ) + .newRow().add( + cmp.text("Mark:").setStyle(labelSty).setWidth(18), + cmp.horizontalGap(5), + cmp.text(mark).setStyle(valSty) + ) + .newRow().add( + cmp.text("Out of:").setStyle(labelSty).setWidth(18), + cmp.horizontalGap(5), + cmp.text(outOf).setStyle(valSty) + ); + + if (MarkingProperties.showBonusOnReport()) { + headerDetails.newRow().add( + cmp.text("Bonus:").setStyle(labelSty).setWidth(18), + cmp.horizontalGap(5), + cmp.text(special).setStyle(valSty) + ) + + .newRow().add( + cmp.verticalGap(20), + cmp.horizontalGap(5), + cmp.text("Note: the Bonus is not included in the Mark.").setStyle(valSty) + ); + } + // header report() - .setTemplate(template().setPageMargin(margin(50))) - .setDataSource(new JRMapCollectionDataSource(data)) - .title( - cmp.text(title).setStyle(stl.style().setFontSize(14).bold()), - cmp.verticalGap(10), - cmp.horizontalList() - .add( - cmp.text("Assessment:").setStyle(labelSty).setWidth(18), - cmp.horizontalGap(5), - cmp.text(assessment).setStyle(valSty) - ) - .newRow().add( - cmp.text("ID:").setStyle(labelSty).setWidth(18), - cmp.horizontalGap(5), - cmp.text(id).setStyle(valSty) - ) - .newRow().add( - cmp.text("Name:").setStyle(labelSty).setWidth(18), - cmp.horizontalGap(5), - cmp.text(name).setStyle(valSty) - ) - .newRow().add( - cmp.text("Mark:").setStyle(labelSty).setWidth(18), - cmp.horizontalGap(5), - cmp.text(mark).setStyle(valSty) - ) - .newRow().add( - cmp.text("Out of:").setStyle(labelSty).setWidth(18), - cmp.horizontalGap(5), - cmp.text(outOf).setStyle(valSty) - ) - .newRow().add( - cmp.text("Bonus:").setStyle(labelSty).setWidth(18), - cmp.horizontalGap(5), - cmp.text(special).setStyle(valSty) - ) - .newRow().add( - cmp.text("").setStyle(labelSty).setWidth(18), - cmp.horizontalGap(5), - cmp.text("(bonus not included in the above mark)").setStyle(valSty) - ), - cmp.verticalGap(15) - ) - // details + .setTemplate(template().setPageMargin(margin(50))) + .setDataSource(new JRMapCollectionDataSource(data)) + .title( + cmp.text(title).setStyle(stl.style().setFontSize(14).bold()), + cmp.verticalGap(10), + headerDetails, + cmp.verticalGap(15) + ) + // details - .groupBy(categoryGroup).groupHeader(categoryGroup, - marksHeader, - cmp.line().setPen(stl.pen(2.0f, LineStyle.DOUBLE))) - .detail( - cmp.verticalGap(1), - marksDetails, - cmp.horizontalList( - cmp.horizontalGap(11), - cmp.text(comment).removeLineWhenBlank() - ).setMinHeight(0), - cmp.verticalGap(1), - cmp.line().setPen(stl.penThin()) - ) - .groupFooter(categoryGroup, cmp.verticalGap(18)) - .summary(cmp.text(footer)) - .pageFooter(cmp.pageXofY().setStyle(stl.style().bold())) - - .toPdf(new FileOutputStream(outputDirectory + "/" + fileNamePrefix + "-" + student.getId() + ".pdf")); + .groupBy(categoryGroup).groupHeader(categoryGroup, + marksHeader, + cmp.line().setPen(stl.pen(2.0f, LineStyle.DOUBLE))) + .detail( + cmp.verticalGap(1), + marksDetails, + cmp.horizontalList( + cmp.horizontalGap(11), + cmp.text(comment).removeLineWhenBlank() + ).setMinHeight(0), + cmp.verticalGap(1), + cmp.line().setPen(stl.penThin()) + ) + .groupFooter(categoryGroup, cmp.verticalGap(18)) + .summary(cmp.text(footer)) + .pageFooter(cmp.pageXofY().setStyle(stl.style().bold())) + .toPdf(new FileOutputStream(outputDirectory + "/" + fileNamePrefix + "-" + student.getId() + ".pdf")); } catch (FileNotFoundException | DRException ex) { throw new RuntimeException(ex); }