package org.korsakow.ide.ui.components.keywordpool; import org.korsakow.ide.ui.components.pool.ContentEntry; public class SnuEntry implements ContentEntry { private final long snuId; private final String snuName; private final boolean isInKeyword; private final boolean isOutKeyword; public SnuEntry(long snuId, String snuName, boolean inKeyword, boolean outKeyword) { this.snuId = snuId; this.snuName = snuName; isInKeyword = inKeyword; isOutKeyword = outKeyword; } public boolean isInKeyword() { return isInKeyword; } public boolean isOutKeyword() { return isOutKeyword; } public long getSnuId() { return snuId; } public String getSnuName() { return snuName; } /** * Used to sort. Ranks are: * 3: isInKeyword && isOutKeyword * 2: isInKeyword && !isOutKeyword * 1: !isInKeyword && isOutKeyword * 0: !isInKeyword && !isOutkeyword * @param entry * @return */ private static int getRank(SnuEntry entry) { int rank = 0; if (entry.isInKeyword) rank += 2; if (entry.isOutKeyword) rank += 1; return rank; } public int compareTo(ContentEntry oo) { SnuEntry o = (SnuEntry)oo; int rank = getRank(this); int rank2 = getRank(o); if (rank == rank2) return getSnuName().compareTo(o.getSnuName()); return rank > rank2 ? -1 : 1; } }