1 23 24 package org.dbforms.event.datalist; 25 26 import org.apache.commons.logging.Log; 27 import org.apache.commons.logging.LogFactory; 28 29 import org.dbforms.config.Constants; 30 import org.dbforms.config.DbEventInterceptor; 31 import org.dbforms.config.DbEventInterceptorData; 32 import org.dbforms.config.DbFormsConfig; 33 import org.dbforms.config.FieldValues; 34 import org.dbforms.config.GrantedPrivileges; 35 36 import org.dbforms.event.ValidationEvent; 37 import org.dbforms.event.datalist.dao.DataSourceFactory; 38 import org.dbforms.event.datalist.dao.DataSourceSessionList; 39 40 import org.dbforms.util.MessageResourcesInternal; 41 import org.dbforms.util.ParseUtil; 42 import org.dbforms.util.StringUtil; 43 import org.dbforms.util.Util; 44 45 import java.sql.Connection ; 46 import java.sql.SQLException ; 47 48 import javax.servlet.http.HttpServletRequest ; 49 50 51 52 58 public class UpdateEvent extends ValidationEvent { 59 private static Log logCat = LogFactory.getLog(UpdateEvent.class.getName()); 61 62 70 public UpdateEvent(Integer tableId, 71 String keyId, 72 HttpServletRequest request, 73 DbFormsConfig config) { 74 super(tableId.intValue(), keyId, request, config); 75 } 76 77 78 85 public UpdateEvent(String action, 86 HttpServletRequest request, 87 DbFormsConfig config) { 88 super(StringUtil.getEmbeddedStringAsInteger(action, 2, '_'), 89 StringUtil.getEmbeddedString(action, 3, '_'), request, config); 90 } 91 92 97 98 public FieldValues getFieldValues() { 100 String s = ParseUtil.getParameter(getRequest(), 101 Constants.FIELDNAME_OVERRIDEFIELDTEST 102 + getTable().getId()); 103 boolean flag = "true".equalsIgnoreCase(s); 104 105 return getFieldValues(flag); 106 } 107 108 109 117 public void processEvent(Connection con) throws SQLException { 118 if (!hasUserPrivileg(GrantedPrivileges.PRIVILEG_UPDATE)) { 120 String s = MessageResourcesInternal.getMessage("dbforms.events.update.nogrant", 121 getRequest().getLocale(), 122 new String [] { 123 getTable() 124 .getName() 125 }); 126 throw new SQLException (s); 127 } 128 129 String keyValuesStr = getKeyValues(); 132 133 if (Util.isNull(keyValuesStr)) { 134 logCat.error("::processEvent - at least one key is required per table, check your dbforms-config.xml"); 135 136 return; 137 } 138 139 FieldValues fieldValues = getFieldValues(); 142 143 if (fieldValues.size() == 0) { 144 logCat.info("no parameters to update found"); 145 146 return; 147 } 148 149 DbEventInterceptorData interceptorData = new DbEventInterceptorData(getRequest(), 150 getConfig(), con, getTable()); 151 interceptorData.setAttribute(DbEventInterceptorData.FIELDVALUES, fieldValues); 152 interceptorData.setAttribute(DbEventInterceptorData.KEYVALUES, keyValuesStr); 153 154 int operation = getTable() 156 .processInterceptors(DbEventInterceptor.PRE_UPDATE, 157 interceptorData); 158 159 if ((operation == DbEventInterceptor.GRANT_OPERATION) 160 && (fieldValues.size() > 0)) { 161 DataSourceSessionList ds = DataSourceSessionList.getInstance(getRequest()); 163 DataSourceFactory qry = ds.get(getTable(), getRequest()); 164 boolean own = false; 165 166 if (qry == null) { 167 qry = new DataSourceFactory((String )interceptorData.getAttribute(DbEventInterceptorData.CONNECTIONNAME), interceptorData.getConnection(), getTable()); 168 own = true; 169 } 170 171 qry.doUpdate(interceptorData, fieldValues, keyValuesStr); 172 173 if (own) { 174 qry.close(); 175 } else { 176 ds.remove(getTable(), getRequest()); 177 } 178 179 getTable() 182 .processInterceptors(DbEventInterceptor.POST_UPDATE, interceptorData); 183 } 184 185 } 187 } 188 | Popular Tags |