biblivre3.administration.ReportsHandler.java Source code

Java tutorial

Introduction

Here is the source code for biblivre3.administration.ReportsHandler.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;

import biblivre3.enums.Database;
import biblivre3.enums.ReportType;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import mercury.BaseHandler;
import mercury.Dialog;
import mercury.I18nUtils;
import mercury.MemoryFileDTO;
import org.apache.commons.lang.StringUtils;

public class ReportsHandler extends BaseHandler {

    @Override
    public String processModule(HttpServletRequest request, HttpServletResponse response, String submitButton,
            HashMap<String, String> model) {
        ReportsBO bo = new ReportsBO();

        if (submitButton.equals("GENERATE_REPORT")) {
            ReportsDTO dto = null;
            try {
                dto = this.populateDto(request, model);
            } catch (Exception e) {
                Dialog.showWarning(request, "ERROR_FIELDS_NOT_FILLED");
                return "/jsp/administration/reports.jsp";
            }

            MemoryFileDTO report = null;
            try {
                report = bo.generateReport(dto, getI18nProperties(request, "biblivre3"));
            } catch (Exception e) {
                log.error(e.getMessage(), e);
            }
            if (report != null) {
                this.returnFile(report, response);
                return "x-download";
            } else {
                Dialog.showError(request, "ERROR_REPORTS_NOT_IMPLEMENTED");
            }
        }
        return "/jsp/administration/reports.jsp";
    }

    private ReportsDTO populateDto(HttpServletRequest request, HashMap<String, String> model) throws Exception {
        ReportsDTO dto = new ReportsDTO();

        String reportId = model.get("reportId");
        ReportType type = ReportType.getById(reportId);
        dto.setType(type);

        if (type.isTimePeriod()) {
            String defaultFormat = I18nUtils.getText(request.getSession(), "biblivre3", "DEFAULT_DATE_FORMAT");
            DateFormat formatter = new SimpleDateFormat(defaultFormat);
            formatter.setLenient(false);

            String initialDate = model.get("initialDate");
            Date parsedStartDate = (Date) formatter.parse(initialDate);
            dto.setInitialDate(parsedStartDate);

            String finalDate = model.get("finalDate");
            Date parsedFinalDate = (Date) formatter.parse(finalDate);
            dto.setFinalDate(parsedFinalDate);
        }

        String database = model.get("database");
        dto.setDatabase(Database.valueOf(database));

        String order = model.get("order");
        dto.setOrder(order);

        String userId = model.get("userId");
        dto.setUserId(userId);

        String recordIds = model.get("recordIds");
        dto.setRecordIds(recordIds);

        String authorName = model.get("authorName");
        dto.setAuthorName(authorName);

        String datafield = model.get("datafield");
        dto.setDatafield(datafield);

        String digits = model.get("digits");
        try {
            dto.setDigits(Integer.valueOf(digits));
        } catch (Exception pokemon) {
        }

        return dto;
    }
}