opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineFactory.java
package org.smartregister.anc.library.helper;
import android.content.Context;
import com.vijay.jsonwizard.rules.RuleConstant;
import com.vijay.jsonwizard.rules.RulesEngineFactory;
import org.jeasy.rules.api.Facts;
import org.jeasy.rules.api.Rule;
import org.json.JSONObject;
import java.util.Map;
public class AncRulesEngineFactory extends RulesEngineFactory {
private Map<String, String> globalValues;
private AncRulesEngineHelper ancRulesEngineHelper;
private String selectedRuleName;
public AncRulesEngineFactory(Context context, Map<String, String> globalValues, JSONObject mJSONObject) {
super(context, globalValues);
this.ancRulesEngineHelper = new AncRulesEngineHelper(context);
this.ancRulesEngineHelper.setJsonObject(mJSONObject);
this.globalValues = globalValues;
}
@Override
protected Facts initializeFacts(Facts facts) {
if (globalValues != null) {
for (Map.Entry<String, String> entry : globalValues.entrySet()) {
facts.put(RuleConstant.PREFIX.GLOBAL + entry.getKey(), getValue(entry.getValue()));
}
facts.asMap().putAll(globalValues);
}
selectedRuleName = facts.get(RuleConstant.SELECTED_RULE);
facts.put("helper", ancRulesEngineHelper);
return facts;
}
@Override
public boolean beforeEvaluate(Rule rule, Facts facts) {
return selectedRuleName != null && selectedRuleName.equals(rule.getName());
}
}