/* * Copyright (c) 2008, 2009, 2010, 2011 Denis Tulskiy * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * version 3 along with this work. If not, see <http://www.gnu.org/licenses/>. */ package com.tulskiy.musique.playlist; import com.tulskiy.musique.gui.playlist.SeparatorTrack; import com.tulskiy.musique.playlist.formatting.tokens.Expression; import java.util.Comparator; /** * Author: Denis Tulskiy * Date: 6/3/11 */ class TrackComparator implements Comparator<Track> { private final Expression e; public TrackComparator(Expression e) { this.e = e; } @Override public int compare(Track o1, Track o2) { try { if (o1 instanceof SeparatorTrack) { return -1; } else if (o2 instanceof SeparatorTrack) { return 1; } Object v1 = e.eval(o1); Object v2 = e.eval(o2); if (v1 != null && v2 != null) { return v1.toString().compareToIgnoreCase(v2.toString()); } } catch (Exception ignored) { } return 0; } }