X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fnotify%2FListNotification.java;h=039639eb176ee92e96b63d507067d9fca4f1f516;hp=03836480f2dea1d19e0a29277afd66d18ab6473a;hb=62573c314957b1851f4fbe693b8746686caa940a;hpb=9e2a51094897eedac12d5b24570a3bdd1795ae01 diff --git a/src/main/java/net/pterodactylus/sone/notify/ListNotification.java b/src/main/java/net/pterodactylus/sone/notify/ListNotification.java index 0383648..039639e 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–2016 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 @@ -30,7 +30,6 @@ import net.pterodactylus.util.template.Template; * * @param * The type of the items - * @author David ‘Bombe’ Roden */ public class ListNotification extends TemplateNotification { @@ -81,7 +80,7 @@ public class ListNotification extends TemplateNotification { * The list notification to copy */ public ListNotification(ListNotification listNotification) { - super(listNotification.getId(), new Template()); + super(listNotification.getId(), listNotification.getCreatedTime(), listNotification.getLastUpdatedTime(), listNotification.isDismissable(), new Template()); this.key = listNotification.key; getTemplate().add(listNotification.getTemplate()); getTemplate().getInitialContext().set(key, elements); @@ -101,7 +100,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 +140,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(); } @@ -160,4 +162,38 @@ public class ListNotification extends TemplateNotification { elements.clear(); } + // + // OBJECT METHODS + // + + /** + * {@inheritDoc} + */ + @Override + public int hashCode() { + int hashCode = super.hashCode(); + for (T element : elements) { + hashCode ^= element.hashCode(); + } + return hashCode; + } + + /** + * {@inheritDoc} + */ + @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; + } + return elements.equals(listNotification.elements); + } + }