Downloads Documentation Community Contribute Demo






Show Sidebar
Login | Register

Changeset 4989

Show
Ignore:
Timestamp:
07/20/08 01:01:33 (6 months ago)
Author:
mhdiallo
Message:

Person Portrait Module - resubmitting the changes for the previous commit.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/controller/PersonPortraitFormController.java

    r4945 r4989  
    1414package org.openmrs.module.personportrait.web.controller; 
    1515 
    16 import java.awt.Image; 
    17 import java.io.File; 
    18 import java.io.FileInputStream; 
    19 import java.io.IOException; 
     16import java.awt.image.BufferedImage; 
    2017import java.io.InputStream; 
    2118import java.io.PrintWriter; 
    22 import java.util.Collection
     19import java.util.Date
    2320import java.util.HashMap; 
    2421import java.util.Iterator; 
     
    3431 
    3532import org.apache.commons.fileupload.FileItem; 
    36 import org.apache.commons.fileupload.FileItemIterator; 
    37 import org.apache.commons.fileupload.FileItemStream; 
     33import org.apache.commons.fileupload.FileItemFactory; 
    3834import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
    3935import org.apache.commons.fileupload.servlet.ServletFileUpload; 
    40 import org.apache.commons.fileupload.util.Streams; 
    4136import org.apache.commons.logging.Log; 
    4237import org.apache.commons.logging.LogFactory; 
    4338import org.openmrs.Concept; 
    44 import org.openmrs.ConceptAnswer; 
    45 import org.openmrs.ConceptDatatype; 
     39import org.openmrs.ConceptComplex; 
    4640import org.openmrs.Form; 
    47 import org.openmrs.Patient; 
     41import org.openmrs.Location; 
     42import org.openmrs.Obs; 
    4843import org.openmrs.api.FormService; 
    4944import org.openmrs.api.context.Context; 
    5045import org.openmrs.module.personportrait.impl.ImageManager; 
     46import org.openmrs.obs.ComplexData; 
    5147import org.openmrs.web.WebConstants; 
    5248import org.springframework.validation.BindException; 
     
    5450import org.springframework.web.multipart.MultipartFile; 
    5551import org.springframework.web.multipart.MultipartHttpServletRequest; 
    56 import org.springframework.web.multipart.commons.CommonsMultipartFile; 
    5752import org.springframework.web.servlet.ModelAndView; 
    5853import org.springframework.web.servlet.mvc.SimpleFormController; 
    5954import org.springframework.web.servlet.view.RedirectView; 
    60  
    61 import sun.awt.image.FileImageSource; 
    62 import sun.awt.image.InputStreamImageSource; 
    6355 
    6456/** 
     
    9890        protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response,  
    9991                        Object obj, BindException errors) throws Exception { 
     92         
     93                HttpSession httpSession = request.getSession(); 
     94                String view = getFormView(); 
    10095                 
    101                 HttpSession httpSession = request.getSession(); 
    102                  
    103                 // Check that we have a file upload request 
    104                 boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
    105                  
    106                 if (isMultipart) { 
    107                         // Create a new file upload handler 
    108                         ServletFileUpload upload = new ServletFileUpload(); 
    109                          
    110                         // Create a factory for disk-based file items 
    111                         DiskFileItemFactory factory = new DiskFileItemFactory(); 
    112          
    113                         // Set factory constraints 
    114                 //      factory.setSizeThreshold(maxMemorySize); 
    115                 //      factory.setRepository(tempDirectory); 
    116          
    117                         // Create a new file upload handler 
    118                 //      ServletFileUpload upload = new ServletFileUpload(factory); 
    119          
    120                         // Set overall request size constraint 
    121                 //      upload.setSizeMax(maxRequestSize); 
    122          
    123                         // Parse the request 
    124                         List items = upload.parseRequest(request); 
     96                if (Context.isAuthenticated()) { 
     97                        Form form = null; 
    12598                        try { 
    126                                 // Process the uploaded items 
    127                                 Iterator iter = items.iterator(); 
    128                                 while (iter.hasNext()) { 
    129                                     FileItem item = (FileItem) iter.next(); 
    130          
    131                                     if (!item.isFormField()) { 
    132                                         String fieldName = item.getFieldName(); 
    133                                         String fileName = item.getName(); 
    134                                         String contentType = item.getContentType(); 
    135                                         boolean isInMemory = item.isInMemory(); 
    136                                         long sizeInBytes = item.getSize(); 
    137                                          
    138                                         InputStream uploadedStream = item.getInputStream(); 
    139                                         Image image = ImageIO.read(uploadedStream); 
    140                                         uploadedStream.close(); 
    141                                          
    142                                         httpSession.setAttribute(WebConstants.OPENMRS_MSG_ATTR, fileName); 
    143                                          
    144                                         return new ModelAndView(new RedirectView(getSuccessView())); 
    145                                     } 
     99                                // handle image upload 
     100                                if (request instanceof MultipartHttpServletRequest) { 
     101                                        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request; 
     102                                        MultipartFile uploadedFile = multipartRequest.getFile("imageFile"); 
     103                                        if (uploadedFile != null && !uploadedFile.isEmpty()) { 
     104                                                 
     105                                                String fileType = uploadedFile.getContentType(); 
     106                                                // Make sure that the uploaded file is an image. 
     107                                                if(fileType.equals("image/png") || fileType.equals("image/gif") ||  
     108                                                                fileType.equals("image/jpeg")) { 
     109                                                        String fileName = uploadedFile.getOriginalFilename(); 
     110                                                        byte[] byteImage = uploadedFile.getBytes(); 
     111                                                 
     112                                                        //TODO: Check the size of the file 
     113                                                        long size = uploadedFile.getSize(); 
     114                                                         
     115                                                        // Read the image 
     116                                                        InputStream streamImage = multipartRequest.getInputStream(); 
     117                                                        BufferedImage bufferedImage = ImageIO.read(streamImage); 
     118                                                         
     119                                        //              String msg = getMessageSourceAccessor().getMessage("Info",  
     120                                        //                              "Name: "+fileName+", Size: "+size+", Type: "+fileType); 
     121                                        //              httpSession.setAttribute(WebConstants.OPENMRS_MSG_ATTR, msg); 
     122                                                         
     123                                        //              ConceptComplex concept = Context.getConceptService().getConceptComplex(); 
     124                                         
     125                                                        // Create an obs object and add required fields 
     126                                                        Obs obsImage = new Obs(Integer.valueOf(111)); 
     127                                                        obsImage.setDateCreated(new Date()); 
     128                                                        obsImage.setObsDatetime(new Date()); 
     129                                                         
     130                                                        // Create a ComplexData to store the object 
     131                                                        ComplexData dataImage = new ComplexData(fileName, bufferedImage); 
     132                                        //              obsImage.setComplexData(dataImage); 
     133                                                         
     134                                                        //TODO: Need to persist the ComplexData using ComplexObsHandler 
     135                                                         
     136                                                        // Save the obs object 
     137                                                        Context.getObsService().createObs(obsImage); 
     138                                                         
     139                                                        String msg = getMessageSourceAccessor().getMessage("Info", "ID="+dataImage.getTitle()); 
     140                                        httpSession.setAttribute(WebConstants.OPENMRS_MSG_ATTR, msg); 
     141                                                         
     142                                                         
     143                                                        return new ModelAndView(new RedirectView(getSuccessView())); 
     144                                                 } 
     145                                        } 
    146146                                } 
    147147                        } 
    148                         catch (IOException e) { 
     148                        catch (Exception e) { 
    149149                                log.error("Error while getting imageFile from request", e); 
    150150                                errors.reject(e.getMessage()); 
    151                                 httpSession.setAttribute(WebConstants.OPENMRS_ERROR_ATTR, "personportrait.portrait.not.saved"); 
     151                                httpSession.setAttribute(WebConstants.OPENMRS_ERROR_ATTR, e.getMessage()); 
    152152                                return showForm(request, response, errors); 
    153153                        } 
     
    161161         *   the form/command object to load into the request 
    162162         */ 
    163     protected Object formBackingObject(HttpServletRequest request) throws ServletException { 
     163    @Override 
     164        protected Object formBackingObject(HttpServletRequest request) throws ServletException { 
    164165 
    165166                //default empty Object