X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fdemoscenemusic%2Fdata%2FDefaultParty.java;h=3e0f296d58c97748feaeeb8285bfe32ec8f4250a;hb=9eee0f4f619731e5f8b79396d2476090d328be6b;hp=993d69a0795e8b7c440fdac6ddba6da250658073;hpb=e3ac92367c0fde656598f388e9026f45c2868c4b;p=demoscenemusic.git diff --git a/src/main/java/net/pterodactylus/demoscenemusic/data/DefaultParty.java b/src/main/java/net/pterodactylus/demoscenemusic/data/DefaultParty.java index 993d69a..3e0f296 100644 --- a/src/main/java/net/pterodactylus/demoscenemusic/data/DefaultParty.java +++ b/src/main/java/net/pterodactylus/demoscenemusic/data/DefaultParty.java @@ -17,6 +17,11 @@ package net.pterodactylus.demoscenemusic.data; +import java.util.Collection; +import java.util.Comparator; + +import net.pterodactylus.util.number.Numbers; + /** * Default implementation of a party data container. * @@ -24,6 +29,23 @@ package net.pterodactylus.demoscenemusic.data; */ public class DefaultParty extends DefaultBase implements Party { + /** Comparator that sorts parties by name and descending year. */ + public static final Comparator NAME_YEAR_COMPARATOR = new Comparator() { + + @Override + public int compare(Party leftParty, Party rightParty) { + int diff = leftParty.getName().compareToIgnoreCase(rightParty.getName()); + if (diff != 0) { + return diff; + } + int leftYear = Numbers.safeParseInteger(leftParty.getProperties().get("party/year"), 0); + int rightYear = Numbers.safeParseInteger(rightParty.getProperties().get("party/year"), 0); + /* show newest parties first. */ + return rightYear - leftYear; + } + + }; + /** * Creates a new party data container. * @@ -55,4 +77,45 @@ public class DefaultParty extends DefaultBase implements Party { return this; } + /** + * {@inheritDoc} + */ + @Override + @SuppressWarnings("unchecked") + public Collection getReleases() { + return getValue("releases", Collection.class).get(); + } + + /** + * {@inheritDoc} + */ + @Override + public Party setReleases(Collection tracks) { + getValue("releases", Collection.class).set(tracks); + return this; + } + + // + // OBJECT METHODS + // + + /** + * {@inheritDoc} + */ + @Override + public int hashCode() { + return getId().hashCode(); + } + + /** + * {@inheritDoc} + */ + @Override + public boolean equals(Object object) { + if (!(object instanceof Party)) { + return false; + } + return ((Party) object).getId().equals(getId()); + } + }