Example #1
0
  public String checkinItem(Map checkinParameters) {

    CheckInAPIController checkInAPIController = new CheckInAPIController();

    setOleCheckInItem(new OLECheckInItem());
    setOleCirculationDesk(null);

    String operatorId = getOperatorId((String) checkinParameters.get("operatorId"));
    String itemBarcode = (String) checkinParameters.get("itemBarcode");
    String deleteIndicator = (String) checkinParameters.get("deleteIndicator");
    setResponseFormatType(checkinParameters);

    boolean isValid = validate(operatorId, itemBarcode);
    if (!isValid) {
      return prepareResponse();
    }

    DroolsExchange droolsExchange = new DroolsExchange();
    droolsExchange.addToContext("itemBarcode", itemBarcode);
    droolsExchange.addToContext(
        "selectedCirculationDesk", getOleCirculationDesk().getCirculationDeskId());
    droolsExchange.addToContext("operatorId", operatorId);
    OLEForm oleAPIForm = new OLEForm();
    oleAPIForm.setDroolsExchange(droolsExchange);

    try {
      DroolsResponse droolsResponse = checkInAPIController.checkin(oleAPIForm);
      if (droolsResponse != null
          && StringUtils.isNotBlank(droolsResponse.getErrorMessage().getErrorMessage())) {
        String checkinErrorMessage = droolsResponse.getErrorMessage().getErrorMessage();
        String responseMessage = null;
        if (droolsResponse.retriveErrorCode() != null) {
          if (droolsResponse
              .retriveErrorCode()
              .equalsIgnoreCase(DroolsConstants.ITEM_CLAIMS_RETURNED)) {
            responseMessage = "Item is Claims Returned";
          } else if (droolsResponse
              .retriveErrorCode()
              .equalsIgnoreCase(DroolsConstants.ITEM_MISSING_PIECE)) {
            responseMessage = "Item has missing pieces";
          } else if (droolsResponse
              .retriveErrorCode()
              .equalsIgnoreCase(DroolsConstants.ITEM_DAMAGED)) {
            responseMessage = "Item is Damaged.";
          } else if (droolsResponse
              .retriveErrorCode()
              .equalsIgnoreCase(DroolsConstants.CHECKIN_REQUEST_EXITS_FOR_THIS_ITEM)) {
            responseMessage = "Requests exists for this item";
          }
        }
        if (StringUtils.isNotBlank(responseMessage)) {
          getOleCheckInItem().setCode("500");
          getOleCheckInItem().setMessage(responseMessage);
          return prepareResponse();
        } else if (checkinErrorMessage.equalsIgnoreCase("Invalid item barcode!")) {
          getOleCheckInItem().setCode("014");
          getOleCheckInItem().setMessage(checkinErrorMessage);
          return prepareResponse();
        }
        getOleCheckInItem().setCode("500");
        getOleCheckInItem().setMessage(checkinErrorMessage);
        return prepareResponse();
      } else {
        CheckedInItem checkedInItem =
            (CheckedInItem) droolsExchange.getFromContext("checkedInItem");
        if (checkedInItem != null) {
          getOleCheckInItem().setAuthor(checkedInItem.getAuthor());
          getOleCheckInItem().setTitle(checkedInItem.getTitle());
          getOleCheckInItem().setCallNumber(checkedInItem.getCallNumber());
          getOleCheckInItem().setBarcode(checkedInItem.getItemBarcode());
          getOleCheckInItem().setUserId(checkedInItem.getPatronId());
          getOleCheckInItem().setUserType(checkedInItem.getBorrowerType());
          getOleCheckInItem().setItemType(checkedInItem.getItemType());
          getOleCheckInItem().setCode("024");
          getOleCheckInItem()
              .setMessage(
                  ConfigContext.getCurrentContextConfig()
                      .getProperty(OLEConstants.SUCCESSFULLEY_CHECKED_IN));

          if (StringUtils.isNotBlank(deleteIndicator) && deleteIndicator.equalsIgnoreCase("y")) {
            try {
              org.kuali.ole.docstore.common.document.Item item =
                  getDocstoreClientLocator()
                      .getDocstoreClient()
                      .retrieveItem(checkedInItem.getItemUuid());
              String bibId = item.getHolding().getBib().getId();
              getDocstoreClientLocator().getDocstoreClient().deleteBib(bibId);
            } catch (Exception e) {
              LOG.error("Exception while deleting bib" + e);
              getOleCheckInItem()
                  .setMessage(
                      "Item "
                          + ConfigContext.getCurrentContextConfig()
                              .getProperty(OLEConstants.SUCCESSFULLEY_CHECKED_IN)
                          + " but Deletion is failed");
              return prepareResponse();
            }
          }
          return prepareResponse();
        } else {
          getOleCheckInItem().setCode("025");
          getOleCheckInItem()
              .setMessage(
                  ConfigContext.getCurrentContextConfig()
                      .getProperty(OLEConstants.CHECK_IN_FAILED));
          return prepareResponse();
        }
      }
    } catch (Exception e) {
      LOG.error("Exception " + e);
      getOleCheckInItem().setCode("025");
      getOleCheckInItem()
          .setMessage(
              ConfigContext.getCurrentContextConfig().getProperty(OLEConstants.CHECK_IN_FAILED));
      return prepareResponse();
    }
  }