/** * */ protected List<EventType> convertEventTypes(String name, Collection<EventType> evs, BDIModel bdimodel) { List<EventType> events = new ArrayList<EventType>(); for(EventType event: evs) { String[] types = event.getTypes().clone(); String mapped = name+BDIAgentInterpreter.CAPABILITY_SEPARATOR+types[types.length-1]; types[types.length-1] = bdimodel.getBeliefMappings().containsKey(mapped) ? bdimodel.getBeliefMappings().get(mapped) : mapped; events.add(new EventType(types)); } return events; }
/** * */ protected static List<EventType> convertEventTypes(String capa, Collection<EventType> evs, IBDIModel bdimodel) { List<EventType> ret = null; if(evs!=null) { ret = new ArrayList<EventType>(); for(EventType event: evs) { String[] types = event.getTypes().clone(); int exchange = (types[0].startsWith("value") || types[0].startsWith("parameter")) ? types.length-2 : types.length-1; String mapped = capa!=null ? capa+MElement.CAPABILITY_SEPARATOR+types[exchange] : types[exchange]; types[exchange] = bdimodel.getCapability().getBeliefReferences().containsKey(mapped) ? bdimodel.getCapability().getBeliefReferences().get(mapped) : mapped; ret.add(new EventType(types)); } } return ret==null || ret.isEmpty() ? null : ret; }
/** * Add a rule for event at a level. * @param type The event type. * @param rule The rule. * @param i The level. */ protected void addRule(EventType type, IRule<?> rule, int i) { if(type==null) throw new IllegalArgumentException("Type must not null"); String[] subtypes = type.getTypes(); if(i+1==subtypes.length) { addRule(subtypes[i], rule); } else { MatcherNode node = getOrCreateMatcherNode(subtypes[i]); node.addRule(type, rule, i+1); } }
/** * Get the rules for an event type at level i. * @param type The event type. * @param i The level. */ protected void getRules(EventType type, int i, List<IRule<?>> ret) { String[] subtypes = type.getTypes(); if(i+1==subtypes.length) { List<IRule<?>> tmp = internalGetRules(subtypes[i]); if(tmp!=null) ret.addAll(tmp); } else { MatcherNode node = getChild(subtypes[i]); if(node!=null) node.getRules(type, i+1, ret); } List<IRule<?>> tmp = internalGetRules("*"); if(tmp!=null) ret.addAll(tmp); }
/** * Remove a rule for event from a level. * @param type The event type. * @param rule The rule. * @param i The level. */ protected void removeRule(EventType type, IRule<?> rule, int i) { String[] subtypes = type.getTypes(); if(i+1==subtypes.length) { removeRule(subtypes[i], rule); } else { MatcherNode node = getOrCreateMatcherNode(subtypes[i]); node.removeRule(type, rule, i+1); } }