package com.netease.nim.uikit.contact.core.model; import com.netease.nim.uikit.contact.core.item.AbsContactItem; import java.util.Comparator; import java.util.HashMap; import java.util.Map; /** * 通讯录分组策略 * Created by huangjun on 2015/2/10. */ public class ContactGroupStrategy implements Comparator<String> { public static final String GROUP_SHARP = "#"; public static final String GROUP_TEAM = "@"; public static final String GROUP_NULL = "?"; private static final class Group { private final int order; private final String name; public Group(int order, String name) { this.order = order; this.name = name; } } private final Map<String, Group> groups = new HashMap<String, Group>(); public String belongs(AbsContactItem item) { return item.belongsGroup(); } protected final void add(String id, int order, String name) { groups.put(id, new Group(order, name)); } protected final int addABC(int order) { String id = ContactGroupStrategy.GROUP_SHARP; add(id, order++, id); for (char i = 0; i < 26; i++) { id = Character.toString((char) ('A' + i)); add(id, order++, id); } return order; } public final String getName(String id) { Group group = groups.get(id); String name = group != null ? group.name : null; return name != null ? name : ""; } private Integer toOrder(String id) { Group group = groups.get(id); return group != null ? group.order : null; } @Override public int compare(String lhs, String rhs) { if (lhs == null) { lhs = ContactGroupStrategy.GROUP_NULL; } if (rhs == null) { rhs = ContactGroupStrategy.GROUP_NULL; } Integer lhsO = toOrder(lhs); Integer rhsO = toOrder(rhs); if (lhsO == rhsO) { return 0; } if (lhsO == null) { return -1; } if (rhsO == null) { return 1; } return lhsO - rhsO; } }