Downloads Documentation Community Contribute Demo






Show Sidebar
Login | Register

Ticket #866: OrderTypeListController_delete.patch

File OrderTypeListController_delete.patch, 3.2 kB (added by dkayiwa, 7 months ago)

patch for displaying a user friendly messages for exceptions thro.wn when attempting to delete drug order types

  • openmrs/trunk/src/web/org/openmrs/web/controller/order/OrderTypeListController.java

    old new  
    3131import org.openmrs.web.WebConstants; 
    3232import org.springframework.beans.propertyeditors.CustomNumberEditor; 
    3333import org.springframework.context.support.MessageSourceAccessor; 
     34import org.springframework.dao.DataIntegrityViolationException; 
    3435import org.springframework.validation.BindException; 
    3536import org.springframework.web.bind.ServletRequestDataBinder; 
    3637import org.springframework.web.servlet.ModelAndView; 
     
    6970                Locale locale = request.getLocale(); 
    7071                String view = getFormView(); 
    7172                if (Context.isAuthenticated()) { 
    72                         String[] orderTypeList = request.getParameterValues("orderTypeId"); 
    73                         OrderService os = Context.getOrderService(); 
    74                          
    7573                        String success = ""; 
    7674                        String error = ""; 
    7775 
    7876                        MessageSourceAccessor msa = getMessageSourceAccessor(); 
    79                         String deleted = msa.getMessage("general.deleted"); 
    80                         String notDeleted = msa.getMessage("general.cannot.delete"); 
    81                         for (String p : orderTypeList) { 
    82                                 try { 
    83                                         os.deleteOrderType(os.getOrderType(Integer.valueOf(p))); 
    84                                         if (!success.equals("")) success += "<br/>"; 
    85                                         success += p + " " + deleted; 
     77 
     78                        String[] orderTypeList = request.getParameterValues("orderTypeId"); 
     79                                if(orderTypeList != null){ 
     80                                OrderService os = Context.getOrderService(); 
     81                                 
     82                                String deleted = msa.getMessage("general.deleted"); 
     83                                String notDeleted = msa.getMessage("OrderType.cannot.delete"); 
     84                                for (String p : orderTypeList) { 
     85                                        try { 
     86                                                os.deleteOrderType(os.getOrderType(Integer.valueOf(p))); 
     87                                                if (!success.equals("")) success += "<br/>"; 
     88                                                success += p + " " + deleted; 
     89                                        } 
     90                                        catch(DataIntegrityViolationException e){ 
     91                                                error = handleOrderTypeIntegrityException(e,error,notDeleted); 
     92                                        } 
     93                                        catch (APIException e) { 
     94                                                error = handleOrderTypeIntegrityException(e,error,notDeleted); 
     95                                        } 
    8696                                } 
    87                                 catch (APIException e) { 
    88                                         log.warn("Error deleting order type", e); 
    89                                         if (!error.equals("")) error += "<br/>"; 
    90                                         error += p + " " + notDeleted; 
    91                                 } 
    9297                        } 
     98                        else 
     99                                error = msa.getMessage("OrderType.select"); 
    93100                         
    94101                        view = getSuccessView(); 
    95102                        if (!success.equals("")) 
     
    100107                         
    101108                return new ModelAndView(new RedirectView(view)); 
    102109        } 
     110         
     111        /** 
     112         *  
     113         * Logs an order type delete data integrity violation exception and  
     114         * returns a user friedly message of the problem that occured. 
     115         *  
     116         * @param e the exception. 
     117         * @param error the error message. 
     118         * @param notDeleted the not deleted error message. 
     119         * @return the formatted error message. 
     120         */ 
     121        private String handleOrderTypeIntegrityException(Exception e,String error,String notDeleted){ 
     122                log.warn("Error deleting order type", e); 
     123                if (!error.equals("")) error += "<br/>"; 
     124                error += notDeleted; 
     125                return error; 
     126        } 
    103127 
    104128        /** 
    105129         *