1 15 16 package com.jdon.strutsutil.util; 17 18 import javax.servlet.http.HttpServletRequest ; 19 20 import org.apache.commons.beanutils.ConvertUtils; 21 import org.apache.struts.action.ActionMapping; 22 23 import com.jdon.controller.model.ModelIF; 24 import com.jdon.model.ModelForm; 25 import com.jdon.model.ModelHandler; 26 import com.jdon.model.ModelKey; 27 import com.jdon.model.ModelManager; 28 import com.jdon.model.config.ModelMapping; 29 import com.jdon.strutsutil.FormBeanUtil; 30 import com.jdon.util.Debug; 31 32 39 public class EditeViewPageUtil { 40 private final static String module = EditeViewPageUtil.class.getName(); 41 42 protected ModelManager modelManager; 43 44 45 public EditeViewPageUtil(ModelManager modelManager) { 46 this.modelManager = modelManager; 47 } 48 49 54 public ModelIF getModelForEdit(ActionMapping actionMapping, ModelForm modelForm, HttpServletRequest request) 55 throws Exception { 56 ModelIF model = null; 57 ModelHandler modelHandler = null; 58 try { 59 String formName = FormBeanUtil.getFormName(actionMapping); 60 modelHandler = modelManager.borrowtHandlerObject(formName); 61 62 ModelForm form = modelHandler.initForm(request); 63 if (form != null) { 64 form.setAction(ModelForm.EDIT_STR); 65 FormBeanUtil.saveActionForm(form, actionMapping, request); 66 } else { 67 form = modelForm; 68 } 69 Debug.logVerbose("[JdonFramework] got a ModelForm ... ", module); 70 71 Debug.logVerbose("[JdonFramework] prepare to fetch a Model from service layer", module); 72 model = fetchModel(request, formName, modelHandler); 73 Debug.logVerbose("[JdonFramework] got the Model data successfully..", module); 74 75 modelHandler.modelIFCopyToForm(model, form); 76 77 } catch (Exception ex) { 78 Debug.logError("[JdonFramework]please check your service � model or form, error is: " + ex, module); 79 } finally { 80 modelManager.returnHandlerObject(modelHandler); } 82 return model; 83 } 84 85 protected ModelIF fetchModel(HttpServletRequest request, String formName, ModelHandler modelHandler) throws Exception { 86 ModelIF model = null; 87 try { 88 Object keyValue = getParamKeyValue(request, modelHandler); 89 clearModelCache(formName, keyValue, modelHandler); 90 model = modelHandler.findModelIF(keyValue, request); 91 if (model == null) { 92 Debug.logError("[JdonFramework] Error: got a NULL Model..", module); 93 throw new Exception ("got a NULL Model"); 94 } else { 95 addModelCache(formName, keyValue, modelHandler, model); 96 } 97 } catch (Exception ex) { 98 Debug.logError("[JdonFramework] the method 'findModelByKey' of your handler or 'getMethod' of service happened error: " + ex, module); 99 throw new Exception (ex); 100 } 101 return model; 102 } 103 104 105 private void clearModelCache(String formName, Object keyValue, ModelHandler modelHandler) { 106 ModelIF model = null; 107 try { 108 ModelKey modelKey = new ModelKey(keyValue, formName); 109 model = modelManager.getCache(modelKey); 110 if (model != null) { modelManager.removeCache(keyValue); 112 } 113 } catch (Exception e) { 114 Debug.logError("[JdonFramework] clearModelCache error: " + e); 115 } 116 } 117 118 private void addModelCache(String formName, Object keyValue, ModelHandler modelHandler, ModelIF model) { 119 ModelKey modelKey = new ModelKey(keyValue, formName); 120 modelManager.addCache(modelKey, model); 121 } 122 123 136 public Object getParamKeyValue(HttpServletRequest request, ModelHandler modelHandler) { 137 138 Object keyValue = null; 139 try { 140 ModelMapping modelMapping = modelHandler.getModelMapping(); 141 String keyName = modelMapping.getKeyName(); 142 Debug.logVerbose("[JdonFramework] the keyName is " + keyName, module); 143 String keyValueS = request.getParameter(keyName); 144 Debug.logVerbose("[JdonFramework] got the keyValue is " + keyValueS, module); 145 if (keyValueS == null) { 146 Debug.logVerbose("[JdonFramework]the keyValue is null", module); 147 } 148 Class keyClassType = modelMapping.getKeyClassType(); 149 if (keyClassType.isAssignableFrom(String .class)) { 150 keyValue = keyValueS; 151 }else{ 152 Debug.logVerbose("[JdonFramework] convert String keyValue to" + keyClassType.getName(), module); 153 keyValue = ConvertUtils.convert(keyValueS, keyClassType); 154 } 155 } catch (Exception e) { 156 Debug.logError("[JdonFramework] getParamKeyValue error: " + e); 157 } 158 return keyValue; 159 } 160 161 } 162 | Popular Tags |