package com.sissi.ucenter.relation.impl; import java.util.Collections; import java.util.HashMap; import java.util.Map; import com.sissi.context.JID; import com.sissi.protocol.iq.roster.RosterSubscription; import com.sissi.protocol.muc.ItemAffiliation; import com.sissi.ucenter.relation.Relation; import com.sissi.ucenter.relation.muc.MucRelation; import com.sissi.ucenter.relation.roster.RosterRelation; /** * 默认订阅关系 * * @author kim 2014年2月13日 */ public class DefaultRelation implements Relation, RosterRelation, MucRelation { private final static Map<String, Object> plus = Collections.unmodifiableMap(new HashMap<String, Object>()); private final JID jid; private final String subscription; private boolean noneRole; private String role; private String affiliation; public DefaultRelation(JID jid, String subscription) { this.jid = jid; this.subscription = subscription; } /* * JID.bare * * @see com.sissi.ucenter.relation.Relation#jid() */ @Override public String jid() { return this.jid.asStringWithBare(); } /* * Null * * @see com.sissi.ucenter.relation.Relation#name() */ @Override public String name() { return null; } @Override public boolean name(String name, boolean allowNull) { return false || allowNull; } @Override public String subscription() { return this.subscription; } public String role() { return this.noneRole ? null : this.role; } public DefaultRelation role(String role) { this.role = role; return this; } @Override public DefaultRelation role(String role, boolean force) { return this.role(role); } public DefaultRelation noneRole() { this.noneRole = true; return this; } public String affiliation() { return this.affiliation; } public DefaultRelation affiliation(String affiliation) { this.affiliation = affiliation; return this; } public DefaultRelation affiliation(String affiliation, boolean force) { return this.affiliation(affiliation); } public String resource() { return this.jid.resource(); } public boolean in(String... subscriptions) { return false; } public boolean in(RosterSubscription... subscriptions) { return false; } public boolean activate() { return false; } public boolean outcast() { return ItemAffiliation.OUTCAST.equals(this.affiliation()); } @Override public boolean ask() { return false; } @Override public Map<String, Object> plus() { return plus; } @Override public String[] groups() { return null; } @Override public <T extends Relation> T cast(Class<T> clazz) { return clazz.cast(this); } }