Ignore chains and states default directories.
[rhynodge.git] / src / main / java / net / pterodactylus / reactor / loader / Chain.java
index 91892a5..8c98e50 100644 (file)
 
 package net.pterodactylus.reactor.loader;
 
+import java.util.ArrayList;
 import java.util.List;
 
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.ElementList;
-import org.simpleframework.xml.Root;
+import com.fasterxml.jackson.annotation.JsonProperty;
 
 /**
  * Model for chain definitions.
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-@Root
 public class Chain {
 
        /**
@@ -39,11 +37,11 @@ public class Chain {
        public static class Parameter {
 
                /** The name of the parameter. */
-               @Element
+               @JsonProperty
                private String name;
 
                /** The value of the parameter. */
-               @Element
+               @JsonProperty
                private String value;
 
                /**
@@ -103,12 +101,12 @@ public class Chain {
        public static class Part {
 
                /** The class name of the part. */
-               @Element(name = "class")
+               @JsonProperty(value = "class")
                private String name;
 
                /** The parameters of the part. */
-               @ElementList(required = false, empty = false)
-               private List<Parameter> parameters;
+               @JsonProperty
+               private List<Parameter> parameters = new ArrayList<Parameter>();
 
                /**
                 * Returns the name of the part’s class.
@@ -167,27 +165,31 @@ public class Chain {
        }
 
        /** Whether this chain is enabled. */
-       @Element
+       @JsonProperty
        private boolean enabled;
 
+       /** The name of the chain. */
+       @JsonProperty
+       private String name;
+
        /** The query of the chain. */
-       @Element
+       @JsonProperty
        private Part query;
 
        /** The filters of the chain. */
-       @ElementList(required = false, empty = false)
-       private List<Part> filters;
+       @JsonProperty
+       private List<Part> filters = new ArrayList<Part>();
 
        /** The trigger of the chain. */
-       @Element
+       @JsonProperty
        private Part trigger;
 
        /** The action of the chain. */
-       @Element
+       @JsonProperty
        private Part action;
 
        /** Interval between updates (in seconds). */
-       @Element
+       @JsonProperty
        private int updateInterval;
 
        /**
@@ -200,6 +202,15 @@ public class Chain {
        }
 
        /**
+        * Returns the name of the chain.
+        *
+        * @return The name of the chain
+        */
+       public String name() {
+               return name;
+       }
+
+       /**
         * Returns the query of this chain.
         *
         * @return The query of this chain
@@ -254,6 +265,7 @@ public class Chain {
        @Override
        public int hashCode() {
                int hashCode = 0;
+               hashCode ^= name.hashCode();
                hashCode ^= query.hashCode();
                for (Part filter : filters) {
                        hashCode ^= filter.hashCode();
@@ -273,6 +285,9 @@ public class Chain {
                        return false;
                }
                Chain chain = (Chain) object;
+               if (!name.equals(chain.name)) {
+                       return false;
+               }
                if (!query.equals(chain.query)) {
                        return false;
                }