X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fnotify%2FListNotification.java;h=6447990975beec379f04fb1e79e630fe40699268;hb=c4eb31ab64627adfdeed2a445d67883371203e99;hp=c66d376f4836cad76d08f4d8b6878d16a612849d;hpb=58eeba9b521b0a0094ac90a37fd88811c6a27376;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/notify/ListNotification.java b/src/main/java/net/pterodactylus/sone/notify/ListNotification.java index c66d376..6447990 100644 --- a/src/main/java/net/pterodactylus/sone/notify/ListNotification.java +++ b/src/main/java/net/pterodactylus/sone/notify/ListNotification.java @@ -1,5 +1,5 @@ /* - * Sone - ListNotification.java - Copyright © 2010 David Roden + * Sone - ListNotification.java - Copyright © 2010–2013 David Roden * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -101,7 +101,8 @@ public class ListNotification extends TemplateNotification { } /** - * Sets the elements to show in this notification. + * Sets the elements to show in this notification. This method will not call + * {@link #touch()}. * * @param elements * The elements to show @@ -140,7 +141,9 @@ public class ListNotification extends TemplateNotification { * The element to remove */ public void remove(T element) { - elements.remove(element); + while (elements.remove(element)) { + /* do nothing, just remove all instances of the element. */ + } if (elements.isEmpty()) { dismiss(); } @@ -151,13 +154,46 @@ public class ListNotification extends TemplateNotification { // ABSTRACTNOTIFICATION METHODS // - /** - * {@inheritDoc} - */ @Override public void dismiss() { super.dismiss(); elements.clear(); } + // + // OBJECT METHODS + // + + @Override + public int hashCode() { + int hashCode = super.hashCode(); + for (T element : elements) { + hashCode ^= element.hashCode(); + } + return hashCode; + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ListNotification)) { + return false; + } + ListNotification listNotification = (ListNotification) object; + if (!super.equals(listNotification)) { + return false; + } + if (!key.equals(listNotification.key)) { + return false; + } + if (elements.size() != listNotification.elements.size()) { + return false; + } + for (int index = 0; index < elements.size(); ++index) { + if (!elements.get(index).equals(listNotification.elements.get(index))) { + return false; + } + } + return true; + } + }