package org.jpos.jposext.isomsgaction.service.support; import java.util.Map; import org.jpos.iso.ISOException; import org.jpos.iso.ISOMsg; import org.jpos.jposext.isomsgaction.factory.service.ICustomCondition; import org.jpos.jposext.isomsgaction.service.IISOMsgAction; /** * If action using a custom condition * * @author dgrandemange * */ public class ISOMsgActionIfCustomCondition extends ISOMsgAbstractIfAction { private String customConditionClazzName; private ICustomCondition customCondition; public ISOMsgActionIfCustomCondition() { super(); } /* (non-Javadoc) * @see org.jpos.jposext.isomsgaction.service.support.ISOMsgAbstractIfAction#process(org.jpos.iso.ISOMsg[], java.util.Map) */ public void process(ISOMsg[] msg, Map<String, Object> ctx) throws ISOException { boolean conditionFulfilled = customCondition.isConditionFulfilled(msg, ctx); if (isApplyNotOperator() ? (!conditionFulfilled) : conditionFulfilled) { for (IISOMsgAction child : getChilds()) { child.process(msg, ctx); } } else { if (null != getElseAction()) { getElseAction().process(msg, ctx); } } } public String getCustomConditionClazzName() { return customConditionClazzName; } public void setCustomConditionClazzName(String customConditionClazzName) { this.customConditionClazzName = customConditionClazzName; } /** * @return the customCondition */ public ICustomCondition getCustomCondition() { return customCondition; } /** * @param customCondition the customCondition to set */ public void setCustomCondition(ICustomCondition customCondition) { this.customCondition = customCondition; } /* (non-Javadoc) * @see org.jpos.jposext.isomsgaction.service.IFulfillCondition#isConditionFulfilled(org.jpos.iso.ISOMsg, int) */ public boolean isConditionFulfilled(ISOMsg msg, int id) { throw new RuntimeException("Shouldn't be invoked here !"); } }