Package com.sissi.ucenter.relation.muc.affiliation.impl

Source Code of com.sissi.ucenter.relation.muc.affiliation.impl.UpdateAffiliationBroadcast

package com.sissi.ucenter.relation.muc.affiliation.impl;

import com.sissi.addressing.Addressing;
import com.sissi.config.Dictionary;
import com.sissi.context.JID;
import com.sissi.context.JIDBuilder;
import com.sissi.context.JIDContext;
import com.sissi.protocol.muc.XUser;
import com.sissi.ucenter.relation.Relation;
import com.sissi.ucenter.relation.muc.MucItem;
import com.sissi.ucenter.relation.muc.MucRelation;
import com.sissi.ucenter.relation.muc.MucRelationContext;
import com.sissi.ucenter.relation.muc.affiliation.AffiliationBroadcast;
import com.sissi.ucenter.relation.muc.room.Room;
import com.sissi.ucenter.relation.muc.room.RoomConfig;
import com.sissi.ucenter.relation.muc.status.CodeStatusAdder;

/**
* MUC岗位变更广播
*
* @author kim 2014年3月24日
*/
public class UpdateAffiliationBroadcast implements AffiliationBroadcast {

  private final Addressing addressing;

  private final JIDBuilder jidBuilder;

  private final CodeStatusAdder adder;

  private final MucRelationContext relationContext;

  public UpdateAffiliationBroadcast(Addressing addressing, JIDBuilder jidBuilder, CodeStatusAdder adder, MucRelationContext relationContext) {
    super();
    this.adder = adder;
    this.addressing = addressing;
    this.jidBuilder = jidBuilder;
    this.relationContext = relationContext;
  }

  @Override
  public AffiliationBroadcast broadcast(JID group, Room room, MucItem item, JIDContext invoker) {
    JID jid = this.jidBuilder.build(item.getJid());
    // 向MUC房客广播MUC JID所有资源岗位变更
    for (Relation relation : this.relationContext.ourRelations(jid, group)) {
      for (JID to : this.relationContext.whoSubscribedMe(group)) {
        this.addressing.findOne(to, true).write(item.presence(room.pull(Dictionary.FIELD_AFFILIATION, String.class)).add(this.adder.add(new XUser(group, to, room.allowed(to, RoomConfig.WHOISEXISTS, null)).item(item.hidden(room.allowed(to, RoomConfig.WHOISALLOW, jid)).relation(relation.cast(MucRelation.class).affiliation(item.getAffiliation(), true)))).cast(XUser.class)));
      }
    }
    return this;
  }
}
TOP

Related Classes of com.sissi.ucenter.relation.muc.affiliation.impl.UpdateAffiliationBroadcast

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.