package scrum.server.sprint;
import ilarkesto.pdf.APdfContainerElement;
import ilarkesto.pdf.FieldList;
import scrum.server.common.APdfCreator;
import scrum.server.common.BurndownChart;
import scrum.server.common.ScrumPdfContext;
import scrum.server.common.WikiToPdfConverter;
public class SprintReportPdfCreator extends APdfCreator {
private Sprint sprint;
public SprintReportPdfCreator(Sprint sprint) {
super();
this.sprint = sprint;
}
@Override
protected void build(APdfContainerElement pdf) {
pdf.paragraph().text("Sprint Report", headerFonts[0]);
pdf.nl();
FieldList fields = pdf.fieldList().setLabelFontStyle(fieldLabelFont);
fields.field("Project").text(sprint.getProject().getLabel());
fields.field("Sprint").text(sprint.getLabel());
fields.field("Period").text(
sprint.getBegin() + " - " + sprint.getEnd() + " / " + sprint.getLengthInDays() + " days");
fields.field("Velocity").text(sprint.getVelocity() + " StoryPoints");
fields.field("Product Owner").text(sprint.getProductOwnersAsString());
fields.field("Scrum Master").text(sprint.getScrumMastersAsString());
fields.field("Product Owner").text(sprint.getTeamMembersAsString());
pdf.nl();
pdf.image(BurndownChart.createBurndownChartAsByteArray(sprint, 1000, 500)).setScaleByWidth(150f);
if (sprint.isGoalSet()) pdf.paragraph().nl().text("Goal", headerFonts[1]).nl().text(sprint.getGoal());
if (sprint.isCompletedRequirementLabelsSet()) {
pdf.paragraph().nl().text("Completed Stories", headerFonts[1]).nl();
WikiToPdfConverter.buildPdf(pdf, sprint.getCompletedRequirementLabels(), new ScrumPdfContext());
}
if (sprint.isReviewNoteSet()) {
pdf.paragraph().nl().text("Review notes", headerFonts[1]).nl();
WikiToPdfConverter.buildPdf(pdf, sprint.getReviewNote(), new ScrumPdfContext());
}
if (sprint.isRetrospectiveNoteSet()) {
pdf.paragraph().nl().text("Retrospective notes", headerFonts[1]).nl();
WikiToPdfConverter.buildPdf(pdf, sprint.getRetrospectiveNote(), new ScrumPdfContext());
}
}
@Override
protected String getFilename() {
return "sprint";
}
}