001package org.kuali.ole.deliver.maintenance;
002
003
004import org.kuali.ole.OLEConstants;
005import org.kuali.ole.deliver.bo.OleDeliverRequestBo;
006import org.kuali.ole.deliver.service.OleDeliverRequestDocumentHelperServiceImpl;
007import org.kuali.ole.docstore.common.client.DocstoreClientLocator;
008import org.kuali.ole.sys.context.SpringContext;
009import org.kuali.ole.util.DocstoreUtil;
010import org.kuali.rice.krad.maintenance.MaintainableImpl;
011import org.kuali.rice.krad.maintenance.MaintenanceDocument;
012import org.kuali.rice.krad.maintenance.MaintenanceLock;
013import org.kuali.rice.krad.util.GlobalVariables;
014import org.kuali.rice.krad.util.ObjectUtils;
015
016import java.sql.Date;
017import java.util.Collections;
018import java.util.List;
019import java.util.Map;
020
021/**
022 * Created with IntelliJ IDEA.
023 * User: ?
024 * Date: 10/11/12
025 * Time: 7:01 PM
026 * To change this template use File | Settings | File Templates.
027 */
028public class OleDeliverRequestMaintenanceImpl extends MaintainableImpl {
029
030    private DocstoreUtil docstoreUtil;
031    public DocstoreUtil getDocstoreUtil() {
032
033        if (docstoreUtil == null) {
034            docstoreUtil = SpringContext.getBean(DocstoreUtil.class);
035
036        }
037        return docstoreUtil;
038    }
039
040
041    /**
042     * This method will set the default value for the name object and also set the description when a new patron document is created
043     *
044     * @param document
045     * @param requestParameters
046     */
047    @Override
048    public void processAfterNew(MaintenanceDocument document,
049                                Map<String, String[]> requestParameters) {
050        super.processAfterNew(document, requestParameters);
051        document.getDocumentHeader().setDocumentDescription(OLEConstants.NEW_REQUEST_DOC);
052        OleDeliverRequestBo oleDeliverRequestBo = (OleDeliverRequestBo) document.getNewMaintainableObject().getDataObject();
053        oleDeliverRequestBo.setRequestCreator(OLEConstants.OleDeliverRequest.REQUESTER_PATRON);
054        oleDeliverRequestBo.setOperatorCreateId(GlobalVariables.getUserSession().getPrincipalId());
055        oleDeliverRequestBo.setOperatorCreateName(GlobalVariables.getUserSession().getPrincipalName());
056        oleDeliverRequestBo.setCreateDate(new Date(System.currentTimeMillis()));
057
058
059    }
060
061    /**
062     * This method will set the description when copy is selected
063     *
064     * @param document
065     * @param requestParameters
066     */
067    @Override
068    public void processAfterCopy(MaintenanceDocument document, Map<String, String[]> requestParameters) {
069        super.processAfterCopy(document, requestParameters);
070        document.getDocumentHeader().setDocumentDescription(OLEConstants.COPY_REQUEST_DOC);
071        OleDeliverRequestBo oleDeliverRequestBo = (OleDeliverRequestBo) document.getNewMaintainableObject().getDataObject();
072        oleDeliverRequestBo.setCreateDate(new Date(System.currentTimeMillis()));
073    }
074
075    /**
076     * This method will set the description for edit operation
077     *
078     * @param document
079     * @param requestParameters
080     */
081    @Override
082    public void processAfterEdit(MaintenanceDocument document, Map<String, String[]> requestParameters) {
083        super.processAfterEdit(document, requestParameters);
084        OleDeliverRequestBo oleDeliverRequestBo = (OleDeliverRequestBo) document.getNewMaintainableObject().getDataObject();
085        document.getDocumentHeader().setDocumentDescription(OLEConstants.EDIT_REQUEST_DOC);
086    }
087
088    @Override
089    public Object retrieveObjectForEditOrCopy(MaintenanceDocument document, Map<String, String> dataObjectKeys) {
090        OleDeliverRequestBo oleDeliverRequestBo = (OleDeliverRequestBo) super.retrieveObjectForEditOrCopy(document, dataObjectKeys);
091        OleDeliverRequestBo newOleDeliverRequestBo = (OleDeliverRequestBo) ObjectUtils.deepCopy(oleDeliverRequestBo);
092        if (newOleDeliverRequestBo.getModifiedDate() == null) {
093            newOleDeliverRequestBo.setModifiedDate(new Date(System.currentTimeMillis()));
094        } //
095        // if(newOleDeliverRequestBo.getOperatorModifiedId()==null || (newOleDeliverRequestBo.getOperatorModifiedId()!=null && newOleDeliverRequestBo.getOperatorModifiedId().isEmpty())){
096        newOleDeliverRequestBo.setOperatorModifiedId(GlobalVariables.getUserSession().getPrincipalId());
097        newOleDeliverRequestBo.setOperatorModifierName(GlobalVariables.getUserSession().getPrincipalName());
098        // }
099        if (newOleDeliverRequestBo.getOperatorCreateId() != null && !newOleDeliverRequestBo.getOperatorCreateId().isEmpty()) {
100            newOleDeliverRequestBo.setRequestCreator(OLEConstants.OleDeliverRequest.REQUESTER_OPERATOR);
101        } else if (newOleDeliverRequestBo.getProxyBorrowerId() != null && !newOleDeliverRequestBo.getProxyBorrowerId().isEmpty()) {
102            newOleDeliverRequestBo.setRequestCreator(OLEConstants.OleDeliverRequest.REQUESTER_PROXY_PATRON);
103        } else {
104            newOleDeliverRequestBo.setRequestCreator(OLEConstants.OleDeliverRequest.REQUESTER_PATRON);
105        }
106        OleDeliverRequestDocumentHelperServiceImpl oleDeliverRequestDocumentHelperService = new OleDeliverRequestDocumentHelperServiceImpl();
107        // newOleDeliverRequestBo = oleDeliverRequestDocumentHelperService.processItem(newOleDeliverRequestBo);
108        OleDeliverRequestBo oleDeliverRequestBo1 = newOleDeliverRequestBo;
109
110        getDocstoreUtil().isItemAvailableInDocStore(newOleDeliverRequestBo);
111
112        newOleDeliverRequestBo.setOleItem(null);
113
114        return newOleDeliverRequestBo;
115
116
117    }
118
119    @Override
120    public List<MaintenanceLock> generateMaintenanceLocks() {
121        return Collections.emptyList();
122    }
123
124}