Skip to content

Commit

Permalink
Clean up basic filtering and sorting method
Browse files Browse the repository at this point in the history
  • Loading branch information
AbandonedCart committed Jan 19, 2025
1 parent ae22f32 commit 92d6999
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 59 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,8 @@ class BrowserAdapter(
if (filteredData === filterResults.values) return
@Suppress("UNCHECKED_CAST")
filterResults.values?.let { filteredData = it as ArrayList<AmiiboFile?> }
if (itemCount > 0) Collections.sort(filteredData, AmiiboFileComparator(settings))
if (filteredData.isNotEmpty())
Collections.sort(filteredData, AmiiboFileComparator(settings))
notifyDataSetChanged()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ class FoomiiboAdapter(
override fun publishResults(charSequence: CharSequence?, filterResults: FilterResults) {
if (filteredData === filterResults.values) return
filterResults.values?.let { filteredData = it as ArrayList<Amiibo> }
if (itemCount > 0) {
if (filteredData.isNotEmpty()) {
Collections.sort(filteredData, AmiiboComparator(settings))
val missingFiles: ArrayList<Amiibo> = arrayListOf()
val amiiboIds: HashSet<Long> = hashSetOf()
Expand Down
149 changes: 92 additions & 57 deletions app/src/main/java/com/hiddenramblings/tagmo/amiibo/AmiiboComparator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,29 @@ class AmiiboComparator(var settings: BrowserSettings) : Comparator<Amiibo> {
settings.amiiboManager?.let {
val amiibo1 = it.amiibos[amiiboId1]
val amiibo2 = it.amiibos[amiiboId2]
if (null == amiibo1 && null == amiibo2)
value = 0
else if (null == amiibo1)
value = 1
else if (null == amiibo2)
value = -1
else if (sort == SORT.NAME.value) {
value = compareAmiiboName(amiibo1, amiibo2)
} else if (sort == SORT.AMIIBO_SERIES.value) {
value = compareAmiiboSeries(amiibo1, amiibo2)
} else if (sort == SORT.AMIIBO_TYPE.value) {
value = compareAmiiboType(amiibo1, amiibo2)
} else if (sort == SORT.GAME_SERIES.value) {
value = compareGameSeries(amiibo1, amiibo2)
} else if (sort == SORT.CHARACTER.value) {
value = compareCharacter(amiibo1, amiibo2)
value = when {
null == amiibo1 && null == amiibo2 -> 0
null == amiibo1 -> 1
null == amiibo2 -> -1
sort == SORT.NAME.value -> {
compareAmiiboName(amiibo1, amiibo2)
}
sort == SORT.AMIIBO_SERIES.value -> {
compareAmiiboSeries(amiibo1, amiibo2)
}
sort == SORT.AMIIBO_TYPE.value -> {
compareAmiiboType(amiibo1, amiibo2)
}
sort == SORT.GAME_SERIES.value -> {
compareGameSeries(amiibo1, amiibo2)
}
sort == SORT.CHARACTER.value -> {
compareCharacter(amiibo1, amiibo2)
}
else -> {
amiibo1.compareTo(amiibo2)
}
}
if (value == 0 && null != amiibo1) value = amiibo1.compareTo(amiibo2!!)
}
if (value == 0) value = compareAmiiboId(amiiboId1, amiiboId2)
}
Expand All @@ -46,70 +51,100 @@ class AmiiboComparator(var settings: BrowserSettings) : Comparator<Amiibo> {
private fun compareAmiiboName(amiibo1: Amiibo, amiibo2: Amiibo): Int {
val name1 = amiibo1.name
val name2 = amiibo2.name
if (null == name1 && null == name2) {
return 0
}
if (null == name1) {
return 1
} else if (null == name2) {
return -1
return when {
null == name1 && null == name2 -> {
0
}

null == name1 -> {
1
}

null == name2 -> {
-1
}

else -> name1.compareTo(name2)
}
return name1.compareTo(name2)
}

private fun compareAmiiboSeries(amiibo1: Amiibo, amiibo2: Amiibo): Int {
val amiiboSeries1 = amiibo1.amiiboSeries
val amiiboSeries2 = amiibo2.amiiboSeries
if (null == amiiboSeries1 && null == amiiboSeries2) {
return 0
}
if (null == amiiboSeries1) {
return 1
} else if (null == amiiboSeries2) {
return -1
return when {
null == amiiboSeries1 && null == amiiboSeries2 -> {
0
}

null == amiiboSeries1 -> {
1
}

null == amiiboSeries2 -> {
-1
}

else -> amiiboSeries1.compareTo(amiiboSeries2)
}
return amiiboSeries1.compareTo(amiiboSeries2)
}

private fun compareAmiiboType(amiibo1: Amiibo, amiibo2: Amiibo): Int {
val amiiboType1 = amiibo1.amiiboType
val amiiboType2 = amiibo2.amiiboType
if (null == amiiboType1 && null == amiiboType2) {
return 0
}
if (null == amiiboType1) {
return 1
} else if (null == amiiboType2) {
return -1
return when {
null == amiiboType1 && null == amiiboType2 -> {
0
}

null == amiiboType1 -> {
1
}

null == amiiboType2 -> {
-1
}

else -> amiiboType1.compareTo(amiiboType2)
}
return amiiboType1.compareTo(amiiboType2)
}

private fun compareGameSeries(amiibo1: Amiibo, amiibo2: Amiibo): Int {
val gameSeries1 = amiibo1.gameSeries
val gameSeries2 = amiibo2.gameSeries
if (null == gameSeries1 && null == gameSeries2) {
return 0
}
if (null == gameSeries1) {
return 1
} else if (null == gameSeries2) {
return -1
return when {
null == gameSeries1 && null == gameSeries2 -> {
0
}

null == gameSeries1 -> {
1
}

null == gameSeries2 -> {
-1
}

else -> gameSeries1.compareTo(gameSeries2)
}
return gameSeries1.compareTo(gameSeries2)
}

private fun compareCharacter(amiibo1: Amiibo, amiibo2: Amiibo): Int {
val character1 = amiibo1.character
val character2 = amiibo2.character
if (null == character1 && null == character2) {
return 0
}
if (null == character1) {
return 1
} else if (null == character2) {
return -1
return when {
null == character1 && null == character2 -> {
0
}

null == character1 -> {
1
}

null == character2 -> {
-1
}

else -> character1.compareTo(character2)
}
return character1.compareTo(character2)
}
}

0 comments on commit 92d6999

Please sign in to comment.