/** * 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.circulation.reservation; import biblivre3.cataloging.bibliographic.BiblioSearchBO; import biblivre3.cataloging.bibliographic.RecordDTO; import biblivre3.circulation.CirculationBO; import biblivre3.circulation.UserDTO; import biblivre3.circulation.lending.LendingBO; import biblivre3.circulation.lending.LendingInfoDTO; import biblivre3.marcutils.Indexer; import biblivre3.marcutils.MarcUtils; import java.util.List; import java.util.Properties; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import mercury.DTOCollection; import mercury.ErrorDTO; import mercury.IFJson; import mercury.BaseHandler; import mercury.DTO; import mercury.RootJsonHandler; import mercury.SuccessDTO; import org.apache.commons.lang.StringUtils; import org.json.JSONException; import org.json.JSONObject; import org.marc4j_2_3_1.marc.Record; public class JsonReservationHandler extends RootJsonHandler { private ReservationBO bo; @Override public JSONObject process(HttpServletRequest request, HttpServletResponse response) { bo = new ReservationBO(); String submitButton = request.getParameter("submitButton"); Properties properties = BaseHandler.getI18nProperties(request, "biblivre3"); IFJson dto = null; if (submitButton == null || submitButton.isEmpty()) { } else if (submitButton.equals("list_reservations")) { dto = listReservations(request); } else if (submitButton.equals("reserve_record")) { dto = reserveRecord(request); } else if (submitButton.equals("delete_reserve")) { dto = deleteReserve(request); } else if (submitButton.equals("list_all_reservations")) { dto = listAll(); } else if (submitButton.equals("list_pending_circulations")) { dto = listPendingCirculations(request); } return dto.toJSONObject(properties); } public IFJson listReservations(final HttpServletRequest request) { final String userId = request.getParameter("user_id"); DTOCollection<ReservationDTO> dtoList = new DTOCollection<ReservationDTO>(); UserDTO udto = null; try { udto = (new CirculationBO()).searchByUserId(Integer.valueOf(userId)); } catch (Exception e) { } List<ReservationDTO> results = bo.list(udto); dtoList.addAll(results); return dtoList; } public IFJson listAll() { DTOCollection<ReservationInfoDTO> dtoList = new DTOCollection<ReservationInfoDTO>(); dtoList.addAll(bo.listAll()); return dtoList; } private IFJson deleteReserve(HttpServletRequest request) { final String reservationId = request.getParameter("reservation_id"); if (StringUtils.isBlank(reservationId)) { return new ErrorDTO("MESSAGE_ERROR_SELECT_RESERVE", "warning"); } if (bo.delete(Integer.valueOf(reservationId))) { return new SuccessDTO("SUCCESS_DELETE_RESERVATION"); } else { return new ErrorDTO("ERROR_DELETE_RESERVATION", "warning"); } } private IFJson listPendingCirculations(HttpServletRequest request) { final String recordSerial = request.getParameter("record_serial"); final DTOCollection<ReservationInfoDTO> reservationList = new DTOCollection<ReservationInfoDTO>(); reservationList.addAll(new ReservationBO().listByRecordSerial(Integer.valueOf(recordSerial))); final DTOCollection<LendingInfoDTO> lendingList = new DTOCollection<LendingInfoDTO>(); lendingList.addAll(new LendingBO().listByRecordSerial(Integer.valueOf(recordSerial))); return new DTO() { @Override public JSONObject toJSONObject(Properties properties) { JSONObject json = super.toJSONObject(properties); try { json.put("reservations", reservationList.toJSONObject(properties)); json.put("lendings", lendingList.toJSONObject(properties)); } catch (JSONException e) { } return json; } }; } private IFJson reserveRecord(HttpServletRequest request) { final String recordSerial = request.getParameter("record_serial"); final String userId = request.getParameter("user_id"); RecordDTO rdto = null; try { rdto = (new BiblioSearchBO()).getById(Integer.valueOf(recordSerial)); } catch (Exception e) { } if (rdto == null) { return new ErrorDTO("ERROR_RECORD_NOT_FOUND", "warning"); } UserDTO udto = null; try { udto = (new CirculationBO()).searchByUserId(Integer.valueOf(userId)); } catch (Exception e) { } if (udto == null) { return new ErrorDTO("MESSAGE_USER_SERIAL_NOT_FOUND", "warning"); } ReservationBO rbo = new ReservationBO(); if (rbo.insert(udto.getUserid(), rdto.getRecordSerial())) { ReservationDTO rsdto = rbo.getLastById(udto.getUserid(), rdto.getRecordSerial()); ReservationInfoDTO ridto = new ReservationInfoDTO(); ridto.setReservationSerial(rsdto.getReservationSerial()); ridto.setUserName(udto.getName()); ridto.setUserSerial(udto.getUserid()); ridto.setRecordSerial(rdto.getRecordSerial()); ridto.setCreated(rsdto.getCreated()); ridto.setExpires(rsdto.getExpires()); Record record = MarcUtils.iso2709ToRecord(rdto.getIso2709()); ridto.setTitle(Indexer.listOneTitle(record)); ridto.setAuthor(Indexer.listAuthors(record)); ridto.setMessage("SUCCESS_CREATE_RESERVATION"); return ridto; } else { return new ErrorDTO("ERROR_CREATE_RESERVATION", "warning"); } } }