X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fdemoscenemusic%2Fdata%2FDefaultParty.java;h=f621d4d14a98a3b9bd561cd5aebfcf94523ad494;hb=01aeae3f0e571924efcdc5156497a78874b4bdeb;hp=353e6bb45b92dbfb8179d4b49639dee152947602;hpb=d5a46d4ea7a16b4f43a79de2786034f1081463e1;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 353e6bb..f621d4d 100644 --- a/src/main/java/net/pterodactylus/demoscenemusic/data/DefaultParty.java +++ b/src/main/java/net/pterodactylus/demoscenemusic/data/DefaultParty.java @@ -17,23 +17,81 @@ package net.pterodactylus.demoscenemusic.data; +import java.util.Collection; +import java.util.Comparator; + +import net.pterodactylus.util.number.Numbers; + /** - * TODO + * Default implementation of a party data container. * * @author David ‘Bombe’ Roden */ 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. + * + * @param id + * The ID of the party + */ public DefaultParty(String id) { super(id); } - public String name() { - return value("name", String.class).get(); + // + // PARTY METHODS + // + + /** + * {@inheritDoc} + */ + @Override + public String getName() { + return getValue("name", String.class).get(); + } + + /** + * {@inheritDoc} + */ + @Override + public DefaultParty setName(String name) { + getValue("name", String.class).set(name); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + @SuppressWarnings("unchecked") + public Collection getReleases() { + return getValue("releases", Collection.class).get(); } - public DefaultParty name(String name) { - value("name", String.class).set(name); + /** + * {@inheritDoc} + */ + @Override + public Party setReleases(Collection tracks) { + getValue("releases", Collection.class).set(tracks); return this; }