Format printed channels nicely.
[xudocci.git] / src / main / java / net / pterodactylus / xdcc / data / Channel.java
index 59be331..f4c8d01 100644 (file)
 
 package net.pterodactylus.xdcc.data;
 
+import static java.lang.String.format;
+
+import com.google.common.base.Function;
+
 /**
  * Defines a channel in a {@link Network}.
  *
@@ -24,6 +28,14 @@ package net.pterodactylus.xdcc.data;
  */
 public class Channel {
 
+       /** Function to convert a channel to its network. */
+       public static final Function<Channel, Network> TO_NETWORK = new Function<Channel, Network>() {
+               @Override
+               public Network apply(Channel channel) {
+                       return channel.network();
+               }
+       };
+
        /** The network this channel belongs to. */
        private final Network network;
 
@@ -65,4 +77,33 @@ public class Channel {
                return name;
        }
 
+       //
+       // OBJECT METHODS
+       //
+
+       @Override
+       public boolean equals(Object object) {
+               if (!(object instanceof Channel)) {
+                       return false;
+               }
+               Channel channel = (Channel) object;
+               if (!network().equals(channel.network())) {
+                       return false;
+               }
+               if (!name().equalsIgnoreCase(channel.name())) {
+                       return false;
+               }
+               return true;
+       }
+
+       @Override
+       public int hashCode() {
+               return network().hashCode() ^ name().hashCode();
+       }
+
+       @Override
+       public String toString() {
+               return format("%s/%s", name(), network().name());
+       }
+
 }