001package org.kuali.ole.response; 002 003import org.apache.commons.lang3.StringUtils; 004import org.apache.log4j.Logger; 005import org.kuali.ole.bo.OLECheckOutItem; 006import org.kuali.ole.bo.OLERenewItem; 007import org.kuali.ole.common.MessageUtil; 008import org.kuali.ole.common.OLESIP2Util; 009import org.kuali.ole.constants.OLESIP2Constants; 010import org.kuali.ole.request.OLESIP2CheckOutRequestParser; 011 012/** 013 * Created by gayathria on 27/8/14. 014 */ 015public class OLESIP2CheckOutResponse extends OLESIP2Response { 016 017 018 public OLESIP2CheckOutResponse() { 019 this.code = OLESIP2Constants.CHECKOUT_RESPONSE; 020 } 021 022 private final static Logger LOG = Logger.getLogger(OLESIP2CheckOutResponse.class.getName()); 023 public String getSIP2CheckOutResponse(OLECheckOutItem oleCheckOutItem, OLESIP2CheckOutRequestParser sip2CheckOutRequestParser) { 024 025 StringBuilder checkOutResponseBuilder = new StringBuilder(); 026 checkOutResponseBuilder.append(code); 027 if (oleCheckOutItem.code.equalsIgnoreCase("030") || oleCheckOutItem.getMessage().equalsIgnoreCase(OLESIP2Constants.CHECK_OUT_SUCCESS)) { 028 checkOutResponseBuilder.append(OLESIP2Util.bool2Int(true)); 029 checkOutResponseBuilder.append(OLESIP2Util.bool2Char(false)); 030 checkOutResponseBuilder.append("U"); 031 checkOutResponseBuilder.append(OLESIP2Util.bool2Char(true)); 032 } else { 033 checkOutResponseBuilder.append(OLESIP2Util.bool2Int(false)); 034 checkOutResponseBuilder.append(OLESIP2Util.bool2Char(false)); 035 checkOutResponseBuilder.append("U"); 036 checkOutResponseBuilder.append(OLESIP2Util.bool2Char(false)); 037 } 038 checkOutResponseBuilder.append(MessageUtil.getSipDateTime()); 039 checkOutResponseBuilder.append(OLESIP2Constants.INSTITUTION_ID_CODE); 040 checkOutResponseBuilder.append(StringUtils.isNotBlank(sip2CheckOutRequestParser.getInstitutionId()) ? sip2CheckOutRequestParser.getInstitutionId() : ""); 041 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 042 OLESIP2Constants.PATRON_IDENTIFIER_CODE); 043 checkOutResponseBuilder.append(oleCheckOutItem.getPatronBarcode() != null ? oleCheckOutItem.getPatronBarcode() : sip2CheckOutRequestParser.getPatronIdentifier()); 044 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 045 OLESIP2Constants.ITEM_IDENTIFIER_CODE); 046 checkOutResponseBuilder.append(oleCheckOutItem.getBarcode() != null ? oleCheckOutItem.getBarcode() : sip2CheckOutRequestParser.getItemIdentifier()); 047 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 048 OLESIP2Constants.TITLE_IDENTIFIER_CODE); 049 checkOutResponseBuilder.append(oleCheckOutItem.getTitleIdentifier() != null ? oleCheckOutItem.getTitleIdentifier().replaceAll(OLESIP2Constants.NON_ROMAN_REGEX, "") : ""); 050 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 051 OLESIP2Constants.DUE_DATE_CODE); 052 checkOutResponseBuilder.append(oleCheckOutItem.getDueDate() != null ? oleCheckOutItem.getDueDate() : ""); 053 if (OLESIP2Util.getDefaultCurrency() != null) { 054 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 055 OLESIP2Constants.CURRENCY_TYPE_CODE); 056 checkOutResponseBuilder.append(OLESIP2Util.getDefaultCurrency().getCurrencyCode()); 057 } 058 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 059 OLESIP2Constants.ITEM_PROPERTIES_CODE); 060 checkOutResponseBuilder.append(StringUtils.isNotBlank(oleCheckOutItem.getItemProperties()) ? oleCheckOutItem.getItemProperties().replaceAll(OLESIP2Constants.NON_ROMAN_REGEX, "") : " "); 061 /*checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 062 OLESIP2Constants.MEDIA_TYPE_CODE); 063 checkOutResponseBuilder.append(StringUtils.isNotBlank(oleCheckOutItem.getItemType()) ? oleCheckOutItem.getItemType() : "");*/ 064 if (oleCheckOutItem.code.equalsIgnoreCase("030") || oleCheckOutItem.getMessage().equalsIgnoreCase(OLESIP2Constants.CHECK_OUT_SUCCESS)) { 065 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 066 OLESIP2Constants.SCREEN_MSG_CODE+OLESIP2Constants.CHECK_OUT_SUCCESSFULLY); 067 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 068 OLESIP2Constants.PRINT_LINE_CODE + oleCheckOutItem.getMessage().replaceAll("<br/>", "")); 069 } else { 070 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 071 OLESIP2Constants.SCREEN_MSG_CODE+OLESIP2Constants.CHECK_OUT_FAILED); 072 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 073 OLESIP2Constants.PRINT_LINE_CODE + oleCheckOutItem.getMessage().replaceAll("<br/>", "")); 074 } 075 if (StringUtils.isNotBlank(sip2CheckOutRequestParser.getSequenceNum())) { 076 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 077 OLESIP2Constants.SEQUENCE_NUM_CODE); 078 checkOutResponseBuilder.append(sip2CheckOutRequestParser.getSequenceNum()); 079 checkOutResponseBuilder.append(MessageUtil.computeChecksum(checkOutResponseBuilder.toString())); 080 } 081 082 LOG.info("OLESIP2CheckOutResponse.getSIP2CheckOutResponse -- checkout "+checkOutResponseBuilder.toString()); 083 084 return checkOutResponseBuilder.toString() + '\r'; 085 } 086 087 public String getSIP2CheckOutResponse( OLERenewItem oleRenewItem, OLESIP2CheckOutRequestParser sip2CheckOutRequestParser) { 088 089 StringBuilder checkOutResponseBuilder = new StringBuilder(); 090 checkOutResponseBuilder.append(code); 091 if (oleRenewItem.getCode().equalsIgnoreCase("030") || oleRenewItem.getMessage().equalsIgnoreCase(OLESIP2Constants.RENEW_SUCCESS)) { 092 checkOutResponseBuilder.append(OLESIP2Util.bool2Int(true)); 093 checkOutResponseBuilder.append(OLESIP2Util.bool2Char(false)); 094 checkOutResponseBuilder.append("U"); 095 checkOutResponseBuilder.append(OLESIP2Util.bool2Char(true)); 096 } else { 097 checkOutResponseBuilder.append(OLESIP2Util.bool2Int(false)); 098 checkOutResponseBuilder.append(OLESIP2Util.bool2Char(false)); 099 checkOutResponseBuilder.append("U"); 100 checkOutResponseBuilder.append(OLESIP2Util.bool2Char(false)); 101 } 102 checkOutResponseBuilder.append(MessageUtil.getSipDateTime()); 103 checkOutResponseBuilder.append(OLESIP2Constants.INSTITUTION_ID_CODE); 104 checkOutResponseBuilder.append(StringUtils.isNotBlank(sip2CheckOutRequestParser.getInstitutionId()) ? sip2CheckOutRequestParser.getInstitutionId() : ""); 105 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 106 OLESIP2Constants.PATRON_IDENTIFIER_CODE); 107 checkOutResponseBuilder.append(oleRenewItem.getPatronBarcode() != null ? oleRenewItem.getPatronBarcode() : sip2CheckOutRequestParser.getPatronIdentifier()); 108 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 109 OLESIP2Constants.ITEM_IDENTIFIER_CODE); 110 checkOutResponseBuilder.append(oleRenewItem.getItemBarcode() != null ? oleRenewItem.getItemBarcode() : sip2CheckOutRequestParser.getItemIdentifier()); 111 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 112 OLESIP2Constants.TITLE_IDENTIFIER_CODE); 113 checkOutResponseBuilder.append(oleRenewItem.getTitleIdentifier() != null ? oleRenewItem.getTitleIdentifier().replaceAll(OLESIP2Constants.NON_ROMAN_REGEX, "") : ""); 114 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 115 OLESIP2Constants.DUE_DATE_CODE); 116 checkOutResponseBuilder.append(oleRenewItem.getNewDueDate() != null ? oleRenewItem.getNewDueDate() : ""); 117 if (OLESIP2Util.getDefaultCurrency() != null) { 118 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 119 OLESIP2Constants.CURRENCY_TYPE_CODE); 120 checkOutResponseBuilder.append(OLESIP2Util.getDefaultCurrency().getCurrencyCode()); 121 } 122 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 123 OLESIP2Constants.ITEM_PROPERTIES_CODE); 124 checkOutResponseBuilder.append(StringUtils.isNotBlank(oleRenewItem.getItemProperties()) ? oleRenewItem.getItemProperties().replaceAll(OLESIP2Constants.NON_ROMAN_REGEX, "") : " "); 125 /* checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 126 OLESIP2Constants.MEDIA_TYPE_CODE); 127 checkOutResponseBuilder.append(StringUtils.isNotBlank(oleRenewItem.getItemType()) ? oleRenewItem.getItemType() : "");*/ 128 if (oleRenewItem.getCode().equalsIgnoreCase("030") || oleRenewItem.getMessage().equalsIgnoreCase(OLESIP2Constants.RENEW_SUCCESS)) { 129 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 130 OLESIP2Constants.SCREEN_MSG_CODE+OLESIP2Constants.CHECK_OUT_SUCCESSFULLY); 131 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 132 OLESIP2Constants.PRINT_LINE_CODE + oleRenewItem.getMessage().replaceAll("<br/>", "")); 133 } else { 134 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 135 OLESIP2Constants.SCREEN_MSG_CODE+OLESIP2Constants.CHECK_OUT_FAILED); 136 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 137 OLESIP2Constants.PRINT_LINE_CODE + oleRenewItem.getMessage().replaceAll("<br/>", "")); 138 } 139 if (StringUtils.isNotBlank(sip2CheckOutRequestParser.getSequenceNum())) { 140 checkOutResponseBuilder.append(OLESIP2Constants.SPLIT+ 141 OLESIP2Constants.SEQUENCE_NUM_CODE); 142 checkOutResponseBuilder.append(sip2CheckOutRequestParser.getSequenceNum()); 143 checkOutResponseBuilder.append(MessageUtil.computeChecksum(checkOutResponseBuilder.toString())); 144 } 145 146 LOG.info("OLESIP2CheckOutResponse.getSIP2CheckOutResponse -- renew "+checkOutResponseBuilder.toString()); 147 return checkOutResponseBuilder.toString() + '\r'; 148 } 149 150 151}