From 5aed37f8e1a21fcea34fd17f2f547479da359d0a Mon Sep 17 00:00:00 2001 From: Roland Haeder <roland@mxchange.org> Date: Fri, 11 Sep 2015 11:53:09 +0200 Subject: [PATCH] =?utf8?q?Added=20equals()=20and=20hashCode()=20for=20easy?= =?utf8?q?=20item=20comparison.=20Signed-off-by:Roland=20H=C3=A4der=20<rol?= =?utf8?q?and@mxchange.org>?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../jshopcore/model/basket/BaseBasket.java | 7 +++-- .../jshopcore/model/item/BaseItem.java | 27 +++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/org/mxchange/jshopcore/model/basket/BaseBasket.java b/src/org/mxchange/jshopcore/model/basket/BaseBasket.java index 2a4de12..aac4020 100644 --- a/src/org/mxchange/jshopcore/model/basket/BaseBasket.java +++ b/src/org/mxchange/jshopcore/model/basket/BaseBasket.java @@ -20,7 +20,6 @@ import java.util.Deque; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.Map; -import java.util.Objects; import org.mxchange.jshopcore.exceptions.BasketItemAlreadyAddedException; /** @@ -121,11 +120,11 @@ public abstract class BaseBasket<T extends AddableBasketItem> implements Basket< boolean isAdded = false; for (Map.Entry<Long, T> entrySet : map.entrySet()) { - // Get item id - Long itemId = entrySet.getKey(); + // Get whole item + T i = entrySet.getValue(); // Compare id - if (Objects.equals(itemId, item.getItemId())) { + if (i.equals(item)) { // Okay, found it isAdded = true; break; diff --git a/src/org/mxchange/jshopcore/model/item/BaseItem.java b/src/org/mxchange/jshopcore/model/item/BaseItem.java index 7a8d50c..2015d2d 100644 --- a/src/org/mxchange/jshopcore/model/item/BaseItem.java +++ b/src/org/mxchange/jshopcore/model/item/BaseItem.java @@ -127,4 +127,31 @@ public abstract class BaseItem implements AddableBasketItem, Comparable<AddableB public void setProduct (final Product product) { this.product = product; } + + @Override + public boolean equals (final Object object) { + // Is it same type? + if (!(object instanceof BaseItem)) { + // Not equal types + return false; + } else if (!(object instanceof AddableBasketItem)) { + // Not correct interface + return false; + } + + // Securely cast to wanted interface + AddableBasketItem item = (AddableBasketItem) object; + + // Item id and type must be the same + return ((Objects.equals(item.getItemId(), this.getItemId())) + && (Objects.equals(item.getItemType(), this.getItemType()))); + } + + @Override + public int hashCode () { + int hash = 5; + hash = 29 * hash + Objects.hashCode(this.getItemId()); + hash = 29 * hash + Objects.hashCode(this.getItemType()); + return hash; + } } -- 2.39.5