a minor brush up (use EnumSet instead of switch-case)

This commit is contained in:
Maxmtg
2013-06-23 08:04:41 +00:00
parent c94e8a395f
commit fa38216eaa

View File

@@ -20,6 +20,7 @@ package forge.quest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.EnumSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -27,6 +28,7 @@ import javax.swing.JOptionPane;
import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.ImmutablePair;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
@@ -116,9 +118,12 @@ public class QuestUtilUnlockSets {
* *
* @return unmodifiable list, assorted sets that are not currently in the format. * @return unmodifiable list, assorted sets that are not currently in the format.
*/ */
private static final List<CardEdition> emptyEditions = Collections.unmodifiableList(new ArrayList<CardEdition>()); private static final List<CardEdition> emptyEditions = ImmutableList.<CardEdition>of();
private static final EnumSet<CardEdition.Type> unlockableSetTypes =
EnumSet.of(CardEdition.Type.CORE, CardEdition.Type.EXPANSION, CardEdition.Type.REPRINT, CardEdition.Type.STARTER);
private static List<CardEdition> getUnlockableEditions(final QuestController qData) { private static List<CardEdition> getUnlockableEditions(final QuestController qData) {
if (qData.getFormat() == null || !qData.getFormat().canUnlockSets()) { if (qData.getFormat() == null || !qData.getFormat().canUnlockSets()) {
return emptyEditions; return emptyEditions;
} }
@@ -127,32 +132,28 @@ public class QuestUtilUnlockSets {
} }
List<CardEdition> options = new ArrayList<CardEdition>(); List<CardEdition> options = new ArrayList<CardEdition>();
// Sort current sets by index // Sort current sets by date
List<CardEdition> allowedSets = Lists.newArrayList(Iterables.transform(qData.getFormat().getAllowedSetCodes(), Singletons.getModel().getEditions().FN_EDITION_BY_CODE)); List<CardEdition> allowedSets = Lists.newArrayList(Iterables.transform(qData.getFormat().getAllowedSetCodes(), Singletons.getModel().getEditions().FN_EDITION_BY_CODE));
Collections.sort(allowedSets); Collections.sort(allowedSets);
// Sort unlockable sets by index // Sort unlockable sets by date
List<CardEdition> excludedSets = Lists.newArrayList(Iterables.transform(qData.getFormat().getLockedSets(), Singletons.getModel().getEditions().FN_EDITION_BY_CODE)); List<CardEdition> excludedSets = Lists.newArrayList(Iterables.transform(qData.getFormat().getLockedSets(), Singletons.getModel().getEditions().FN_EDITION_BY_CODE));
Collections.sort(excludedSets); Collections.sort(excludedSets);
// get a number of sets between an excluded and any included set // get a number of sets between an excluded and any included set
List<ImmutablePair<CardEdition, Long>> excludedWithDistances = new ArrayList<ImmutablePair<CardEdition, Long>>(); List<ImmutablePair<CardEdition, Long>> excludedWithDistances = new ArrayList<ImmutablePair<CardEdition, Long>>();
for (CardEdition ex : excludedSets) { for (CardEdition ex : excludedSets) {
switch (ex.getType()) { if (!unlockableSetTypes.contains(ex.getType())) // don't add non-traditional sets
case CORE: case EXPANSION: case REPRINT: case STARTER: break; continue;
default: long distance = Integer.MAX_VALUE;
// don't add non-traditional sets for (CardEdition in : allowedSets) {
continue; long d = Math.abs(ex.getDate().getTime() - in.getDate().getTime());
} if (d < distance) {
long distance = Integer.MAX_VALUE; distance = d;
for (CardEdition in : allowedSets) { }
long d = Math.abs(ex.getDate().getTime() - in.getDate().getTime()); }
if (d < distance) { excludedWithDistances.add(ImmutablePair.of(ex, distance));
distance = d; }
}
}
excludedWithDistances.add(ImmutablePair.of(ex, distance));
}
// sort by distance, then by code desc // sort by distance, then by code desc
Collections.sort(excludedWithDistances, new Comparator<ImmutablePair<CardEdition, Long>>() { Collections.sort(excludedWithDistances, new Comparator<ImmutablePair<CardEdition, Long>>() {