equality based on the ids of the contents of SingleRouterConfig.
[xmlrouter] / impl / src / main / java / org / wamblee / xmlrouter / impl / SingleRouterConfig.java
index b069215b102731099ee88f6a22384af64a5ac886..8eab34b708996198b73c4cbfd271462937ff1119 100644 (file)
@@ -22,6 +22,8 @@ import org.wamblee.xmlrouter.config.Filter;
 import org.wamblee.xmlrouter.config.RouterConfig;
 import org.wamblee.xmlrouter.config.Transformation;
 
+// TODO implement copying of routerconfig. 
+
 /**
  * Represents a single configuration set of a single configuration client of the
  * XML router.
@@ -30,6 +32,7 @@ import org.wamblee.xmlrouter.config.Transformation;
  */
 public class SingleRouterConfig implements ExtendedRouterConfig {
     private Id<RouterConfig> id;
+
     private ExtendedConfig<DocumentType> documentTypes;
     private ExtendedConfig<Transformation> transformations;
     private ExtendedConfig<Filter> filters;
@@ -37,27 +40,28 @@ public class SingleRouterConfig implements ExtendedRouterConfig {
     /**
      * Constructs a router configuration.
      * 
-     * @param aSequenceNumberGenerator
-     *            Sequence number generator to use.
+     * @param aId
+     *            Unique id for this configuration.
      */
     public SingleRouterConfig(Id<RouterConfig> aId) {
         id = aId;
         documentTypes = new ConfigImpl<DocumentType>(new Id<Config>(
-            "documentTypes")) {
+            aId.getId() + ".documenttypes")) {
             @Override
             public DocumentType wrap(String aPrefix, DocumentType aT) {
                 return new RobustDocumentType(aPrefix, aT);
             }
         };
         transformations = new ConfigImpl<Transformation>(new Id<Config>(
-            "transformations")) {
+            aId.getId() + ".transformations")) {
             @Override
             public Transformation wrap(String aPrefix,
                 Transformation aTransformation) {
                 return new RobustTransformation(aPrefix, aTransformation);
             }
         };
-        filters = new ConfigImpl<Filter>(new Id<Config>("filters")) {
+        filters = new ConfigImpl<Filter>(new Id<Config>(aId.getId() +
+            ".filters")) {
             @Override
             public Filter wrap(String aPrefix, Filter aFilter) {
                 return new RobustFilter(aPrefix, aFilter);
@@ -65,7 +69,6 @@ public class SingleRouterConfig implements ExtendedRouterConfig {
         };
     }
 
-    // TODO test getId.
     @Override
     public Id<RouterConfig> getId() {
         return id;
@@ -85,4 +88,25 @@ public class SingleRouterConfig implements ExtendedRouterConfig {
     public Config<Filter> filterConfig() {
         return filters;
     }
+
+    @Override
+    public boolean equals(Object aObj) {
+        if (aObj == null) {
+            return false;
+        }
+        if (!(aObj instanceof SingleRouterConfig)) {
+            return false;
+        }
+        SingleRouterConfig obj = (SingleRouterConfig) aObj;
+
+        return documentTypes.equals(obj.documentTypes) &&
+            transformations.equals(obj.transformations) &&
+            filters.equals(obj.filters);
+    }
+
+    @Override
+    public int hashCode() {
+        return documentTypes.hashCode() + transformations.hashCode() +
+            filters.hashCode();
+    }
 }