/** * Este arquivo é parte do Biblivre3. * * Biblivre3 é um software livre; você pode redistribuí-lo e/ou * modificá-lo dentro dos termos da Licença Pública Geral GNU como * publicada pela Fundação do Software Livre (FSF); na versão 3 da * Licença, ou (caso queira) qualquer versão posterior. * * Este programa é distribuído na esperança de que possa ser útil, * mas SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de * MERCANTIBILIDADE OU ADEQUAÇÃO PARA UM FIM PARTICULAR. Veja a * Licença Pública Geral GNU para maiores detalhes. * * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto * com este programa, Se não, veja em <http://www.gnu.org/licenses/>. * * @author Alberto Wagner <alberto@biblivre.org.br> * @author Danniel Willian <danniel@biblivre.org.br> * */ package biblivre3.cataloging.bibliographic; import biblivre3.cataloging.holding.HoldingDAO; import biblivre3.cataloging.holding.LabelConfigDTO; import biblivre3.cataloging.holding.LabelDTO; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; 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; public class BiblioHandler extends BaseHandler { @Override public String processModule(HttpServletRequest request, HttpServletResponse response, String submitButton, HashMap<String, String> requestParametersHash) { if (submitButton.equals("GENERATE_LABELS_DATE")) { String startDate = request.getParameter("startDate"); String finalDate = request.getParameter("endDate"); String base = request.getParameter("BASE"); String defaultFormat = I18nUtils.getText(request.getSession(), "biblivre3", "DEFAULT_DATE_FORMAT"); Date parsedStartDate = null; Date parsedFinalDate = null; try { DateFormat formatter = new SimpleDateFormat(defaultFormat); formatter.setLenient(false); parsedStartDate = (Date) formatter.parse(startDate); parsedFinalDate = (Date) formatter.parse(finalDate); } catch (Exception e) { Dialog.showWarning(request, "MESSAGE_ERROR_INVALID_DATES"); return "/jsp/cataloging/label.jsp"; } int generatedLabels[] = new BiblioBO().generateLabelsByDate(parsedStartDate, parsedFinalDate, base); if (generatedLabels[0] == 0) { Dialog.showWarning(request, "MESSAGE_NO_HOLDINGS_IN_SELECTED_RANGE"); } else if (generatedLabels[1] == 0) { Dialog.showWarning(request, "MESSAGE_LABEL_ALL_LABELS_IN_RANGE_ARE_ALREADY_IN_LIST"); } else { Dialog.showNormal(request, "SUCCESS_ADD_LABEL"); } return "/jsp/cataloging/label.jsp"; } else if (submitButton.equals("LIST_ALL_PENDING_LABELS")) { ArrayList<LabelDTO> list = new HoldingDAO().listPendingLabels(); Collections.sort(list); request.setAttribute("LIST_ALL_LABEL", list); if (list.isEmpty()) { Dialog.showNormal(request, "MESSAGE_EMPTY_LABEL_LIST"); } return "/jsp/cataloging/label.jsp"; } else if (submitButton.equals("DELETE_LABEL")) { final String[] labels = request.getParameterValues("HOLDING_SELECT"); if (labels != null) { if (new BiblioDAO().deleteLabels(labels)) { Dialog.showNormal(request, "SUCCESS_DELETE_LABEL"); } } else { Dialog.showWarning(request, "ERROR_DELETE_LABEL"); } return "/jsp/cataloging/label.jsp"; } else if (submitButton.equals("RECORD_FILE_TXT")) { //FIXME: Remove those damn DAOs from here. String dellabel = request.getParameter("dellabel"); final String[] labels = request.getParameterValues("HOLDING_SELECT"); if (labels != null) { MemoryFileDTO txtFile = new BiblioBO().createFileLabelsTXT(new HoldingDAO().listSelectedLabels(labels)); if (txtFile != null) { Dialog.showNormal(request, "SUCCESS_CREATE_TXT"); if (dellabel != null) { new BiblioDAO().deleteLabels(labels); } ArrayList<LabelDTO> list = new HoldingDAO().listPendingLabels(); Collections.sort(list); request.setAttribute("LIST_ALL_LABEL", list); request.setAttribute("FILE_DOWNLOAD_URL", txtFile.getFileName()); request.getSession().setAttribute(txtFile.getFileName(), txtFile); } } else { Dialog.showNormal(request, "ERROR_CREATE_TXT"); } return "/jsp/cataloging/label.jsp"; } else if (submitButton.equals("RECORD_FILE_PDF")) { //FIXME: Remove those damn DAOs from here. String dellabel = request.getParameter("dellabel"); String[] labels = request.getParameterValues("HOLDING_SELECT"); String startOffset = request.getParameter("START_OFFSET"); String width = request.getParameter("WIDTH"); String height = request.getParameter("HEIGHT"); String columns = request.getParameter("COLUMNS"); String rows = request.getParameter("ROWS"); LabelConfigDTO labelConfig = new LabelConfigDTO(); try { labelConfig.setOffset(Integer.parseInt(startOffset)); labelConfig.setWidth(Float.parseFloat(width)); labelConfig.setHeight(Float.parseFloat(height)); labelConfig.setColumns(Integer.parseInt(columns)); labelConfig.setRows(Integer.parseInt(rows)); } catch (Exception e) { Dialog.showNormal(request, "ERROR_CREATE_PDF"); } if (labels != null) { MemoryFileDTO pdfFile = new BiblioBO().createFileLabelsPDF(new HoldingDAO().listSelectedLabels(labels), labelConfig); if (pdfFile != null) { Dialog.showNormal(request, "SUCCESS_CREATE_PDF"); if (dellabel != null) { new BiblioDAO().deleteLabels(labels); } ArrayList<LabelDTO> list = new HoldingDAO().listPendingLabels(); Collections.sort(list); request.setAttribute("LIST_ALL_LABEL", list); request.setAttribute("FILE_DOWNLOAD_URL", pdfFile.getFileName()); request.getSession().setAttribute(pdfFile.getFileName(), pdfFile); } } else { Dialog.showNormal(request, "ERROR_CREATE_PDF"); } return "/jsp/cataloging/label.jsp"; } else if (submitButton.equals("DOWNLOAD_LABEL_FILE")) { final String fileName = request.getParameter("FILE_NAME"); if (fileName != null) { MemoryFileDTO file = (MemoryFileDTO)request.getSession().getAttribute(fileName); returnFile(file, response); return "x-download"; } else { Dialog.showNormal(request, "ERROR_CREATE_PDF"); return "/jsp/cataloging/label.jsp"; } } else { return ""; } } }