20 package net.sf.gridarta.model.filter;
22 import java.util.Collection;
23 import java.util.LinkedHashMap;
25 import java.util.Map.Entry;
26 import java.util.concurrent.CopyOnWriteArrayList;
29 import org.apache.log4j.Category;
30 import org.apache.log4j.Logger;
31 import org.jetbrains.annotations.NotNull;
60 private final Collection<NamedFilterListener>
listenerList =
new CopyOnWriteArrayList<>();
66 public NamedFilter(@NotNull
final Iterable<NamedGameObjectMatcher> matchers) {
78 for (
final String name :
subFilters.keySet()) {
79 config.setSubFilterEnabled(name,
false);
86 if (
LOG.isDebugEnabled()) {
87 LOG.debug(
"match called on " + gameObject.getArchetype().getArchetypeName());
89 for (
final String name :
subFilters.keySet()) {
90 if (
LOG.isDebugEnabled()) {
91 LOG.debug(
"checking if filter " + name +
" is enabled()");
93 if (config.isSubFilterEnabled(name)) {
94 if (
LOG.isDebugEnabled()) {
95 LOG.debug(
"enabled!");
97 if (config.getConfig(name).match(gameObject)) {
98 if (
LOG.isDebugEnabled()) {
99 LOG.debug(
"and matched!");
101 return !config.isInverted();
105 if (
LOG.isDebugEnabled()) {
106 LOG.debug(
"finished scanning sub filters");
108 return config.isInverted();
109 }
catch (
final Exception e) {
117 boolean didMatch =
false;
118 for (
final String name :
subFilters.keySet()) {
120 if (filterConfig.
reset()) {
124 return didMatch ^ config.isInverted();
125 }
catch (
final Exception e) {
166 if (filter ==
null) {
181 listener.nameFilterChanged(type, filterName, filter);
208 reset(filterOutConfig);
210 match(filterOutConfig, gameObject);
211 return !
reset(filterOutConfig);
214 return !
match(filterOutConfig, gameObject);