package org.limewire.ui.swing.downloads; import java.util.Comparator; import org.limewire.core.api.download.DownloadItem; import org.limewire.core.api.download.DownloadState; class DownloadStateComparator implements Comparator<DownloadItem>{ @Override public int compare(DownloadItem o1, DownloadItem o2) { if (o1 == o2){ return 0; } return getSortPriority(o1.getState()) - getSortPriority(o2.getState()); } private int getSortPriority(DownloadState state){ switch(state){ case DONE: return 1; case FINISHING: return 2; case APPLYING_DEFINITION_UPDATE: return 2; case DOWNLOADING: return 3; case RESUMING: return 4; case CONNECTING: return 5; case PAUSED: return 6; case REMOTE_QUEUED: return 7; case LOCAL_QUEUED: return 8; case TRYING_AGAIN: return 9; case STALLED: return 10; case ERROR: return 11; case CANCELLED: return 12; case DANGEROUS: return 13; case SCANNING: return 14; case SCANNING_FRAGMENT: return 15; case THREAT_FOUND: return 16; case SCAN_FAILED: return 17; } throw new IllegalArgumentException("Unknown DownloadState: " + state); } }