From 27b7735a59633eaa12e11e681d506c3b5e44d1c5 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Fri, 25 Jun 2021 10:52:09 -0700 Subject: [PATCH] Adds equals override for Language objects. Makes languages sort group by can speaks. --- .../monstercards/models/Language.java | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/majinnaibu/monstercards/models/Language.java b/app/src/main/java/com/majinnaibu/monstercards/models/Language.java index eaa2c45..1e72240 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/models/Language.java +++ b/app/src/main/java/com/majinnaibu/monstercards/models/Language.java @@ -1,6 +1,9 @@ package com.majinnaibu.monstercards.models; +import androidx.annotation.Nullable; + import java.util.Comparator; +import java.util.Objects; public class Language implements Comparator, Comparable { @@ -31,11 +34,41 @@ public class Language implements Comparator, Comparable { @Override public int compareTo(Language o) { - return this.getName().compareToIgnoreCase(o.getName()); + if (this.mSpeaks && !o.mSpeaks) { + return -1; + } + if (!this.mSpeaks && o.mSpeaks) { + return 1; + } + return this.mName.compareToIgnoreCase(o.mName); } @Override public int compare(Language o1, Language o2) { - return o1.getName().compareToIgnoreCase(o2.getName()); + if (o1.mSpeaks && !o2.mSpeaks) { + return -1; + } + if (!o1.mSpeaks && o2.mSpeaks) { + return 1; + } + return o1.mName.compareToIgnoreCase(o2.mName); + } + + @Override + public boolean equals(@Nullable @org.jetbrains.annotations.Nullable Object obj) { + if (obj == null) { + return false; + } + if (!(obj instanceof Language)) { + return false; + } + Language otherLanguage = (Language) obj; + if (!Objects.equals(this.mName, otherLanguage.mName)) { + return false; + } + if (this.mSpeaks != otherLanguage.mSpeaks) { + return false; + } + return true; } }