1 25 package org.ofbiz.entityext.eca; 26 27 import java.util.Iterator ; 28 import java.util.List ; 29 import java.util.Map ; 30 import java.util.Set ; 31 import java.util.TreeSet ; 32 33 import org.ofbiz.base.util.Debug; 34 import org.ofbiz.entity.GenericDelegator; 35 import org.ofbiz.entity.GenericEntity; 36 import org.ofbiz.entity.GenericEntityException; 37 import org.ofbiz.entity.eca.EntityEcaHandler; 38 import org.ofbiz.entityext.EntityServiceFactory; 39 import org.ofbiz.service.DispatchContext; 40 41 49 public class DelegatorEcaHandler implements EntityEcaHandler { 50 51 public static final String module = DelegatorEcaHandler.class.getName(); 52 53 protected GenericDelegator delegator = null; 54 protected String delegatorName = null; 55 protected String entityEcaReaderName = null; 56 protected DispatchContext dctx = null; 57 58 public DelegatorEcaHandler() { } 59 60 public void setDelegator(GenericDelegator delegator) { 61 this.delegator = delegator; 62 this.delegatorName = delegator.getDelegatorName(); 63 this.entityEcaReaderName = EntityEcaUtil.getEntityEcaReaderName(this.delegatorName); 64 this.dctx = EntityServiceFactory.getDispatchContext(delegator); 65 66 EntityEcaUtil.getEntityEcaCache(this.entityEcaReaderName); 68 } 69 70 public Map getEntityEventMap(String entityName) { 71 Map ecaCache = EntityEcaUtil.getEntityEcaCache(this.entityEcaReaderName); 72 if (ecaCache == null) return null; 73 return (Map ) ecaCache.get(entityName); 74 } 75 76 public void evalRules(String currentOperation, Map eventMap, String event, GenericEntity value, boolean isError) throws GenericEntityException { 77 if (eventMap == null) eventMap = this.getEntityEventMap(value.getEntityName()); 79 if (eventMap == null || eventMap.size() == 0) { 80 return; 82 } 83 84 List rules = (List ) eventMap.get(event); 85 87 if (rules == null || rules.size() == 0) { 88 return; 89 } 90 91 Iterator i = rules.iterator(); 92 if (i.hasNext() && Debug.verboseOn()) Debug.logVerbose("Running ECA (" + event + ").", module); 93 Set actionsRun = new TreeSet (); 94 while (i.hasNext()) { 95 EntityEcaRule eca = (EntityEcaRule) i.next(); 96 eca.eval(currentOperation, this.dctx, value, isError, actionsRun); 97 } 98 } 99 } 100 | Popular Tags |