X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Frhynodge%2Floader%2FChain.java;h=ab81754c3d31485b85cf7e07e07719a6226c0148;hb=c3d1babcce7f077c2b57376fa7f9712b921950d8;hp=8fc6c35aeb0eacfcfff249ec2b75b066644731d6;hpb=6f69aff66ba5617d0bb27874014b4274bc551ab8;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/rhynodge/loader/Chain.java b/src/main/java/net/pterodactylus/rhynodge/loader/Chain.java index 8fc6c35..ab81754 100644 --- a/src/main/java/net/pterodactylus/rhynodge/loader/Chain.java +++ b/src/main/java/net/pterodactylus/rhynodge/loader/Chain.java @@ -85,10 +85,7 @@ public class Chain { if (!name.equals(parameter.name)) { return false; } - if (!value.equals(parameter.value)) { - return false; - } - return true; + return value.equals(parameter.value); } } @@ -184,6 +181,10 @@ public class Chain { @JsonProperty private Part trigger; + /** A combination of query, filters, and a trigger. */ + @JsonProperty + private Part watcher; + /** The action of the chain. */ @JsonProperty private Part action; @@ -238,6 +239,15 @@ public class Chain { } /** + * Returns an optional watcher. + * + * @return The watcher of this chain + */ + public Part watcher() { + return watcher; + } + + /** * Returns the action of this chain. * * @return The action of this chain @@ -266,11 +276,15 @@ public class Chain { public int hashCode() { int hashCode = 0; hashCode ^= name.hashCode(); - hashCode ^= query.hashCode(); - for (Part filter : filters) { - hashCode ^= filter.hashCode(); + if (watcher != null) { + hashCode ^= watcher.hashCode(); + } else { + hashCode ^= query.hashCode(); + for (Part filter : filters) { + hashCode ^= filter.hashCode(); + } + hashCode ^= trigger.hashCode(); } - hashCode ^= trigger.hashCode(); hashCode ^= action.hashCode(); hashCode ^= updateInterval; return hashCode; @@ -288,27 +302,30 @@ public class Chain { if (!name.equals(chain.name)) { return false; } - if (!query.equals(chain.query)) { - return false; - } - if (filters.size() != chain.filters.size()) { - return false; - } - for (int filterIndex = 0; filterIndex < filters.size(); ++filterIndex) { - if (!filters.get(filterIndex).equals(chain.filters.get(filterIndex))) { + if (watcher != null) { + if (!watcher.equals(chain.watcher)) { + return false; + } + } else { + if (!query.equals(chain.query)) { + return false; + } + if (filters.size() != chain.filters.size()) { + return false; + } + for (int filterIndex = 0; filterIndex < filters.size(); ++filterIndex) { + if (!filters.get(filterIndex).equals(chain.filters.get(filterIndex))) { + return false; + } + } + if (!trigger.equals(chain.trigger)) { return false; } - } - if (!trigger.equals(chain.trigger)) { - return false; } if (!action.equals(chain.action)) { return false; } - if (updateInterval != chain.updateInterval) { - return false; - } - return true; + return updateInterval == chain.updateInterval; } }