Example usage for com.itextpdf.text.pdf PdfPTable keepRowsTogether

List of usage examples for com.itextpdf.text.pdf PdfPTable keepRowsTogether

Introduction

In this page you can find the example usage for com.itextpdf.text.pdf PdfPTable keepRowsTogether.

Prototype

public void keepRowsTogether(int start) 

Source Link

Document

Defines a range of rows (from the parameter to the last row) that should not allow a page break (if possible).

Usage

From source file:fll.web.report.CategoryScoresByScoreGroup.java

License:Open Source License

@SuppressFBWarnings(value = {
        "SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING" }, justification = "Category name determines table column, winner criteria determines sort")
private void generateReport(final Connection connection, final Document pdfDoc,
        final ChallengeDescription challengeDescription, final Tournament tournament)
        throws SQLException, DocumentException {

    PreparedStatement prep = null;
    ResultSet rs = null;/*  w w  w  .ja v  a  2s.c o  m*/
    try {
        final String challengeTitle = challengeDescription.getTitle();
        final WinnerType winnerCriteria = challengeDescription.getWinner();

        final List<ScoreCategory> subjectiveCategories = challengeDescription.getSubjectiveCategories();
        final Collection<String> eventDivisions = Queries.getAwardGroups(connection);
        final Collection<String> judgingGroups = Queries.getJudgingStations(connection,
                tournament.getTournamentID());

        for (final ScoreCategory catElement : subjectiveCategories) {
            final String catName = catElement.getName();
            final String catTitle = catElement.getTitle();

            prep = connection.prepareStatement("SELECT "//
                    + " Teams.TeamNumber, Teams.TeamName, Teams.Organization, FinalScores." + catName //
                    + " FROM Teams, FinalScores" //
                    + " WHERE FinalScores.Tournament = ?" //
                    + " AND FinalScores.TeamNumber = Teams.TeamNumber" //
                    + " AND FinalScores.TeamNumber IN (" //
                    + "   SELECT TeamNumber FROM TournamentTeams"//
                    + "   WHERE Tournament = ?" //
                    + "   AND event_division = ?" //
                    + "   AND judging_station = ?)" //
                    + " ORDER BY " + catName + " " + winnerCriteria.getSortString() //
            );
            prep.setInt(1, tournament.getTournamentID());
            prep.setInt(2, tournament.getTournamentID());

            for (final String division : eventDivisions) {
                for (final String judgingGroup : judgingGroups) {
                    final PdfPTable table = PdfUtils.createTable(4);

                    createHeader(table, challengeTitle, catTitle, division, judgingGroup, tournament);
                    prep.setString(3, division);
                    prep.setString(4, judgingGroup);

                    boolean haveData = false;
                    rs = prep.executeQuery();
                    while (rs.next()) {
                        haveData = true;

                        final int teamNumber = rs.getInt(1);
                        final String teamName = rs.getString(2);
                        final String organization = rs.getString(3);

                        table.addCell(PdfUtils.createCell(String.valueOf(teamNumber)));
                        table.addCell(PdfUtils.createCell(null == teamName ? "" : teamName));
                        table.addCell(PdfUtils.createCell(null == organization ? "" : organization));
                        double score = rs.getDouble(4);
                        if (rs.wasNull()) {
                            score = Double.NaN;
                        }
                        if (Double.isNaN(score)) {
                            table.addCell(PdfUtils.createCell("No Score"));
                        } else {
                            table.addCell(PdfUtils.createCell(Utilities.NUMBER_FORMAT_INSTANCE.format(score)));
                        }
                    }

                    if (haveData) {
                        table.keepRowsTogether(0);
                        pdfDoc.add(table);

                        pdfDoc.add(Chunk.NEXTPAGE);
                    }

                } // foreach station
            } // foreach division

            SQLFunctions.close(prep);
            prep = null;
        } // foreach category

    } finally {
        SQLFunctions.close(rs);
        SQLFunctions.close(prep);
    }

}