Changeset 5406
- Timestamp:
- 08/29/08 18:41:06 (3 months ago)
- Files:
-
- openmrs-modules/personportrait/metadata/config.xml (modified) (2 diffs)
- openmrs-modules/personportrait/metadata/moduleApplicationContext.xml (modified) (2 diffs)
- openmrs-modules/personportrait/web/module/portlets/personPortraitDashboardPortlet.jsp (modified) (3 diffs)
- openmrs-modules/personportrait/web/module/portlets/portraitDisplayForm.jsp (added)
- openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/FormImageUploadServlet.java (modified) (7 diffs)
- openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/ImagePersonHandler.java (modified) (2 diffs)
- openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/ViewImageServlet.java (modified) (3 diffs)
- openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/controller/PersonPortraitFormController.java (modified) (1 diff)
- openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/controller/PortraitPortletController.java (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
openmrs-modules/personportrait/metadata/config.xml
r5282 r5406 37 37 38 38 <globalProperty> 39 <property>@MODULE_ID@ .complex_obs_dir</property>39 <property>@MODULE_ID@obs.complex_obs_dir</property> 40 40 <defaultValue>/Library/Tomcat/apache-tomcat-6.0.16/webapps/openmrs</defaultValue> 41 41 <description> … … 51 51 </servlet> 52 52 <servlet> 53 <servlet-name> viewPersonImage</servlet-name>53 <servlet-name>formShowImages</servlet-name> 54 54 <servlet-class>@MODULE_PACKAGE@.web.ViewImageServlet</servlet-class> 55 55 </servlet> 56 56 <!-- /Servlets --> 57 57 58 <!--59 <dwr>60 <allow>61 <create creator="new" javascript="PersonPortraitDWRService">62 <param name="class" value="org.openmrs.module.personportrait.web.dwr.PersonPortraitDWRService"/>63 <include method="uploadImage"/>64 </create>65 </allow>66 <signatures>67 <![CDATA[ ]]>68 </signatures>69 </dwr>70 -->71 72 <!-- Required Privileges73 <privilege>74 <name>PersonPortrait</name>75 <description>Allows user to access Form Entry pages/functions</description>76 </privilege> -->77 78 <!-- AOP79 <advice>80 <point>org.openmrs.api.FormService</point>81 <class>@MODULE_PACKAGE@.advice.DuplicateFormAdvisor</class>82 </advice>83 /AOP -->84 85 <!--86 <dwr>87 <allow>88 <create creator="new" javascript="DWRFormEntryService">89 <param name="class" value="org.openmrs.module.@MODULE_ID@.web.DWRFormEntryService"/>90 <include method="enterForm"/>91 </create>92 </allow>93 94 <signatures>95 <![CDATA[96 import @MODULE_PACKAGE@.web.DWRFormEntryService;97 DWRFormEntryService.enterForm(Integer patientId, Integer formId, boolean useEncounter, List<String> fields);98 ]]>99 </signatures>100 </dwr>101 -->102 103 <!-- Servlets -->104 <!-- Accessed through the url /pageContext()/moduleServlet/<moduleId>/<servlet-name>105 <servlet>106 <servlet-name>formDownload</servlet-name>107 <servlet-class>@MODULE_PACKAGE@.web.FormDownloadServlet</servlet-class>108 </servlet>109 -->110 <!-- /Servlets -->111 112 113 58 <!-- Internationalization --> 114 59 <!-- All message codes should start with @MODULE_ID@.* --> openmrs-modules/personportrait/metadata/moduleApplicationContext.xml
r5282 r5406 8 8 <property name="mappings"> 9 9 <props> 10 <prop key="module/@MODULE_ID@/portlets/personPortraitDashboardPortlet">personPortrait DashboardController</prop>10 <prop key="module/@MODULE_ID@/portlets/personPortraitDashboardPortlet">personPortraitPortletController</prop> 11 11 </props> 12 12 </property> … … 15 15 <!-- Controllers --> 16 16 17 <bean id="personPortraitDashboardController" class="@MODULE_PACKAGE@.web.controller.PersonPortraitFormController"> 18 <property name="commandName"><value>personPortrait</value></property> 19 <property name="formView"><value>/module/@MODULE_ID@/portlets/personPortraitDashboardPortlet</value></property> 20 <property name="successView"><value>/module/@MODULE_ID@/portlets/personPortraitDashboardPortlet</value></property> 21 </bean> 17 <bean id="personPortraitPortletController" class="@MODULE_PACKAGE@.web.controller.PortraitPortletController"/> 22 18 23 19 <bean parent="obsServiceTarget" > openmrs-modules/personportrait/web/module/portlets/personPortraitDashboardPortlet.jsp
r5282 r5406 11 11 $(document).ready(function() { 12 12 var options = { 13 target: '# imagePreview', // target element(s) to be updated with server response14 beforeSubmit: showRequest, // pre-submit callback15 success: showResponse // post-submit callback13 target: '#recentPortraitViewBox', // target element(s) to be updated with server response 14 beforeSubmit: showRequest, // pre-submit callback 15 success: showResponse // post-submit callback 16 16 17 17 // other available options: … … 67 67 function uploadPersonImage() { 68 68 alert("The image is loadeding..."); 69 var fvalue = $('# imageFile').val();69 var fvalue = $('#recentPortraitViewBox').val(); 70 70 var img = new Image(); 71 71 img.src = fvalue; 72 $("# imagePreview").val(img);72 $("#recentPortraitViewBox").val(img); 73 73 74 74 alert("The image is loaded"); … … 90 90 <input type="file" id="imageFile" name="imageFile"/> 91 91 <br><br> 92 <label>Portrait Date: </label> 93 <input type="text" id="portraitDate" name="portraitDate"/> 94 <br><br> 92 95 <label>Description: </label> 93 <textarea rows=" 5" cols="50" id="imageDescription"></textarea>96 <textarea rows="3" cols="60" id="imageDescription"></textarea> 94 97 <br><br> 95 <input type="hidden" name="returnPage" value="${pageContext.request.contextPath}/patientDashboard.form?patientId=${model.patientId}"/> 96 <input type="submit" name='Upload' value="Upload Portrait" > 98 <input type="submit" name='Upload' value="Upload Portrait"> 97 99 </form> 98 100 <br><br> 99 <button type="button">Show All Portraits</button> 101 <form name="showAllPortraitsForm" action="<%= request.getContextPath() %>/moduleServlet/personportrait/formShowImages?obsId=${model.test}" 102 enctype="multipart/form-data" method="post"> 103 <input type="submit" name='showAllPortraits' value="Show All Portraits"> 104 <input type="submit" name='hideAllPortraits' value="Hide All Portraits"> 105 <input type="submit" name='deletePortrait' value="Delete Portrait"> 106 </form> 100 107 </div> 101 108 102 <div id=" personPortraitViewBoxHeader" class="boxHeader${model.patientVariation}">109 <div id="recentPortraitViewBoxHeader" class="boxHeader${model.patientVariation}"> 103 110 <spring:message code="personportrait.portrait.view" /> 104 111 </div> 105 112 106 <div id=" personPortraitViewBox" class="box${model.patientVariation}">107 <img src="${pageContext.request.contextPath}/m e.png">113 <div id="recentPortraitViewBox" class="box${model.patientVariation}"> 114 <img src="${pageContext.request.contextPath}/moduleServlet/personportrait/formImageUpload?patientId=${param.patientId}"> 108 115 </div> 109 116 110 <div id="imagePreview"> 111 117 <div class="box${model.patientVariation}"> 118 <label>Portrait</label> 119 <table cellpadding="10"> 120 <c:forEach var="imageObsId" items="${model.portraits}"> 121 <tr> 122 <td> 123 <img src="${pageContext.request.contextPath}/moduleServlet/personportrait/formShowImages?obsId=${imageObsId}"> 124 </td> 125 </tr> 126 127 </c:forEach> 128 </table> 112 129 </div> 113 114 130 </body> 115 131 </html> openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/FormImageUploadServlet.java
r5282 r5406 3 3 import java.awt.image.BufferedImage; 4 4 import java.io.File; 5 import java.io.FileInputStream; 5 6 import java.io.IOException; 6 7 import java.io.InputStream; … … 34 35 import org.openmrs.obs.ComplexData; 35 36 import org.openmrs.obs.handler.ImageHandler; 37 import org.openmrs.util.OpenmrsUtil; 36 38 import org.openmrs.web.WebConstants; 37 39 … … 50 52 51 53 imagePersonHandler = new ImagePersonHandler(); 52 53 loadImage(request, response);54 55 ServletOutputStream out = response.getOutputStream();56 54 HttpSession httpSession = request.getSession(); 57 55 … … 61 59 try { 62 60 List items = upload.parseRequest(request); 63 Iterator it er= items.iterator();64 while (it er.hasNext()) {65 FileItem item = (FileItem) it er.next();61 Iterator it = items.iterator(); 62 while (it.hasNext()) { 63 FileItem item = (FileItem) it.next(); 66 64 if (!item.isFormField()) { 67 65 String fileName = item.getName(); 68 66 String fileType = item.getContentType(); 69 67 70 // out.print("\nFile Name: "+fileName);68 // System.out.println("File Name: "+fileName); 71 69 72 70 if(fileType.equals("image/png") || fileType.equals("image/gif") || … … 75 73 InputStream uploadedStream = item.getInputStream(); 76 74 BufferedImage bufferedImage = ImageIO.read(uploadedStream); 77 78 // OpenmrsUtil.copyFile(uploadedStream, response.getOutputStream()); 79 75 80 76 String patientId = request.getParameter("patientId"); 81 out.print("\npatientId: "+patientId);82 77 // System.out.println("Patient Id: "+patientId); 78 83 79 PatientService patientService = Context.getPatientService(); 84 80 Patient patient = patientService.getPatient(Integer.valueOf(patientId)); 85 81 86 82 String conceptName = Context.getAdministrationService().getGlobalProperty("personportrait.person_portrait_concept"); 87 out.print("\nconceptName : "+conceptName);88 83 Concept concept = Context.getConceptService().getConcept(conceptName); 89 Integer conceptID = concept.getConceptId();90 out.print("\nconceptID : "+conceptID);91 // ConceptComplex conceptComplex = new ConceptComplex(conceptID);92 // out.print("\nconceptComplex : "+conceptComplex.getConceptId());93 84 94 85 // Create an obs object and add required fields … … 108 99 obsImage.setComplexData(dataImage); 109 100 110 // TODO: Need to persist the ComplexData using ComplexObsHandler111 imagePersonHandler.saveObs(obsImage);101 //Persist the ComplexData using ComplexObsHandler 102 Obs obs = imagePersonHandler.saveObs(obsImage); 112 103 113 104 // Save the obs object 114 105 Context.getObsService().createObs(obsImage); 115 Integer id = obsImage.getObsId(); 116 out.print("\nID 1 : "+id); 117 118 out.print("\nisComplexObs() : "+obsImage.isComplex()); 119 120 Obs obs = Context.getObsService().getObs(id); 121 out.print("\nID 2: "+obs.getObsId()); 106 107 uploadedStream.close(); 122 108 123 uploadedStream.close(); 109 obs = imagePersonHandler.getObs(obs); 110 getImage(obs, response); 111 } 112 else { 113 httpSession.setAttribute(WebConstants.OPENMRS_MSG_ATTR, "The type of the image is not correct."); 124 114 } 125 115 } … … 127 117 } 128 118 catch (Exception e) { 129 out.print("\nError: "+e.getMessage()); 130 } 119 System.out.println("Error: "+e.getMessage()); 120 } 121 } 122 123 public void getImage(Obs complexObs, HttpServletResponse response) throws ServletException, IOException { 124 125 String[] complexValue = complexObs.getValueComplex().split("\\|"); 126 String imageUrl = (complexValue.length < 2) ? complexValue[0] : complexValue[complexValue.length-1]; 127 128 File imageFile = new File(imageUrl); 129 if (!imageFile.exists()) { 130 String fileName = imageFile.getName(); 131 File dir = OpenmrsUtil.getDirectoryInApplicationDataDirectory(Context.getAdministrationService().getGlobalProperty("obs.complex_obs_dir")); 132 imageFile = null; 133 imageFile = new File(dir, fileName ); 134 135 } 136 if (!imageFile.exists()) { 137 return; 138 } 139 140 InputStream inStream = null; 141 try { 142 inStream = new FileInputStream(imageFile); 143 OpenmrsUtil.copyFile(inStream, response.getOutputStream()); 144 } 145 finally { 146 if (inStream != null) 147 try { inStream.close(); } catch (Exception e) {} 148 } 131 149 } 132 150 openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/ImagePersonHandler.java
r5282 r5406 104 104 105 105 File dir = OpenmrsUtil.getDirectoryInApplicationDataDirectory(Context.getAdministrationService() 106 .getGlobalProperty(" personportrait.complex_obs_dir"));106 .getGlobalProperty("obs.complex_obs_dir")); 107 107 File outputfile = null; 108 108 … … 203 203 String filename = names.length < 2 ? names[0] : names[names.length - 1]; 204 204 File dir = OpenmrsUtil.getDirectoryInApplicationDataDirectory(Context.getAdministrationService() 205 .getGlobalProperty(" personportrait.complex_obs_dir"));205 .getGlobalProperty("obs.complex_obs_dir")); 206 206 return new File(dir, filename); 207 207 } openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/ViewImageServlet.java
r5282 r5406 1 1 package org.openmrs.module.personportrait.web; 2 2 3 import java.awt.image.BufferedImage;4 3 import java.io.File; 4 import java.io.FileInputStream; 5 5 import java.io.IOException; 6 6 import java.io.InputStream; 7 import java.util.Date;8 7 import java.util.Iterator; 9 8 import java.util.List; 10 9 11 import javax.imageio.ImageIO;12 10 import javax.servlet.ServletException; 13 11 import javax.servlet.ServletOutputStream; … … 17 15 import javax.servlet.http.HttpSession; 18 16 import javax.xml.parsers.DocumentBuilderFactory; 19 import org.apache.commons.fileupload.FileItem;20 import org.apache.commons.fileupload.FileItemFactory;21 import org.apache.commons.fileupload.disk.DiskFileItemFactory;22 import org.apache.commons.fileupload.servlet.ServletFileUpload;23 17 import org.apache.commons.logging.Log; 24 18 import org.apache.commons.logging.LogFactory; 25 import org.openmrs.Concept;26 import org.openmrs.Location;27 19 import org.openmrs.Obs; 20 import org.openmrs.Person; 28 21 import org.openmrs.api.ObsService; 29 import org.openmrs.api.PatientService;30 22 import org.openmrs.api.context.Context; 31 import org.openmrs. obs.ComplexData;23 import org.openmrs.util.OpenmrsUtil; 32 24 import org.openmrs.web.WebConstants; 33 25 … … 42 34 @Override 43 35 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 36 ImagePersonHandler imagePersonHandler = new ImagePersonHandler(); 37 HttpSession httpSession = request.getSession(); 38 ServletOutputStream outputStream = response.getOutputStream(); 44 39 45 ServletOutputStream out = response.getOutputStream(); 46 HttpSession session = request.getSession(); 47 48 String patientId = request.getParameter("patientId"); 49 out.print("\npatientId : "+patientId); 50 51 session.setAttribute(WebConstants.OPENMRS_MSG_ATTR, patientId); 40 String imageObsId = request.getParameter("obsId"); 41 outputStream.println("Images"); 42 if (imageObsId == null) { 43 return; 44 } 45 outputStream.println("imageObsId : "+imageObsId); 52 46 53 47 /* 54 String obsId = request.getParameter("obsId"); 55 if (obsId == null || obsId.length()==0 ) { 56 session.setAttribute(WebConstants.OPENMRS_ERROR_ATTR, "error.null"); 57 return; 48 String patientId = request.getParameter("patientId"); 49 if (patientId == null) { 50 return; 51 } 52 outputStream.println("patientId : "+patientId); 53 54 ObsService service = Context.getObsService(); 55 List<Obs> listComplexObs = service.getAllComplexObs(); 56 if (listComplexObs == null || listComplexObs.isEmpty()) { 57 return; 58 } 59 60 Iterator obsIt = listComplexObs.iterator(); 61 while (obsIt.hasNext()) { 62 Obs obs = (Obs)obsIt.next(); 63 if (obs != null) { 64 Person patient = obs.getPerson(); 65 if (patient.getPersonId().equals(Integer.valueOf(patientId))) { 66 Obs obsTemp = imagePersonHandler.getObs(obs); 67 getImage(obsTemp, outputStream); 68 } 69 } 70 } 71 */ 72 } 73 74 public void getImage(Obs complexObs, ServletOutputStream outputStream) throws ServletException, IOException { 75 76 String[] valComplex = complexObs.getValueComplex().split("\\|"); 77 String imageUrl = (valComplex.length < 2) ? valComplex[0] : valComplex[valComplex.length-1]; 78 79 File imageFile = new File(imageUrl); 80 if (!imageFile.exists()) { 81 String fileName = imageFile.getName(); 82 File imagePath = OpenmrsUtil.getDirectoryInApplicationDataDirectory(Context.getAdministrationService().getGlobalProperty("obs.complex_obs_dir")); 83 imageFile = null; 84 imageFile = new File(imagePath, fileName); 58 85 } 59 60 ObsService service = Context.getObsService(); 61 Obs complexObs = service.getObs(Integer.valueOf(obsId)); 62 session.setAttribute(WebConstants.OPENMRS_ERROR_ATTR, complexObs.getObsId()); 63 64 // Extract the url from the Obs.valueComplex and create a file. 65 String[] valComplex = complexObs.getValueComplex().split("\\|"); 66 String url = (valComplex.length < 2) ? valComplex[0] : valComplex[valComplex.length-1]; 67 File file = new File(url); 68 69 String filename = response.encodeURL(url); 70 */ 86 if (!imageFile.exists()) { 87 return; 88 } 89 90 InputStream imageStream = null; 91 try { 92 imageStream = new FileInputStream(imageFile); 93 OpenmrsUtil.copyFile(imageStream, outputStream); 94 } 95 finally { 96 if (imageStream != null) 97 try { imageStream.close(); } catch (Exception e) {} 98 } 99 } 100 101 public void findMostRecentPortrait () { 102 71 103 } 72 104 openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/controller/PersonPortraitFormController.java
r5132 r5406 78 78 Object obj, BindException errors) throws Exception { 79 79 80 HttpSession httpSession = request.getSession();81 String view = getFormView();82 83 if (Context.isAuthenticated()) {84 Form form = null;85 try {86 // handle image upload87 if (request instanceof MultipartHttpServletRequest) {88 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;89 MultipartFile uploadedFile = multipartRequest.getFile("imageFile");90 if (uploadedFile != null && !uploadedFile.isEmpty()) {91 92 String fileType = uploadedFile.getContentType();93 // Make sure that the uploaded file is an image.94 if(fileType.equals("image/png") || fileType.equals("image/gif") ||95 fileType.equals("image/jpeg")) {96 String fileName = uploadedFile.getOriginalFilename();97 byte[] byteImage = uploadedFile.getBytes();98 99 //TODO: Check the size of the file100 long size = uploadedFile.getSize();101 102 // Read the image103 InputStream streamImage = multipartRequest.getInputStream();104 BufferedImage bufferedImage = ImageIO.read(streamImage);105 106 // String msg = getMessageSourceAccessor().getMessage("Info", "Name: "+fileName+", Size: "+size+", Type: "+fileType);107 // httpSession.setAttribute(WebConstants.OPENMRS_MSG_ATTR, msg);108 109 // String conceptName = Context.getAdministrationService().getGlobalProperty("personportrait.person_portrait_concept");110 111 // Concept concept = Context.getConceptService().getConcept(conceptName);112 // Integer conceptID = concept.getConceptId();113 // ConceptComplex conceptComplex = Context.getConceptService().getConceptComplex(conceptID);114 115 // Create an obs object and add required fields116 Obs obsImage = new Obs(Integer.valueOf(111));117 // obsImage.setConcept(conceptComplex);118 obsImage.setDateCreated(new Date());119 obsImage.setObsDatetime(new Date());120 121 // Create a ComplexData to store the object122 ComplexData dataImage = new ComplexData(fileName, bufferedImage);123 // obsImage.setComplexData(dataImage);124 125 //TODO: Need to persist the ComplexData using ComplexObsHandler126 127 // Save the obs object128 // Context.getObsService().createObs(obsImage);129 130 // String msg = getMessageSourceAccessor().getMessage("Info", "ID="+dataImage.getTitle());131 // httpSession.setAttribute(WebConstants.OPENMRS_MSG_ATTR, msg);132 133 return new ModelAndView(new RedirectView(getSuccessView()));134 }135 }136 }137 }138 catch (Exception e) {139 log.error("Error while getting imageFile from request", e);140 errors.reject(e.getMessage());141 httpSession.setAttribute(WebConstants.OPENMRS_ERROR_ATTR, e.getMessage());142 return showForm(request, response, errors);143 }144 }145 80 146 81 return showForm(request, response, errors);