package com.sissi.ucenter.relation.roster.impl; import java.util.HashMap; import java.util.Map; import com.sissi.config.Dictionary; import com.sissi.context.JID; import com.sissi.protocol.iq.roster.RosterSubscription; import com.sissi.protocol.presence.Presence; import com.sissi.ucenter.relation.Relation; import com.sissi.ucenter.relation.roster.RosterRelation; /** * Presence Item包装 * * @author kim 2014年1月23日 */ public class PresenceRosterRelation implements RosterRelation { private final JID jid; private final RosterRelation relation; public PresenceRosterRelation(JID jid, Presence presence, RosterRelation relation) { super(); this.jid = jid; this.relation = relation; } @Override public String jid() { return this.jid.asStringWithBare(); } @Override public String name() { return this.jid.resource(); } @Override public String subscription() { return this.relation.subscription(); } public boolean in(String... subscriptions) { return RosterSubscription.parse(this.relation.subscription()).in(subscriptions); } @Override public boolean activate() { return this.relation.activate(); } @Override public boolean ask() { return true; } @Override public String[] groups() { return null; } @Override public <T extends Relation> T cast(Class<T> clazz) { return clazz.cast(this); } @Override public Map<String, Object> plus() { Map<String, Object> plus = new HashMap<String, Object>(); plus.put(Dictionary.FIELD_NAME, this.jid.user()); plus.put(Dictionary.FIELD_ACK, this.ask()); return plus; } }