1 18 package org.apache.beehive.netui.databinding.datagrid.api; 19 20 import java.util.HashMap ; 21 import javax.servlet.jsp.PageContext ; 22 import javax.servlet.jsp.JspContext ; 23 import javax.servlet.ServletRequest ; 24 25 import org.apache.beehive.netui.util.Bundle; 26 27 42 public final class DataGridStateFactory { 43 44 private static final String KEY = DataGridStateFactory.class.getName() + "REQUEST_KEY"; 45 private static final DataGridConfig DEFAULT_DATA_GRID_CONFIG = DataGridConfigFactory.getInstance(); 46 47 53 public static final DataGridStateFactory getInstance(JspContext jspContext) { 54 assert jspContext instanceof PageContext ; 55 return getInstance(((PageContext )jspContext).getRequest()); 56 } 57 58 64 public static final DataGridStateFactory getInstance(ServletRequest request) { 65 Object obj = request.getAttribute(KEY); 66 if(obj != null) { 67 assert obj instanceof DataGridStateFactory; 68 return (DataGridStateFactory)obj; 69 } 70 else { 71 DataGridStateFactory factory = new DataGridStateFactory(request); 72 request.setAttribute(KEY, factory); 73 return factory; 74 } 75 } 76 77 private final ServletRequest _request; 78 private final HashMap _cache; 79 80 private DataGridStateFactory(ServletRequest request) { 81 _request = request; 82 _cache = new HashMap (); 83 } 84 85 99 public final DataGridState getDataGridState(String name) { 100 return getDataGridState(name, DEFAULT_DATA_GRID_CONFIG); 101 } 102 103 114 public final DataGridState getDataGridState(String name, DataGridConfig config) { 115 if(config == null) 116 throw new IllegalArgumentException (Bundle.getErrorString("DataGridStateFactory_nullDataGridConfig")); 117 118 DataGridStateCodec codec = lookupCodec(name, config); 119 DataGridState state = codec.getDataGridState(); 120 return state; 121 } 122 123 137 public final DataGridURLBuilder getDataGridURLBuilder(String name) { 138 return getDataGridURLBuilder(name, DEFAULT_DATA_GRID_CONFIG); 139 } 140 141 152 public final DataGridURLBuilder getDataGridURLBuilder(String name, DataGridConfig config) { 153 if(config == null) 154 throw new IllegalArgumentException (Bundle.getErrorString("DataGridStateFactory_nullDataGridConfig")); 155 156 DataGridStateCodec codec = lookupCodec(name, config); 157 DataGridURLBuilder builder = codec.getDataGridURLBuilder(); 158 return builder; 159 } 160 161 171 public final void attachDataGridState(String name, DataGridState state) { 172 DataGridStateCodec codec = lookupCodec(name, DEFAULT_DATA_GRID_CONFIG); 173 codec.setDataGridState(state); 174 } 175 176 private final DataGridStateCodec lookupCodec(String name, DataGridConfig config) { 177 DataGridStateCodec codec = null; 178 if(_cache.containsKey(name)) 179 codec = (DataGridStateCodec)_cache.get(name); 180 else { 181 assert config != null; 182 codec = config.createStateCodec(_request, name); 183 _cache.put(name, codec); 184 } 185 186 return codec; 187 } 188 } 189 | Popular Tags |