001package org.kuali.ole.sip2.sip2Response;
002
003import org.apache.commons.lang3.StringUtils;
004import org.kuali.ole.ncip.bo.OLECheckInItem;
005import org.kuali.ole.sip2.common.MessageUtil;
006import org.kuali.ole.sip2.constants.OLESIP2Constants;
007import org.kuali.ole.sip2.requestParser.OLESIP2CheckInRequestParser;
008
009
010/**
011 * Created by gayathria on 1/9/14.
012 */
013public class OLESIP2CheckInResponse extends OLESIP2Response {
014
015    public OLESIP2CheckInResponse() {
016        this.code = OLESIP2Constants.CHECK_IN_RESPONSE;
017    }
018
019
020    public String getSIP2CheckInResponse(OLECheckInItem oleCheckInItem, OLESIP2CheckInRequestParser sip2CheckInRequestParser) {
021
022        StringBuilder oleCheckInBuilder = new StringBuilder();
023
024        oleCheckInBuilder.append(this.code);
025
026        if (oleCheckInItem.getCode().equalsIgnoreCase("024") || oleCheckInItem.getMessage().equalsIgnoreCase(OLESIP2Constants.CHECK_IN_SUCCESS)) {
027            oleCheckInBuilder.append("1");
028            oleCheckInBuilder.append(OLESIP2Constants.Y);
029            oleCheckInBuilder.append(OLESIP2Constants.Y);
030            oleCheckInBuilder.append(OLESIP2Constants.Y);
031        } else {
032            oleCheckInBuilder.append("0");
033            oleCheckInBuilder.append(OLESIP2Constants.N);
034            oleCheckInBuilder.append(OLESIP2Constants.N);
035            oleCheckInBuilder.append(OLESIP2Constants.N);
036        }
037
038        oleCheckInBuilder.append(MessageUtil.getSipDateTime());
039        oleCheckInBuilder.append(OLESIP2Constants.INSTITUTION_ID_CODE);
040        if (StringUtils.isNotBlank(sip2CheckInRequestParser.getInstitutionId())) {
041            oleCheckInBuilder.append(sip2CheckInRequestParser.getInstitutionId());
042        }
043        oleCheckInBuilder.append(OLESIP2Constants.SPLIT+
044                OLESIP2Constants.ITEM_IDENTIFIER_CODE);
045        oleCheckInBuilder.append(oleCheckInItem.getBarcode() != null ? oleCheckInItem.getBarcode() : sip2CheckInRequestParser.getItemIdentifier());
046        oleCheckInBuilder.append(OLESIP2Constants.SPLIT+
047                OLESIP2Constants.PERMANENT_LOCATION_CODE);
048        if (StringUtils.isNotBlank(oleCheckInItem.getItemLocation())) {
049            oleCheckInBuilder.append(oleCheckInItem.getItemLocation());
050        }
051        if (StringUtils.isNotBlank(oleCheckInItem.getTitle())) {
052            oleCheckInBuilder.append(OLESIP2Constants.SPLIT+
053                    OLESIP2Constants.TITLE_IDENTIFIER_CODE);
054            oleCheckInBuilder.append(oleCheckInItem.getTitle().replaceAll(OLESIP2Constants.NON_ROMAN_REGEX,""));
055        }
056        if (StringUtils.isNotBlank(oleCheckInItem.getPatronBarcode())) {
057            oleCheckInBuilder.append(OLESIP2Constants.SPLIT+
058                    OLESIP2Constants.PATRON_IDENTIFIER_CODE);
059            oleCheckInBuilder.append(oleCheckInItem.getPatronBarcode());
060        }
061
062        if (StringUtils.isNotBlank(oleCheckInItem.getItemType())) {
063            oleCheckInBuilder.append(OLESIP2Constants.SPLIT+
064                    OLESIP2Constants.MEDIA_TYPE_CODE);
065            oleCheckInBuilder.append(oleCheckInItem.getItemType());
066        }
067
068
069        if (StringUtils.isNotBlank(oleCheckInItem.getAuthor())) {
070            oleCheckInBuilder.append(OLESIP2Constants.SPLIT+
071                    OLESIP2Constants.ITEM_PROPERTIES_CODE);
072            oleCheckInBuilder.append("Author  :  " + oleCheckInItem.getAuthor().replaceAll(OLESIP2Constants.NON_ROMAN_REGEX,""));
073        }
074
075        if (StringUtils.isNotBlank(oleCheckInItem.getMessage())) {
076            oleCheckInBuilder.append(OLESIP2Constants.SPLIT+
077                    OLESIP2Constants.SCREEN_MSG_CODE);
078            oleCheckInBuilder.append(oleCheckInItem.getMessage().replaceAll("<br/>", ""));
079            oleCheckInBuilder.append(OLESIP2Constants.SPLIT+
080                    OLESIP2Constants.PRINT_LINE_CODE);
081            oleCheckInBuilder.append(oleCheckInItem.getMessage().replaceAll("<br/>", ""));
082        }
083
084        if (StringUtils.isNotBlank(sip2CheckInRequestParser.getSequenceNum())) {
085            oleCheckInBuilder.append(OLESIP2Constants.SPLIT+
086                    OLESIP2Constants.SEQUENCE_NUM_CODE);
087            oleCheckInBuilder.append(sip2CheckInRequestParser.getSequenceNum());
088            oleCheckInBuilder.append(MessageUtil.computeChecksum(oleCheckInBuilder.toString()));
089        }
090
091        System.out.println(oleCheckInBuilder.toString());
092
093
094        return oleCheckInBuilder.toString() + '\r';
095
096
097    }
098
099}