001 package com.khubla.pragmatach.framework.form; 002 003 import java.util.Hashtable; 004 import java.util.List; 005 006 import javax.servlet.http.HttpServletRequest; 007 008 import org.apache.commons.fileupload.FileItem; 009 import org.apache.commons.fileupload.FileItemFactory; 010 import org.apache.commons.fileupload.disk.DiskFileItemFactory; 011 import org.apache.commons.fileupload.servlet.ServletFileUpload; 012 013 import com.khubla.pragmatach.framework.api.PragmatachException; 014 015 /** 016 * @author tome 017 */ 018 public class Form { 019 /** 020 * get form POST data 021 */ 022 public static Form parse(HttpServletRequest httpServletRequest) throws PragmatachException { 023 try { 024 /* 025 * POST is actually a form? 026 */ 027 if (ServletFileUpload.isMultipartContent(httpServletRequest)) { 028 /* 029 * item factory 030 */ 031 final FileItemFactory fileItemFactory = new DiskFileItemFactory(); 032 /* 033 * the upload 034 */ 035 final ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory); 036 /* 037 * the items 038 */ 039 @SuppressWarnings("unchecked") 040 final List<FileItem> fileItems = servletFileUpload.parseRequest(httpServletRequest); 041 /* 042 * the hashtable 043 */ 044 final Hashtable<String, FormItem> formItems = new Hashtable<String, FormItem>(); 045 /* 046 * walk the items 047 */ 048 for (final FileItem fileItem : fileItems) { 049 final FormItem formItem = new FormItem(fileItem.getFieldName(), fileItem.getString(), fileItem.getContentType()); 050 formItems.put(formItem.getName(), formItem); 051 } 052 /* 053 * return the form 054 */ 055 return new Form(formItems); 056 } else { 057 /* 058 * invalid form encoding 059 */ 060 return null; 061 } 062 } catch (final Exception e) { 063 throw new PragmatachException("Exception in process", e); 064 } 065 } 066 067 /** 068 * items 069 */ 070 private final Hashtable<String, FormItem> items; 071 072 /** 073 * ctor 074 */ 075 public Form(Hashtable<String, FormItem> items) { 076 this.items = items; 077 } 078 079 public FormItem getFormItem(String name) { 080 if (null != items) { 081 return items.get(name); 082 } 083 return null; 084 } 085 086 public String getFormItemValue(String name) { 087 if (null != items) { 088 final FormItem formItem = items.get(name); 089 if (null != formItem) { 090 return formItem.getValue(); 091 } 092 } 093 return null; 094 } 095 096 public Hashtable<String, FormItem> getItems() { 097 return items; 098 } 099 100 public int size() { 101 if (null != items) { 102 return items.size(); 103 } 104 return 0; 105 } 106 }