package com.sissi.ucenter.relation.muc.role.impl;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.sissi.context.JID;
import com.sissi.ucenter.relation.muc.role.RoleBuilder;
import com.sissi.ucenter.relation.muc.role.RoleUpdater;
/**
* @author kim 2014年3月17日
*/
public class MappingRoleBuilder implements RoleBuilder {
private final Log log = LogFactory.getLog(this.getClass());
private final NothingRoleUpdater nothing = new NothingRoleUpdater();
private final Map<String, RoleUpdater> mapping = new HashMap<String, RoleUpdater>();
public MappingRoleBuilder(Set<RoleUpdater> roles) {
super();
for (RoleUpdater role : roles) {
this.mapping.put(role.support(), role);
}
}
@Override
public RoleUpdater build(String role) {
RoleUpdater change = this.mapping.get(role);
return change != null ? change : this.nothing;
}
private final class NothingRoleUpdater implements RoleUpdater {
@Override
public RoleUpdater change(JID group) {
MappingRoleBuilder.this.log.warn("Nothing on " + group.asString());
return null;
}
@Override
public String support() {
return null;
}
}
}