package de.superx.rest.model; public class Item implements Comparable { public String label; public String value; public boolean selected = false; public String sortValue = ""; public Item(String label, String value) { this.label = label; this.value = value; } public Item(String label, String value, String sortValue) { this.label = label; this.value = value; this.sortValue = sortValue; } public Item(String value) { this.value = value; } public Item() { super(); } @Override public boolean equals( Object o ) { // If the object is compared with itself then return true if (o == this) { return true; } /* Check if o is an instance of Item or not "null instanceof [type]" also returns false */ if (!(o instanceof Item)) { return false; } // typecast o to Complex so that we can compare data members Item it = (Item) o; // equal, if value matches if (this.value != null && this.value.contentEquals(it.value)) { return true; } return false; } @Override public int compareTo(Item another) { boolean thisHasSortValue = this.sortValue != null && !this.sortValue.isEmpty(); boolean otherHasSortValue = another.sortValue != null && !another.sortValue.isEmpty(); String thisSort = thisHasSortValue ? this.sortValue : this.label; String otherSort = otherHasSortValue ? another.sortValue : another.label; if (thisHasSortValue || otherHasSortValue) { return thisSort.compareToIgnoreCase(otherSort); } return thisSort.compareTo(otherSort); } @Override public int hashCode() { return super.hashCode(); } }