1 23 24 package org.dbforms.event.classic; 25 26 import org.apache.commons.logging.Log; 27 import org.apache.commons.logging.LogFactory; 28 29 import org.dbforms.config.*; 30 31 import org.dbforms.event.NavigationEvent; 32 33 import org.dbforms.util.*; 34 35 import java.io.UnsupportedEncodingException ; 36 37 import java.sql.*; 38 39 import javax.servlet.http.*; 40 41 42 43 52 public class GotoEvent extends NavigationEvent { 53 static Log logCat = LogFactory.getLog(GotoEvent.class.getName()); 55 private String childField; 56 private String parentField; 57 58 private String position; 60 private String tableList = null; 61 private String whereClause = null; 62 private Table srcTable; 63 64 79 public GotoEvent(String action, 80 HttpServletRequest request, 81 DbFormsConfig config) { 82 super(action, request, config); 83 84 String destTable = ParseUtil.getParameter(request, 85 "data" + action + "_destTable"); 86 87 if (destTable == null) { 88 setTable(null); 89 90 return; } 92 93 setTable(config.getTableByName(destTable)); 95 96 if (getTable() == null) { 97 setTable(config.getTable(Integer.parseInt(destTable))); 98 } 99 100 String psrcTable = ParseUtil.getParameter(request, 101 "data" + action + "_srcTable"); 102 103 if (psrcTable != null) { 104 this.srcTable = config.getTableByName(psrcTable); 105 106 if (this.srcTable == null) { 107 this.srcTable = config.getTable(Integer.parseInt(psrcTable)); 108 } 109 110 childField = ParseUtil.getParameter(request, 111 "data" + action + "_childField"); 112 parentField = ParseUtil.getParameter(request, 113 "data" + action + "_parentField"); 114 } 115 116 String destPos = ParseUtil.getParameter(request, 119 "data" + action + "_destPos"); 120 121 if (destPos != null) { 123 this.position = destPos; 124 } else { 125 String keyToDestPos = ParseUtil.getParameter(request, 126 "data" + action 127 + "_keyToDestPos"); 128 129 if (keyToDestPos != null) { 131 this.position = ParseUtil.getParameter(request, keyToDestPos); 132 } else { 133 String keyToKeyToDestPos = ParseUtil.getParameter(request, 134 "data" + action 135 + "_keyToKeyToDestPos"); 136 137 if (keyToKeyToDestPos != null) { 140 String widgetValue = ParseUtil.getParameter(request, 141 keyToKeyToDestPos); 143 this.position = ParseUtil.getParameter(request, 144 "k_" + widgetValue); } 146 } 147 } 148 149 logCat.info("--->pos=" + position); 150 } 151 152 153 163 public GotoEvent(Table table, 164 HttpServletRequest request, 165 DbFormsConfig config, 166 String position) { 167 super(table, request, config); 168 this.position = position; 169 } 170 171 172 183 public GotoEvent(Table table, 184 HttpServletRequest request, 185 DbFormsConfig config, 186 String whereClause, 187 String tableList) { 188 super(table, request, config); 189 this.whereClause = whereClause; 190 this.tableList = tableList; 191 } 192 193 214 public ResultSetVector processEvent(FieldValue[] childFieldValues, 215 FieldValue[] orderConstraint, 216 String sqlFilter, 217 FieldValue[] sqlFilterParams, 218 int count, 219 String firstPosition, 220 String lastPosition, 221 DbEventInterceptorData interceptorData) 222 throws SQLException { 223 if (Util.isNull(whereClause)) { 224 try { 225 position = Util.decode(position, getRequest().getCharacterEncoding()); 226 } catch (UnsupportedEncodingException e) { 227 logCat.error(e); 228 throw new SQLException(e.getMessage()); 229 } 230 231 int compMode = (!Util.isNull(position)) ? Constants.COMPARE_INCLUSIVE 233 : Constants.COMPARE_NONE; 234 235 if (!Util.isNull(position) 236 && (srcTable != null) 237 && !Util.isNull(childField) 238 && !Util.isNull(parentField)) { 239 FieldValues fv = getTable() 240 .mapChildFieldValues(srcTable, parentField, 241 childField, position); 242 243 if (fv != null) { 244 childFieldValues = fv.toArray(); 245 compMode = Constants.COMPARE_NONE; 246 } 247 } else if (!Util.isNull(position)) { 248 getTable() 249 .fillWithValues(orderConstraint, position); 250 } 251 252 logCat.info("gotopos = " + position); 253 254 return getTable() 255 .doConstrainedSelect(childFieldValues, orderConstraint, 256 sqlFilter, sqlFilterParams, compMode, 257 count, interceptorData); 258 } else { 259 return getTable() 261 .doFreeFormSelect(whereClause, 262 tableList, count, interceptorData); 263 } 264 } 265 } 266 | Popular Tags |