1 24 package org.ofbiz.widget.html; 25 26 import java.io.IOException ; 27 import java.util.HashMap ; 28 import java.util.Map ; 29 import javax.servlet.ServletContext ; 30 import javax.servlet.http.HttpServletRequest ; 31 import javax.servlet.http.HttpServletResponse ; 32 import javax.servlet.http.HttpSession ; 33 import javax.xml.parsers.ParserConfigurationException ; 34 35 import org.ofbiz.base.util.Debug; 36 import org.ofbiz.base.util.UtilHttp; 37 import org.ofbiz.base.util.UtilValidate; 38 import org.ofbiz.widget.menu.MenuFactory; 39 import org.ofbiz.widget.menu.MenuStringRenderer; 40 import org.ofbiz.widget.menu.ModelMenu; 41 import org.ofbiz.entity.GenericValue; 42 43 import org.xml.sax.SAXException ; 44 45 46 53 public class HtmlMenuWrapper { 54 55 public static final String module = HtmlMenuWrapper.class.getName(); 56 57 protected String resourceName; 58 protected String menuName; 59 protected HttpServletRequest request; 60 protected HttpServletResponse response; 61 protected ModelMenu modelMenu; 62 protected MenuStringRenderer renderer; 63 protected Map context; 64 65 protected HtmlMenuWrapper() {} 66 67 public HtmlMenuWrapper(String resourceName, String menuName, HttpServletRequest request, HttpServletResponse response) 68 throws IOException , SAXException , ParserConfigurationException { 69 init(resourceName, menuName, request, response); 70 } 71 72 public void init(String resourceName, String menuName, HttpServletRequest request, HttpServletResponse response) 73 throws IOException , SAXException , ParserConfigurationException { 74 this.resourceName = resourceName; 75 this.menuName = menuName; 76 this.request = request; 77 this.response = response; 78 79 this.modelMenu = MenuFactory.getMenuFromWebappContext(resourceName, menuName, request); 80 81 this.renderer = getMenuRenderer(); 82 83 this.context = new HashMap (); 84 Map parameterMap = UtilHttp.getParameterMap(request); 85 context.put("parameters", parameterMap); 86 87 HttpSession session = request.getSession(); 88 GenericValue userLogin = (GenericValue)session.getAttribute("userLogin"); 89 context.put("userLogin", userLogin); 90 91 context.put("locale", UtilHttp.getLocale(request)); 93 94 if (UtilValidate.isNotEmpty((String ) request.getAttribute("_ERROR_MESSAGE_"))) { 96 context.put("isError", Boolean.TRUE); 97 } else { 98 context.put("isError", Boolean.FALSE); 99 } 100 101 if ("true".equals((String ) parameterMap.get("isError"))) { 103 context.put("isError", Boolean.TRUE); 104 } 105 } 106 107 public MenuStringRenderer getMenuRenderer() { 108 return new HtmlMenuRenderer(request, response); 109 } 110 111 public String renderMenuString() { 112 HttpServletRequest req = ((HtmlMenuRenderer)renderer).request; 113 ServletContext ctx = (ServletContext ) req.getAttribute("servletContext"); 114 if (ctx == null) { 115 if (Debug.infoOn()) Debug.logInfo("in renderMenuString, ctx is null(0)" , ""); 116 } 117 118 StringBuffer buffer = new StringBuffer (); 119 modelMenu.renderMenuString(buffer, context, renderer); 120 121 HttpServletRequest req2 = ((HtmlMenuRenderer)renderer).request; 122 ServletContext ctx2 = (ServletContext ) req2.getAttribute("servletContext"); 123 if (ctx2 == null) { 124 if (Debug.infoOn()) Debug.logInfo("in renderMenuString, ctx is null(2)" , ""); 125 } 126 127 return buffer.toString(); 128 } 129 130 137 public void setIsError(boolean isError) { 138 this.context.put("isError", new Boolean (isError)); 139 } 140 141 public boolean getIsError() { 142 Boolean isErrorBoolean = (Boolean ) this.context.get("isError"); 143 if (isErrorBoolean == null) { 144 return false; 145 } else { 146 return isErrorBoolean.booleanValue(); 147 } 148 } 149 150 public void setMenuOverrideName(String menuName) { 151 this.context.put("menuName", menuName); 152 } 153 154 public void putInContext(String name, Object value) { 155 this.context.put(name, value); 156 } 157 158 public void putInContext(String menuItemName, String valueName, Object value) { 159 Map valueMap = (Map )context.get(menuItemName); 160 if (valueMap == null) { 161 valueMap = new HashMap (); 162 context.put(menuItemName, valueMap); 163 } 164 valueMap.put(valueName, value); 165 } 166 167 public Object getFromContext(String name) { 168 return this.context.get(name); 169 } 170 171 public Object getFromContext(String menuItemName, String valueName) { 172 Map valueMap = (Map )context.get(menuItemName); 173 if (valueMap == null) { 174 valueMap = new HashMap (); 175 context.put(menuItemName, valueMap); 176 } 177 return valueMap.get(valueName); 178 } 179 180 public ModelMenu getModelMenu() { 181 return modelMenu; 182 } 183 184 public MenuStringRenderer getRenderer() { 185 return renderer; 186 } 187 188 public void setRenderer(MenuStringRenderer renderer) { 189 this.renderer = renderer; 190 } 191 192 public void setRequest(HttpServletRequest request) { 193 this.request = request; 194 ((HtmlMenuRenderer)renderer).setRequest( request ); 195 } 196 197 public void setResponse(HttpServletResponse response) { 198 this.response = response; 199 ((HtmlMenuRenderer)renderer).setResponse( response ); 200 } 201 202 public HttpServletRequest getRequest() { 203 return ((HtmlMenuRenderer)renderer).request; 204 } 205 206 public HttpServletResponse getResponse() { 207 return ((HtmlMenuRenderer)renderer).response; 208 } 209 210 public static HtmlMenuWrapper getMenuWrapper(HttpServletRequest request, HttpServletResponse response, HttpSession session, String menuDefFile, String menuName, String menuWrapperClassName ) { 211 212 HtmlMenuWrapper menuWrapper = null; 213 214 String menuSig = menuDefFile + "__" + menuName; 215 if (session != null) { 216 menuWrapper = (HtmlMenuWrapper)session.getAttribute(menuSig); 217 } 218 219 if (menuWrapper == null) { 220 try { 221 Class cls = Class.forName("org.ofbiz.widget.html." + menuWrapperClassName); 222 menuWrapper = (HtmlMenuWrapper)cls.newInstance(); 223 menuWrapper.init(menuDefFile, menuName, request, response); 224 } catch(InstantiationException e) { 225 throw new RuntimeException (e.getMessage()); 226 } catch(IllegalAccessException e2) { 227 throw new RuntimeException (e2.getMessage()); 228 } catch(ClassNotFoundException e3) { 229 throw new RuntimeException ("Class not found:" + e3.getMessage()); 230 } catch(IOException e4) { 231 throw new RuntimeException (e4.getMessage()); 232 } catch(SAXException e5) { 233 throw new RuntimeException (e5.getMessage()); 234 } catch(ParserConfigurationException e6) { 235 throw new RuntimeException (e6.getMessage()); 236 } 237 } else { 238 menuWrapper.setRequest(request); 239 menuWrapper.setResponse(response); 240 Map parameterMap = UtilHttp.getParameterMap(request); 241 menuWrapper.setParameters( parameterMap); 242 243 GenericValue userLogin = (GenericValue)session.getAttribute("userLogin"); 244 menuWrapper.putInContext("userLogin", userLogin); 245 246 } 247 248 if (session != null) { 249 session.setAttribute(menuSig, menuWrapper); 250 } 251 return menuWrapper; 252 } 253 254 public void setParameters(Map paramMap) { 255 context.put("parameters", paramMap); 256 } 257 258 } 259 | Popular Tags |