package com.sissi.protocol.muc;
import java.util.HashMap;
import java.util.Map;
import com.sissi.protocol.presence.PresenceType;
/**
* @author kim 2014年1月16日
*/
public enum ItemAffiliation {
OUTCAST, NONE, MEMBER, ADMIN, OWNER;
private final static Map<Integer, ItemAffiliation> mapping = new HashMap<Integer, ItemAffiliation>();
private final static Map<ItemAffiliation, PresenceType> actions = new HashMap<ItemAffiliation, PresenceType>();
static {
mapping.put(1, OUTCAST);
mapping.put(2, NONE);
mapping.put(3, MEMBER);
mapping.put(4, ADMIN);
mapping.put(5, OWNER);
actions.put(OUTCAST, PresenceType.UNAVAILABLE);
actions.put(NONE, PresenceType.AVAILABLE);
actions.put(MEMBER, PresenceType.AVAILABLE);
actions.put(ADMIN, PresenceType.AVAILABLE);
actions.put(OWNER, PresenceType.AVAILABLE);
}
public String presence() {
return actions.get(this).toString();
}
public String toString() {
return this.toString(false);
}
public String toString(boolean allowNull) {
return this == NONE && allowNull ? null : super.toString().toLowerCase();
}
public boolean contains(ItemAffiliation affiliation) {
return this.ordinal() >= affiliation.ordinal();
}
public boolean contains(String affiliation) {
return this.contains(ItemAffiliation.parse(affiliation));
}
public boolean equals(String affiliation) {
return this.toString().equals(affiliation);
}
public static ItemAffiliation parse(String affiliation) {
try {
return ItemAffiliation.valueOf(affiliation.toUpperCase());
} catch (Exception e) {
return ItemAffiliation.NONE;
}
}
public static String toString(Integer num) {
ItemAffiliation affiliation = mapping.get(num);
return affiliation != null ? affiliation.toString() : OUTCAST.toString();
}
}