001    package org.kuali.ole.catalog.controller;
002    
003    import org.kuali.ole.OLEConstants;
004    import org.kuali.ole.catalog.bo.OleAccessMethod;
005    import org.kuali.rice.core.api.util.RiceKeyConstants;
006    import org.kuali.rice.krad.document.Document;
007    import org.kuali.rice.krad.maintenance.MaintenanceDocument;
008    import org.kuali.rice.krad.service.KRADServiceLocator;
009    import org.kuali.rice.krad.uif.UifConstants;
010    import org.kuali.rice.krad.util.GlobalVariables;
011    import org.kuali.rice.krad.util.KRADConstants;
012    import org.kuali.rice.krad.web.controller.MaintenanceDocumentController;
013    import org.kuali.rice.krad.web.form.DocumentFormBase;
014    import org.kuali.rice.krad.web.form.MaintenanceDocumentForm;
015    import org.springframework.stereotype.Controller;
016    import org.springframework.validation.BindingResult;
017    import org.springframework.web.bind.annotation.ModelAttribute;
018    import org.springframework.web.bind.annotation.RequestMapping;
019    import org.springframework.web.servlet.ModelAndView;
020    
021    import javax.servlet.http.HttpServletRequest;
022    import javax.servlet.http.HttpServletResponse;
023    import java.util.HashMap;
024    import java.util.List;
025    import java.util.Map;
026    
027    /**
028     * Created with IntelliJ IDEA.
029     * User: ?
030     * Date: 1/23/13
031     * Time: 12:36 PM
032     * To change this template use File | Settings | File Templates.
033     */
034    @Controller
035    @RequestMapping(value = "/accessMethodMaintenance")
036    public class OleAccessMethodController extends MaintenanceDocumentController {
037        @RequestMapping(params = "methodToCall=blanketApprove")
038        public ModelAndView blanketApprove(@ModelAttribute("KualiForm") DocumentFormBase form, BindingResult result,
039                                           HttpServletRequest request, HttpServletResponse response) throws Exception {
040    
041            MaintenanceDocumentForm maintenanceForm = (MaintenanceDocumentForm) form;
042            MaintenanceDocument maintenanceDocument = (MaintenanceDocument)form.getDocument();
043            OleAccessMethod oleAccessMethod = (OleAccessMethod)maintenanceDocument.getDocumentDataObject();
044            String accessMethodName=oleAccessMethod.getAccessMethodName();
045            OleAccessMethod oleAccessMethodOld=(OleAccessMethod)maintenanceDocument.getOldMaintainableObject().getDataObject();
046            String newAccessMethodCode=oleAccessMethodOld.getAccessMethodCode();
047            Map<String,String> accessMethodMap = new HashMap<String,String>();
048            accessMethodMap.put(OLEConstants.OleAccessMethod.ACCESS_METHOD_CD, oleAccessMethod.getAccessMethodCode());
049            List<OleAccessMethod> accessMethodInDatabase = (List<OleAccessMethod>) KRADServiceLocator.getBusinessObjectService().findMatching(OleAccessMethod.class, accessMethodMap);
050            if("Edit".equals(maintenanceDocument.getNewMaintainableObject().getMaintenanceAction())){
051                Document document = form.getDocument();
052                String successMessageKey = null;
053                if(oleAccessMethod.getAccessMethodCode().equals(newAccessMethodCode) || accessMethodInDatabase.size()==0)    {
054                   getDocumentService().blanketApproveDocument(document, form.getAnnotation(), combineAdHocRecipients(
055                            form));
056                    successMessageKey = RiceKeyConstants.MESSAGE_ROUTE_APPROVED;
057                    GlobalVariables.getMessageMap().putInfo(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE,"message.route.approved");
058                    return getUIFModelAndView(form);
059    
060                }
061                else {
062                    if(accessMethodInDatabase.size()>0){
063                    for(OleAccessMethod accessMehtodObj : accessMethodInDatabase){
064                        String accessMethodId =  accessMehtodObj.getAccessMethodId().toString();
065                        //String accessMethodCode=accessMehtodObj.getAccessMethodCode();
066                        if (null == oleAccessMethod.getAccessMethodId()  ||
067                                !(oleAccessMethod.getAccessMethodId().equals(accessMethodId))) {
068                            GlobalVariables.getMessageMap().putError(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE, "error.duplicate.code.access");
069                            return getUIFModelAndView(form);
070                        }
071                        getDocumentService().blanketApproveDocument(document, form.getAnnotation(), combineAdHocRecipients(
072                                    form));
073                            successMessageKey = RiceKeyConstants.MESSAGE_ROUTE_APPROVED;
074                            GlobalVariables.getMessageMap().putInfo(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE,"message.route.approved");
075                            return getUIFModelAndView(form);
076    
077                        }
078                    }
079    
080                }
081    
082            }   else if("Copy".equals(maintenanceDocument.getNewMaintainableObject().getMaintenanceAction())){
083                    String successMessageKey = null;
084                    Document document = form.getDocument();
085                              if(accessMethodInDatabase.size()==0){
086                                  getDocumentService().blanketApproveDocument(document, form.getAnnotation(), combineAdHocRecipients(
087                                          form));
088                                  successMessageKey = RiceKeyConstants.MESSAGE_ROUTE_APPROVED;
089                                  GlobalVariables.getMessageMap().putInfo(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE,"message.route.approved");
090                                  return getUIFModelAndView(form);
091                              }  else if((accessMethodInDatabase.size() > 0)) {
092    
093                                  for(OleAccessMethod accessMehtodObj : accessMethodInDatabase){
094                                      String accessMethodId =  accessMehtodObj.getAccessMethodId().toString();
095                                      if (null == oleAccessMethod.getAccessMethodId()  ||
096                                              !(oleAccessMethod.getAccessMethodId().equals(accessMethodId))) {
097                                          GlobalVariables.getMessageMap().putError(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE, "error.duplicate.code.access");
098                                          return getUIFModelAndView(form);
099                                      }
100                                  }
101    
102                              }
103            }    else if("New".equals(maintenanceDocument.getNewMaintainableObject().getMaintenanceAction())){
104                String successMessageKey = null;
105                Document document = form.getDocument();
106                if(accessMethodInDatabase.size()==0){
107                    getDocumentService().blanketApproveDocument(document, form.getAnnotation(), combineAdHocRecipients(
108                            form));
109                    successMessageKey = RiceKeyConstants.MESSAGE_ROUTE_APPROVED;
110                    GlobalVariables.getMessageMap().putInfo(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE,"message.route.approved");
111                    return getUIFModelAndView(form);
112                }  else if((accessMethodInDatabase.size() > 0)) {
113    
114                    for(OleAccessMethod accessMehtodObj : accessMethodInDatabase){
115                        String accessMethodId =  accessMehtodObj.getAccessMethodId().toString();
116                        if (null == oleAccessMethod.getAccessMethodId()  ||
117                                !(oleAccessMethod.getAccessMethodId().equals(accessMethodId))) {
118                            GlobalVariables.getMessageMap().putError(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE, "error.duplicate.code.access");
119                            return getUIFModelAndView(form);
120                        }
121                    }
122    
123                }
124            }
125    
126            /*else if((accessMethodInDatabase.size() > 0)) {
127    
128                for(OleAccessMethod accessMehtodObj : accessMethodInDatabase){
129                    String accessMethodId =  accessMehtodObj.getAccessMethodId().toString();
130                    if (null == oleAccessMethod.getAccessMethodId()  ||
131                            !(oleAccessMethod.getAccessMethodId().equals(accessMethodId))) {
132                        GlobalVariables.getMessageMap().putError(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE, "error.duplicate.code");
133                        return getUIFModelAndView(form);
134                    }
135                }
136    
137            }*/
138            performWorkflowAction(form, UifConstants.WorkflowAction.BLANKETAPPROVE, true);
139            return returnToPrevious(form);
140        }
141    }