package scrum.server.project;
import ilarkesto.pdf.APdfContainerElement;
import ilarkesto.pdf.FieldList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import scrum.server.common.APdfCreator;
import scrum.server.risks.Risk;
public class ProductBacklogPdfCreator extends APdfCreator {
private Project project;
public ProductBacklogPdfCreator(Project project) {
super();
this.project = project;
}
@Override
protected void build(APdfContainerElement pdf) {
pdf.paragraph().text("Product Backlog", headerFonts[0]);
pdf.nl();
pdf.paragraph().text("Stories", headerFonts[1]);
List<Requirement> requirements = new ArrayList<Requirement>(project.getRequirements());
Collections.sort(requirements, project.getRequirementsOrderComparator());
for (Requirement req : requirements) {
if (req.isClosed()) continue;
pdf.nl();
pdf.paragraph().text(req.getReferenceAndLabel(), headerFonts[3]);
wiki(pdf, req.getDescription());
FieldList fields = pdf.fieldList().setLabelFontStyle(fieldLabelFont);
if (req.isTestDescriptionSet()) wiki(fields.field("Test"), req.getTestDescription());
if (req.isEstimatedWorkSet()) fields.field("Estimated work").text(req.getEstimatedWork());
}
pdf.nl();
pdf.paragraph().text("Risks", headerFonts[1]);
for (Risk rsk : project.getRisks()) {
pdf.nl();
pdf.paragraph().text(rsk.getReferenceAndLabel(), headerFonts[2]);
wiki(pdf, rsk.getDescription());
FieldList fields = pdf.fieldList().setLabelFontStyle(fieldLabelFont);
fields.field("Priority").text(rsk.getPriorityLabel());
fields.field("Probability").text(rsk.getProbabilityLabel());
if (rsk.isProbabilityMitigationSet())
wiki(fields.field("Probability mitigation"), rsk.getProbabilityMitigation());
fields.field("Impact").text(rsk.getImpactLabel());
if (rsk.isImpactMitigationSet()) wiki(fields.field("Impact mitigation"), rsk.getImpactMitigation());
}
}
@Override
protected String getFilename() {
return "productbacklog";
}
}