List of usage examples for com.itextpdf.text.pdf PdfPTable addCell
public void addCell(final Phrase phrase)
From source file:bodyfitness.relatorios.Relatorio.java
public void GeraRelatorioMaquinaSManutencao(String caminho) { Document documento = new Document(); try {// w w w .ja v a 2 s . co m PdfWriter.getInstance(documento, new FileOutputStream(caminho + "/MaquinaSManutencao.pdf")); documento.open(); EquipamentoDAO dao = new EquipamentoDAO(); List<Equipamento> equips = dao.consultarSemManutancao(); PdfPTable tabela = new PdfPTable(3); tabela.addCell("ID"); tabela.addCell("Nome"); tabela.addCell("D. Ultima Mantencao"); SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); Paragraph p = new Paragraph(" Relatrio - Clientes Mquinas Sem Manuteno\n\n\n"); documento.add(p); for (Equipamento e : equips) { tabela.addCell(e.getId().toString()); tabela.addCell(e.getNome()); tabela.addCell(formato.format(e.getDataDaUltimaManutencao())); } documento.add(tabela); documento.close(); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Erro ao gerar documento:\n" + e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE); } }
From source file:bodyfitness.relatorios.Relatorio.java
public void GeraRelatorioTreino(String caminho, Long id) { ClienteDAO cdao = new ClienteDAO(); Cliente cliente = cdao.consultarPorId(id); Document documento = new Document(); Paragraph p = new Paragraph("Nome: " + cliente.getNome() + "\n" + "Id: " + cliente.getId().toString() + "\n" + "Idade: " + cliente.getIdade().toString() + "\n\n"); PdfPTable tabela = new PdfPTable(3); tabela.addCell("Maquina"); tabela.addCell("Sries"); tabela.addCell("Repeties"); try {//from ww w . jav a2s .com PdfWriter.getInstance(documento, new FileOutputStream(caminho + "/MaquinaSManutencao.pdf")); Treino t = cliente.getTreino(); for (int i = 0; i < t.getSeries().size(); i++) { tabela.addCell(t.getSeries().get(i).getEquipamento().getNome()); tabela.addCell(String.valueOf(t.getSeries().get(i).getQuantidadeDeSeries())); tabela.addCell(String.valueOf(t.getSeries().get(i).getRepeticoes())); } documento.add(p); documento.add(tabela); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Erro em relatrio de treino:\n" + e.getMessage()); } finally { documento.close(); } }
From source file:bodyfitness.relatorios.Relatorio.java
public void GeraRelatorioCondFisico(String caminho, Long id) { Document documento = new Document(); ClienteDAO cdao = new ClienteDAO(); Cliente c = cdao.consultarPorId(id); Paragraph p = new Paragraph("Nome: " + c.getNome() + "\n" + "Id: " + c.getId().toString() + "\n" + "Idade: " + c.getIdade().toString() + "\n\n"); try {//from w w w . j a v a2 s .c o m PdfWriter.getInstance(documento, new FileOutputStream(caminho + "/CondFisico.pdf")); documento.open(); PdfPTable tabela = new PdfPTable(2); tabela.addCell("Aspecto"); tabela.addCell("Valor"); //SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); CondicionamentoFisico cf = c.getCondicionamentoFisico(); tabela.addCell("IMC"); tabela.addCell(cf.getComposicaoCorporal().getImc().toString()); tabela.addCell("Massa Gorda"); tabela.addCell(cf.getComposicaoCorporal().getMassaGorda().toString()); tabela.addCell("Massa Magra"); tabela.addCell(cf.getComposicaoCorporal().getMassaMagra().toString()); tabela.addCell("Percentual atual de gordura"); tabela.addCell(cf.getComposicaoCorporal().getPercentualGorduraAtual().toString()); tabela.addCell("Percentual ideal de gordura"); tabela.addCell(cf.getComposicaoCorporal().getPercentualGorduraIdeal().toString()); tabela.addCell("Abdominal"); tabela.addCell(cf.getDobrasCutaneas().getAbdominal().toString()); tabela.addCell("Axilar Media"); tabela.addCell(cf.getDobrasCutaneas().getAxilarMedia().toString()); tabela.addCell("Bicipital"); tabela.addCell(cf.getDobrasCutaneas().getBicipital().toString()); tabela.addCell("Coxa"); tabela.addCell(cf.getDobrasCutaneas().getCoxa().toString()); tabela.addCell("Panturrilha"); tabela.addCell(cf.getDobrasCutaneas().getPanturrilha().toString()); tabela.addCell("Peitoral"); tabela.addCell(cf.getDobrasCutaneas().getPeitoral().toString()); tabela.addCell("Subescapular"); tabela.addCell(cf.getDobrasCutaneas().getSubescapular().toString()); tabela.addCell("Supra iliaca"); tabela.addCell(cf.getDobrasCutaneas().getSupraIliaca().toString()); tabela.addCell("Tricipital"); tabela.addCell(cf.getDobrasCutaneas().getTricipital().toString()); tabela.addCell("Antebrao Direito"); tabela.addCell(cf.getMembrosInferiores().getAnteBracoDireito().toString()); tabela.addCell("Brao Contrado Direito"); tabela.addCell(cf.getMembrosInferiores().getBracoContraidoDireito().toString()); tabela.addCell("Brao Relaxado Direito"); tabela.addCell(cf.getMembrosInferiores().getBracoRelaxadoDireito().toString()); tabela.addCell("Brao Relaxado Esquerdo"); tabela.addCell(cf.getMembrosInferiores().getBracoRelaxadoEsquerdo().toString()); tabela.addCell("Coxa Esquerda"); tabela.addCell(cf.getMembrosInferiores().getCoxaEsquerdo().toString()); tabela.addCell("Panturrilha Direita"); tabela.addCell(cf.getMembrosInferiores().getPanturrilhaDireito().toString()); tabela.addCell("Abdome"); tabela.addCell(cf.getMembrosSuperiores().getAbdome().toString()); tabela.addCell("Cintura"); tabela.addCell(cf.getMembrosSuperiores().getCintura().toString()); tabela.addCell("Ombro"); tabela.addCell(cf.getMembrosSuperiores().getOmbro().toString()); tabela.addCell("Pescoo"); tabela.addCell(cf.getMembrosSuperiores().getPescoco().toString()); tabela.addCell("Quadril"); tabela.addCell(cf.getMembrosSuperiores().getQuadril().toString()); tabela.addCell("Torx"); tabela.addCell(cf.getMembrosSuperiores().getToraxRelaxado().toString()); documento.add(p); documento.add(tabela); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Erro ao gerar documento:\n" + e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE); } finally { documento.close(); } }
From source file:bookshopautomationsoftware.GenerateReceipt.java
private static void createTable(Section subCatPart) throws BadElementException { PdfPTable table = new PdfPTable(4); // t.setBorderColor(BaseColor.GRAY); // t.setPadding(4); // t.setSpacing(4); // t.setBorderWidth(1); addEmptyLine(preface, 2);//from w w w. ja v a2s . c o m PdfPCell c1 = new PdfPCell(new Phrase("slno")); c1.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(c1); c1 = new PdfPCell(new Phrase("isbn")); c1.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(c1); c1 = new PdfPCell(new Phrase("quantity")); c1.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(c1); c1 = new PdfPCell(new Phrase("price")); c1.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(c1); table.setHeaderRows(1); try { Connection con = DriverManager.getConnection(DB_URL1, USER1, PASS1); Statement stmnt = con.createStatement(); String sql = "SELECT slno,book,quantity FROM cart"; Connection con1 = DriverManager.getConnection(DB_URL1, USER1, PASS1); Statement stmnt1 = con.createStatement(); int count = 0; ResultSet rs = stmnt.executeQuery(sql); ResultSet rs1; float total = 0; while (rs.next()) { String sql1 = "SELECT isbn,price FROM booktable WHERE isbn = " + rs.getLong("book"); rs1 = stmnt1.executeQuery(sql1); rs1.next(); count++; table.addCell("" + rs.getInt("slno")); table.addCell("" + rs.getLong("book")); table.addCell("" + rs.getInt("quantity")); table.addCell("" + rs1.getFloat("price")); total += (rs1.getFloat("price")) * (rs.getInt("quantity")); // model.addRow(new Object[]{(""+rs.getInt("slno")),""+rs.getLong("book"),""+rs.getInt("quantity")}); } table.addCell(""); table.addCell(""); table.addCell(""); table.addCell("" + total); if (count == 0) { // dispose(); return; } } catch (Exception e) { System.out.println(" " + e + " is caught"); } /*table.addCell("1.0"); table.addCell("1.1"); table.addCell("1.2"); table.addCell("2.1"); table.addCell("2.2"); table.addCell("2.3");*/ subCatPart.add(table); }
From source file:bouttime.report.award.AwardInventoryReport.java
License:Open Source License
private static PdfPTable getDataTable(int[] awardCounts, int maxAward) throws DocumentException { Font detailFont = new Font(Font.FontFamily.TIMES_ROMAN, 10); // create and add the table PdfPTable datatable = new PdfPTable(2); int colWidths[] = { 90, 10 }; // percentage datatable.setWidths(colWidths);/* w w w .ja v a 2 s .co m*/ datatable.setWidthPercentage(100); datatable.getDefaultCell().setBorderWidth(1); datatable.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE); for (int i = 0; i < maxAward; i++) { if ((i % 2) == 0) { datatable.getDefaultCell().setGrayFill(0.9f); } else { datatable.getDefaultCell().setGrayFill(1); } String place = null; switch (i) { case 0: place = "1st Place"; break; case 1: place = "2nd Place"; break; case 2: place = "3rd Place"; break; case 3: place = "4th Place"; break; case 4: place = "5th Place"; break; case 5: place = "6th Place"; break; case 6: place = "7th Place"; break; default: logger.warn("unexpected place value : " + i); place = "???"; break; } datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT); datatable.addCell(new Phrase(place, detailFont)); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); datatable.addCell(new Phrase(Integer.toString(awardCounts[i]), detailFont)); } datatable.setSpacingBefore(5f); datatable.setSpacingAfter(15f); return datatable; }
From source file:bouttime.report.award.AwardReport.java
License:Open Source License
/** * Generate an award report./*from ww w . jav a2 s .c o m*/ * @param dao Dao object to use to retrieve data. * @param session Session to generate the report for. * @param group Group to generate report for. This takes precedence, so * if not null, then the report will be generated for this group. * @return True if the report was generated. */ private static boolean doReport(Dao dao, String session, Group group) { if (!dao.isOpen()) { return false; } // step 1: creation of a document-object Document document = new Document(); try { // step 2: creation of the writer FileOutputStream fos = createOutputFile(); if (fos == null) { return false; } PdfWriter.getInstance(document, fos); // step 3: we open the document document.open(); // step 4: create and add content // create and add the header Paragraph p1 = new Paragraph(new Paragraph( String.format("%s %s %s, %s", dao.getName(), dao.getMonth(), dao.getDay(), dao.getYear()), FontFactory.getFont(FontFactory.HELVETICA, 10))); document.add(p1); Paragraph p2 = new Paragraph( new Paragraph("Award Report", FontFactory.getFont(FontFactory.HELVETICA, 14))); p2.setAlignment(Paragraph.ALIGN_CENTER); document.add(p2); Font headerFont = new Font(Font.FontFamily.TIMES_ROMAN, 12); Font detailFont = new Font(Font.FontFamily.TIMES_ROMAN, 10); PdfPCell headerCell = new PdfPCell(); headerCell.setVerticalAlignment(Element.ALIGN_MIDDLE); headerCell.setPadding(3); headerCell.setBorderWidth(2); List<Group> groups; if (group != null) { groups = new ArrayList<Group>(); groups.add(group); } else if (session != null) { groups = dao.getGroupsBySession(session); } else { groups = dao.getAllGroups(); } for (Group g : groups) { // create and add the table PdfPTable datatable = new PdfPTable(4); int colWidths[] = { 30, 30, 30, 10 }; // percentage datatable.setWidths(colWidths); datatable.setWidthPercentage(100); datatable.getDefaultCell().setPadding(3); datatable.getDefaultCell().setBorderWidth(2); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); // The header has the group name headerCell.setPhrase(new Phrase(g.toString(), headerFont)); headerCell.setColspan(4); datatable.addCell(headerCell); datatable.setHeaderRows(1); // this is the end of the table header datatable.getDefaultCell().setBorderWidth(1); datatable.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE); List<Wrestler> wList = getSortedAwardList(g); int i = 0; for (Wrestler w : wList) { if ((i++ % 2) == 0) { datatable.getDefaultCell().setGrayFill(0.9f); } else { datatable.getDefaultCell().setGrayFill(1); } datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT); datatable.addCell(new Phrase(w.getFirstName(), detailFont)); datatable.addCell(new Phrase(w.getLastName(), detailFont)); datatable.addCell(new Phrase(w.getTeamName(), detailFont)); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); Integer place = w.getPlace(); String placeStr = (place == null) ? "" : place.toString(); datatable.addCell(new Phrase(placeStr, detailFont)); } datatable.setSpacingBefore(5f); datatable.setSpacingAfter(15f); document.add(datatable); } } catch (DocumentException de) { logger.error("Document Exception", de); return false; } // step 5: we close the document document.close(); return true; }
From source file:bouttime.report.boutsequence.BoutSequenceReport.java
License:Open Source License
private static PdfPTable addBoutSequences(List<Wrestler> wList, String session) throws DocumentException { // create and add the table Font headerFont = new Font(Font.FontFamily.TIMES_ROMAN, 12); Font detailFont = new Font(Font.FontFamily.TIMES_ROMAN, 10); PdfPCell headerCell = new PdfPCell(); headerCell.setVerticalAlignment(Element.ALIGN_MIDDLE); headerCell.setPadding(3);//from w ww .j av a2 s. c o m headerCell.setBorderWidth(2); PdfPTable datatable = new PdfPTable(3); int colWidths[] = { 5, 25, 70 }; // percentage datatable.setWidths(colWidths); datatable.setWidthPercentage(100); datatable.getDefaultCell().setPadding(3); datatable.getDefaultCell().setBorderWidth(2); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); headerCell.setPhrase(new Phrase("Mat", headerFont)); datatable.addCell(headerCell); headerCell.setPhrase(new Phrase("Name", headerFont)); datatable.addCell(headerCell); headerCell.setPhrase(new Phrase("Bout Sequence", headerFont)); datatable.addCell(headerCell); datatable.setHeaderRows(1); // this is the end of the table header datatable.getDefaultCell().setBorderWidth(1); datatable.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE); Collections.sort(wList, new WrestlerMatNameSort()); int i = 0; for (Wrestler w : wList) { if (w.getGroup() == null) { logger.debug(String.format("Wrestler [%s] is not in a group, skipping.", w.getShortName())); continue; } if ((session != null) && !session.equalsIgnoreCase(w.getGroup().getSession())) { logger.debug(String.format("Wrestler [%s] is in a group but not in session %s, skipping.", w.getShortName(), session)); continue; } if ((i++ % 2) == 0) { datatable.getDefaultCell().setGrayFill(0.9f); } else { datatable.getDefaultCell().setGrayFill(1); } List<Bout> bList = BoutSequence.calculate(w); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); datatable.addCell(new Phrase(w.getGroup().getMat(), detailFont)); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT); datatable.addCell(new Phrase(String.format("%s %s", w.getFirstName(), w.getLastName()), detailFont)); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT); String boutSequenceString = getBoutSequenceString(bList); datatable.addCell(new Phrase(boutSequenceString, detailFont)); } datatable.setSpacingBefore(5f); datatable.setSpacingAfter(15f); return (i > 0 ? datatable : null); }
From source file:bouttime.report.matkey.MatKeyReport.java
License:Open Source License
/** * Generate the Mat Key report./*from www .j a va2 s . com*/ * This is a color-coded report that maps the groups to a mat. * @param dao Dao object to use to retrieve data. * @return True if the report was generated. */ public static boolean doReport(Dao dao) { if (!dao.isOpen()) { logger.warn("Cannot create report : DAO not open"); return false; } String matValues = dao.getMatValues(); if ((matValues == null) || matValues.isEmpty()) { JFrame mainFrame = BoutTimeApp.getApplication().getMainFrame(); JOptionPane.showMessageDialog(mainFrame, "Mat values are not configured." + "\nSet the mat values in 'Edit -> Configuration'", "Mat Key Report error", JOptionPane.WARNING_MESSAGE); logger.warn("Cannot create report : mat values not configured"); return false; } // step 1: creation of a document-object Document document = new Document(); try { // step 2: creation of the writer FileOutputStream fos = createOutputFile(); if (fos == null) { return false; } PdfWriter.getInstance(document, fos); // step 3: we open the document document.open(); // step 4: create and add content // create and add the header Paragraph p1 = new Paragraph(new Paragraph( String.format("%s %s %s, %s", dao.getName(), dao.getMonth(), dao.getDay(), dao.getYear()), FontFactory.getFont(FontFactory.HELVETICA, 10))); document.add(p1); Paragraph p2 = new Paragraph( new Paragraph("Mat Key Report", FontFactory.getFont(FontFactory.HELVETICA, 14))); p2.setAlignment(Paragraph.ALIGN_CENTER); document.add(p2); int cols = 4; // Class, Div, Weight, Mat // create and add the table PdfPTable datatable = new PdfPTable(cols); //int colWidths[] = { 55, 15, 15, 15 }; // percentage //datatable.setWidths(colWidths); datatable.getDefaultCell().setPadding(3); datatable.getDefaultCell().setBorderWidth(2); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); datatable.addCell("Class"); datatable.addCell("Div"); datatable.addCell("Weight"); datatable.addCell("Mat"); datatable.setHeaderRows(1); // this is the end of the table header datatable.getDefaultCell().setBorderWidth(1); // Prepare the list of groups List<Group> groups = dao.getAllGroups(); Collections.sort(groups, new GroupClassDivWtSort()); // Prepare the list of mat values String[] mats = matValues.split(","); List<String> matList = new ArrayList<String>(); for (String m : mats) { matList.add(m.trim()); } for (Group g : groups) { String mat = g.getMat(); int idx = matList.indexOf(mat); datatable.getDefaultCell().setBackgroundColor(colorMap.get(idx)); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT); datatable.addCell(g.getClassification()); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); datatable.addCell(g.getAgeDivision()); datatable.addCell(g.getWeightClass()); datatable.addCell(g.getMat()); } datatable.setSpacingBefore(15f); // space between title and table document.add(datatable); } catch (DocumentException de) { logger.error("Document Exception", de); return false; } // step 5: we close the document document.close(); return true; }
From source file:bouttime.report.team.TeamReport.java
License:Open Source License
/** * Generate a summary report of the teams in the tournament. * This report lists the teams and the number of wresters on the team. * @param dao Dao object to use to retrieve data. * @return True if the report was generated. *//*from w w w.j a va 2s . c o m*/ public static boolean doSummary(Dao dao) { if (!dao.isOpen()) { return false; } // step 1: creation of a document-object Document document = new Document(); try { // step 2: creation of the writer FileOutputStream fos = createOutputFile(); if (fos == null) { return false; } PdfWriter.getInstance(document, fos); // step 3: we open the document document.open(); // step 4: create and add content // create and add the header Paragraph p1 = new Paragraph(new Paragraph( String.format("%s %s %s, %s", dao.getName(), dao.getMonth(), dao.getDay(), dao.getYear()), FontFactory.getFont(FontFactory.HELVETICA, 10))); document.add(p1); Paragraph p2 = new Paragraph( new Paragraph("Team Summary Report", FontFactory.getFont(FontFactory.HELVETICA, 14))); p2.setAlignment(Paragraph.ALIGN_CENTER); document.add(p2); int cols = 2; // Team name and Total String classVals = dao.getClassificationValues(); String[] classes = null; if (classVals != null) { if (classVals.length() > 0) { classes = classVals.split(","); cols += classes.length; } } // create and add the table PdfPTable datatable = new PdfPTable(cols); //int colWidths[] = { 55, 15, 15, 15 }; // percentage //datatable.setWidths(colWidths); datatable.getDefaultCell().setPadding(3); datatable.getDefaultCell().setBorderWidth(2); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); datatable.addCell("Team Name"); // Make a column for each classification value int[] classesTotals = null; if (classes != null) { for (String c : classes) { datatable.addCell(c.trim()); } classesTotals = new int[classes.length]; for (int i = 0; i < classesTotals.length; i++) { classesTotals[i] = 0; } } datatable.addCell("Total"); datatable.setHeaderRows(1); // this is the end of the table header datatable.getDefaultCell().setBorderWidth(1); List<String> teams = dao.getTeams(); int total = 0; // total count of all wrestlers in this method int i = 0; for (String t : teams) { if ((i++ % 2) == 0) { datatable.getDefaultCell().setGrayFill(0.9f); } else { datatable.getDefaultCell().setGrayFill(1); } List<Wrestler> wrestlers = dao.getWrestlersByTeam(t); int count = wrestlers.size(); int rowTotal = 0; total += count; datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT); datatable.addCell(t); if (classes != null) { //for (String c : classes) { for (int idx = 0; idx < classes.length; idx++) { String c = classes[idx].trim(); List<Wrestler> wrestlers2 = dao.getWrestlersByTeamClass(t, c); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); int count2 = wrestlers2.size(); datatable.addCell(Integer.toString(count2)); classesTotals[idx] += count2; rowTotal += count2; } } datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); datatable.addCell(Integer.toString(count)); // Check if there is an error in the counts. if ((classes != null) && (rowTotal != count)) { JFrame mainFrame = BoutTimeApp.getApplication().getMainFrame(); JOptionPane.showMessageDialog(mainFrame, "There is an error" + " with the total count for team '" + t + "'.\n" + "This is " + "most likely due to an incorrect classification value\nfor " + "one or more wrestlers.", "Team count error", JOptionPane.WARNING_MESSAGE); } } // Add totals row datatable.getDefaultCell().setGrayFill(0.7f); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT); datatable.addCell("Total"); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); if (classes != null) { for (int idx = 0; idx < classesTotals.length; idx++) { datatable.addCell(Integer.toString(classesTotals[idx])); } } datatable.addCell(Integer.toString(total)); datatable.setSpacingBefore(15f); document.add(datatable); } catch (DocumentException de) { logger.error("Document Exception", de); return false; } // step 5: we close the document document.close(); return true; }
From source file:bouttime.report.team.TeamReport.java
License:Open Source License
/** * Generate a detail report of the teams in the tournament. * This report includes the teams and all of the wrestlers on the team. * @param dao Dao object to use to retrieve data. * @return True if the report was generated. *///from w ww. ja v a 2 s. c o m public static boolean doDetail(Dao dao) { if (!dao.isOpen()) { return false; } // step 1: creation of a document-object Document document = new Document(); try { // step 2: creation of the writer FileOutputStream fos = createOutputFile(); if (fos == null) { return false; } PdfWriter.getInstance(document, fos); // step 3: we open the document document.open(); // step 4: create and add content // create and add the header Paragraph p1 = new Paragraph(new Paragraph( String.format("%s %s %s, %s", dao.getName(), dao.getMonth(), dao.getDay(), dao.getYear()), FontFactory.getFont(FontFactory.HELVETICA, 10))); document.add(p1); Paragraph p2 = new Paragraph( new Paragraph("Team Detail Report", FontFactory.getFont(FontFactory.HELVETICA, 14))); p2.setAlignment(Paragraph.ALIGN_CENTER); document.add(p2); Font headerFont = new Font(Font.FontFamily.TIMES_ROMAN, 12); Font detailFont = new Font(Font.FontFamily.TIMES_ROMAN, 10); PdfPCell headerCell = new PdfPCell(); headerCell.setVerticalAlignment(Element.ALIGN_MIDDLE); headerCell.setPadding(3); headerCell.setBorderWidth(2); List<String> teams = dao.getTeams(); for (String t : teams) { List<Wrestler> wrestlers = dao.getWrestlersByTeam(t); int count = wrestlers.size(); // create and add the table PdfPTable datatable = new PdfPTable(5); int colWidths[] = { 30, 30, 20, 10, 10 }; // percentage datatable.setWidths(colWidths); datatable.setWidthPercentage(100); datatable.getDefaultCell().setPadding(3); datatable.getDefaultCell().setBorderWidth(2); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); // The header has the team name and the number of entries headerCell.setPhrase(new Phrase(t, headerFont)); headerCell.setColspan(3); datatable.addCell(headerCell); headerCell.setPhrase(new Phrase(String.format("Entries : %d", count), headerFont)); headerCell.setColspan(2); datatable.addCell(headerCell); datatable.setHeaderRows(1); // this is the end of the table header datatable.getDefaultCell().setBorderWidth(1); datatable.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE); int i = 0; for (Wrestler w : wrestlers) { if ((i++ % 2) == 0) { datatable.getDefaultCell().setGrayFill(0.9f); } else { datatable.getDefaultCell().setGrayFill(1); } datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT); datatable.addCell(new Phrase(w.getFirstName(), detailFont)); datatable.addCell(new Phrase(w.getLastName(), detailFont)); datatable.addCell(new Phrase(w.getClassification(), detailFont)); datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); datatable.addCell(new Phrase(w.getAgeDivision(), detailFont)); datatable.addCell(new Phrase(w.getWeightClass(), detailFont)); } datatable.setSpacingBefore(5f); datatable.setSpacingAfter(15f); document.add(datatable); } } catch (DocumentException de) { logger.error("Document Exception", de); return false; } // step 5: we close the document document.close(); return true; }