biblivre3.administration.reports.AllUsersReport.java Source code

Java tutorial

Introduction

Here is the source code for biblivre3.administration.reports.AllUsersReport.java

Source

/**
 *  Este arquivo  parte do Biblivre3.
 *  
 *  Biblivre3  um software livre; voc pode redistribu-lo e/ou 
 *  modific-lo dentro dos termos da Licena Pblica Geral GNU como 
 *  publicada pela Fundao do Software Livre (FSF); na verso 3 da 
 *  Licena, ou (caso queira) qualquer verso posterior.
 *  
 *  Este programa  distribudo na esperana de que possa ser  til, 
 *  mas SEM NENHUMA GARANTIA; nem mesmo a garantia implcita de
 *  MERCANTIBILIDADE OU ADEQUAO PARA UM FIM PARTICULAR. Veja a
 *  Licena Pblica Geral GNU para maiores detalhes.
 *  
 *  Voc deve ter recebido uma cpia da Licena Pblica Geral GNU junto
 *  com este programa, Se no, veja em <http://www.gnu.org/licenses/>.
 * 
 *  @author Alberto Wagner <alberto@biblivre.org.br>
 *  @author Danniel Willian <danniel@biblivre.org.br>
 * 
 */

package biblivre3.administration.reports;

import biblivre3.administration.ReportsDAO;
import biblivre3.administration.ReportsDTO;
import biblivre3.administration.reports.dto.AllUsersReportDto;
import biblivre3.administration.reports.dto.BaseReportDto;
import java.util.ArrayList;

import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import java.util.List;
import java.util.Map;

public class AllUsersReport extends BaseBiblivreReport {

    @Override
    protected BaseReportDto getReportData(ReportsDTO dto) {
        ReportsDAO dao = new ReportsDAO();
        return dao.getAllUsersReportData();
    }

    @Override
    protected void generateReportBody(Document document, BaseReportDto reportData) throws Exception {
        AllUsersReportDto dto = (AllUsersReportDto) reportData;
        Paragraph p1 = new Paragraph(this.getText("REPORTS_ALL_USERS"));
        p1.setAlignment(Paragraph.ALIGN_CENTER);
        document.add(p1);
        document.add(new Phrase("\n"));
        Paragraph p2 = new Paragraph(this.getHeaderChunk(this.getText("REPORTS_ALL_USERS_TYPE_TOTALS")));
        p2.setAlignment(Paragraph.ALIGN_LEFT);
        document.add(p2);
        document.add(new Phrase("\n"));
        PdfPTable summaryTable = createSummaryTable(dto.getTypesMap());
        document.add(summaryTable);
        document.add(new Phrase("\n"));

        ArrayList<PdfPTable> listTable = createListTable(dto.getData());
        if (listTable != null) {
            Paragraph p3 = new Paragraph(this.getHeaderChunk(this.getText("REPORTS_ALL_USERS_TYPE_LIST")));
            p3.setAlignment(Paragraph.ALIGN_LEFT);
            document.add(p3);
            document.add(new Phrase("\n"));
            for (PdfPTable tabela : listTable) {
                document.add(tabela);
                document.add(new Phrase("\n"));
            }
        }
    }

    private final PdfPTable createSummaryTable(Map<String, Integer> tipos) {
        PdfPTable table = new PdfPTable(2);
        table.setWidthPercentage(50f);
        table.setHorizontalAlignment(PdfPTable.ALIGN_LEFT);

        int total = 0;
        PdfPCell cell;
        for (String description : tipos.keySet()) {
            total += tipos.get(description);
            cell = new PdfPCell(new Paragraph(this.getHeaderChunk(description.toUpperCase())));
            cell.setBackgroundColor(headerBgColor);
            cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
            cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
            table.addCell(cell);
            cell = new PdfPCell(new Paragraph(this.getNormalChunk(String.valueOf(tipos.get(description)))));
            cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
            cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
            table.addCell(cell);
        }
        cell = new PdfPCell(new Paragraph(this.getHeaderChunk(this.getText("REPORTS_TOTAL"))));
        cell.setBackgroundColor(headerBgColor);
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph(this.getNormalChunk(String.valueOf(total))));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);
        return table;
    }

    private final ArrayList<PdfPTable> createListTable(Map<String, List<String>> data) {
        try {
            ArrayList<PdfPTable> tabelas = new ArrayList<PdfPTable>();
            PdfPTable table = null;
            PdfPCell cell;
            for (String description : data.keySet()) {
                table = new PdfPTable(4);
                table.setWidthPercentage(100f);
                cell = new PdfPCell(new Paragraph(this.getHeaderChunk(description.toUpperCase())));
                cell.setColspan(4);
                cell.setBorder(PdfPCell.NO_BORDER);
                cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
                cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph(this.getHeaderChunk(this.getText("REPORTS_NAME"))));
                cell.setBackgroundColor(headerBgColor);
                cell.setBorderWidth(headerBorderWidth);
                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph(this.getHeaderChunk(this.getText("REPORTS_ENROL"))));
                cell.setBackgroundColor(headerBgColor);
                cell.setBorderWidth(headerBorderWidth);
                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph(this.getHeaderChunk(this.getText("REPORTS_INSERTION_DATE"))));
                cell.setBackgroundColor(headerBgColor);
                cell.setBorderWidth(headerBorderWidth);
                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph(this.getHeaderChunk(this.getText("REPORTS_UPDATE_DATE"))));
                cell.setBackgroundColor(headerBgColor);
                cell.setBorderWidth(headerBorderWidth);
                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                table.addCell(cell);

                for (String line : data.get(description)) {
                    String[] dados = line.split("\t");
                    //Nome
                    cell = new PdfPCell(new Paragraph(this.getNormalChunk(dados[0])));
                    cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
                    cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                    table.addCell(cell);

                    //Matricula
                    cell = new PdfPCell(new Paragraph(this.getNormalChunk(dados[1])));
                    cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                    cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                    table.addCell(cell);

                    //Data de Inclusao
                    cell = new PdfPCell(new Paragraph(this.getNormalChunk(dados[2])));
                    cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                    cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                    table.addCell(cell);

                    //Data de Cancelamento/Alteracao
                    cell = new PdfPCell(new Paragraph(this.getNormalChunk(dados[3])));
                    cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                    cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                    table.addCell(cell);
                }
                if (table != null) {
                    tabelas.add(table);
                }
            }
            return tabelas;
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            return null;
        }
    }

}