package com.sissi.ucenter.relation.muc.impl;
import java.util.HashMap;
import java.util.Map;
import com.sissi.config.Dictionary;
import com.sissi.context.JID;
import com.sissi.protocol.muc.XMuc;
import com.sissi.ucenter.relation.Relation;
import com.sissi.ucenter.relation.muc.MucRelation;
/**
* @author kim 2014年2月11日
*/
public class PresenceWrapRelation implements MucRelation {
private final static Map<String, Object> plus = new HashMap<String, Object>();
private final XMuc xmuc;
private final JID group;
private final MucRelation relation;
public PresenceWrapRelation(JID group, XMuc xmuc, MucRelation relation) {
this.xmuc = xmuc;
this.group = group;
this.relation = relation;
}
@Override
public String jid() {
return this.group.asStringWithBare();
}
@Override
public String name() {
return this.group.resource();
}
public String resource() {
return this.group.resource();
}
public boolean outcast() {
return this.relation.outcast();
}
@Override
public boolean activate() {
return this.relation.activate();
}
public boolean name(String name, boolean allowNull) {
return this.name().equals(name) || (this.name() == null && allowNull);
}
@Override
public String role() {
return this.relation.role();
}
public MucRelation role(String role) {
return this.relation.role(role);
}
public MucRelation role(String role, boolean force) {
return this.relation.role(role, force);
}
@Override
public String affiliation() {
return this.relation.affiliation();
}
public MucRelation affiliation(String affiliation) {
return this.relation.affiliation(affiliation);
}
public MucRelation affiliation(String affiliation, boolean force) {
return this.relation.affiliation(affiliation, force);
}
public PresenceWrapRelation noneRole() {
this.relation.noneRole();
return this;
}
@Override
public Map<String, Object> plus() {
if (this.xmuc != null) {
Map<String, Object> plus = new HashMap<String, Object>();
plus.put(Dictionary.FIELD_CONFIGS + "." + Dictionary.FIELD_PASSWORD, xmuc.passowrd());
return plus;
} else {
return plus;
}
}
@Override
public <T extends Relation> T cast(Class<T> clazz) {
return clazz.cast(this);
}
}