peer review for 11559, 11560 - refactor MRule.getModelValidatorLoginRules to avoid double array management

FR: [ 2214883 ] Remove SQL code and Replace for Query
Link to SF Tracker: http://sourceforge.net/support/tracker.php?aid=2214883
This commit is contained in:
Carlos Ruiz 2010-03-04 00:24:46 +00:00
parent 21f04ba76f
commit fe13d23bb0
3 changed files with 8 additions and 13 deletions

View File

@ -17,21 +17,17 @@
*****************************************************************************/ *****************************************************************************/
package org.compiere.model; package org.compiere.model;
import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Properties; import java.util.Properties;
import java.util.logging.Level;
import javax.script.ScriptEngine; import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager; import javax.script.ScriptEngineManager;
import org.compiere.util.CCache; import org.compiere.util.CCache;
import org.compiere.util.CLogger; import org.compiere.util.CLogger;
import org.compiere.util.DB;
import org.compiere.util.Msg; import org.compiere.util.Msg;
import org.compiere.util.Util; import org.compiere.util.Util;
@ -45,7 +41,8 @@ public class MRule extends X_AD_Rule
/** /**
* *
*/ */
private static final long serialVersionUID = 343261652226641676L; private static final long serialVersionUID = -9166262780531877045L;
//global or login context variable prefix //global or login context variable prefix
public final static String GLOBAL_CONTEXT_PREFIX = "G_"; public final static String GLOBAL_CONTEXT_PREFIX = "G_";
//window context variable prefix //window context variable prefix
@ -85,7 +82,7 @@ public class MRule extends X_AD_Rule
{ {
if (ruleValue == null) if (ruleValue == null)
return null; return null;
Iterator it = s_cache.values().iterator(); Iterator<MRule> it = s_cache.values().iterator();
while (it.hasNext()) while (it.hasNext())
{ {
MRule retValue = (MRule)it.next(); MRule retValue = (MRule)it.next();
@ -112,15 +109,13 @@ public class MRule extends X_AD_Rule
* @param ctx context * @param ctx context
* @return Rule * @return Rule
*/ */
public static ArrayList<MRule> getModelValidatorLoginRules (Properties ctx) public static List<MRule> getModelValidatorLoginRules (Properties ctx)
{ {
final String whereClause = "EventType=?"; final String whereClause = "EventType=?";
List<MRule>list = new Query(ctx,I_AD_Rule.Table_Name,whereClause,null) List<MRule> rules = new Query(ctx,I_AD_Rule.Table_Name,whereClause,null)
.setParameters(EVENTTYPE_ModelValidatorLoginEvent) .setParameters(EVENTTYPE_ModelValidatorLoginEvent)
.setOnlyActiveRecords(true) .setOnlyActiveRecords(true)
.list(); .list();
ArrayList<MRule> rules = new ArrayList<MRule>();
rules.addAll(list);
if (rules != null && rules.size() > 0) if (rules != null && rules.size() > 0)
return rules; return rules;
else else

View File

@ -215,7 +215,7 @@ public class ModelValidationEngine
} }
// now process the script model validator login // now process the script model validator login
ArrayList<MRule> loginRules = MRule.getModelValidatorLoginRules (Env.getCtx()); List<MRule> loginRules = MRule.getModelValidatorLoginRules (Env.getCtx());
if (loginRules != null) { if (loginRules != null) {
for (MRule loginRule : loginRules) { for (MRule loginRule : loginRules) {
// currently just JSR 223 supported // currently just JSR 223 supported

View File

@ -13,7 +13,7 @@
*****************************************************************************/ *****************************************************************************/
package test.functional; package test.functional;
import java.util.ArrayList; import java.util.List;
import org.compiere.model.MRule; import org.compiere.model.MRule;
import org.compiere.util.Env; import org.compiere.util.Env;
@ -38,7 +38,7 @@ public class MRuleTest extends AdempiereTestCase
{ {
MRule getrule = MRule.get(getCtx(), "beanshell:getAvailable"); MRule getrule = MRule.get(getCtx(), "beanshell:getAvailable");
assertTrue("BeanRule must be exact", getrule.getAD_Rule_ID()==1000000); assertTrue("BeanRule must be exact", getrule.getAD_Rule_ID()==1000000);
ArrayList<MRule> rules = MRule.getModelValidatorLoginRules(getCtx()); List<MRule> rules = MRule.getModelValidatorLoginRules(getCtx());
assertTrue("Rules has array", rules.size() > 0); //red1 set in DB Rule.EventType = L before testing assertTrue("Rules has array", rules.size() > 0); //red1 set in DB Rule.EventType = L before testing
} }