Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

MediaSourceComparator.java 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * Copyright (c) 2006-2017 DMDirc Developers
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
  5. * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
  6. * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
  7. * permit persons to whom the Software is furnished to do so, subject to the following conditions:
  8. *
  9. * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
  10. * Software.
  11. *
  12. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  13. * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
  14. * OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  15. * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  16. */
  17. package com.dmdirc.addons.nowplaying;
  18. import java.io.Serializable;
  19. import java.util.Comparator;
  20. import java.util.List;
  21. /**
  22. * Sorts media sources according to an ordered list of their names.
  23. */
  24. public class MediaSourceComparator implements Comparator<MediaSource>, Serializable {
  25. /** A version number for this class. */
  26. private static final long serialVersionUID = 1;
  27. /** The order that the sources should be checked. */
  28. private final List<String> order;
  29. /**
  30. * Creates a new instance of MediaSourceComparator. NB: The order list may be altered during
  31. * comparisons.
  32. *
  33. * @param order An ordered list of media source names
  34. */
  35. public MediaSourceComparator(final List<String> order) {
  36. this.order = order;
  37. }
  38. @Override
  39. public int compare(final MediaSource o1, final MediaSource o2) {
  40. return getPosition(o1) - getPosition(o2);
  41. }
  42. /**
  43. * Retrieves the position of the source within the order list. If the source is not present it
  44. * is appended to the list.
  45. *
  46. * @param source The media source to be tested
  47. */
  48. private int getPosition(final MediaSource source) {
  49. if (!order.contains(source.getAppName())) {
  50. order.add(source.getAppName());
  51. }
  52. return order.indexOf(source.getAppName());
  53. }
  54. }