Package com.sissi.pipeline.in.iq.muc.admin.role

Source Code of com.sissi.pipeline.in.iq.muc.admin.role.MucSetRoleBroadcastProcessor

package com.sissi.pipeline.in.iq.muc.admin.role;

import com.sissi.context.JID;
import com.sissi.context.JIDContext;
import com.sissi.pipeline.in.ProxyProcessor;
import com.sissi.protocol.Protocol;
import com.sissi.protocol.muc.Item;
import com.sissi.protocol.muc.XMucAdmin;
import com.sissi.protocol.muc.XUser;
import com.sissi.ucenter.relation.muc.MucRelation;
import com.sissi.ucenter.relation.muc.MucRelationMapping;
import com.sissi.ucenter.relation.muc.room.Room;
import com.sissi.ucenter.relation.muc.room.RoomBuilder;
import com.sissi.ucenter.relation.muc.room.RoomConfig;
import com.sissi.ucenter.relation.muc.status.CodeStatusAdder;

/**
* 更新角色广播
*
* @author kim 2014年3月14日
*/
public class MucSetRoleBroadcastProcessor extends ProxyProcessor {

  private final RoomBuilder room;

  private final CodeStatusAdder judger;

  private final MucRelationMapping mapping;

  public MucSetRoleBroadcastProcessor(RoomBuilder room, CodeStatusAdder judger, MucRelationMapping mapping) {
    super();
    this.room = room;
    this.judger = judger;
    this.mapping = mapping;
  }

  @Override
  public boolean input(JIDContext context, Protocol protocol) {
    JID group = super.build(protocol.parent().getTo());
    Room room = this.room.build(group);
    for (Item item : protocol.cast(XMucAdmin.class).getItem()) {
      // 同Nickname多JID
      for (JID each : this.mapping.mapping(item.actor(context.jid()).group(group))) {
        MucRelation relation = super.ourRelation(each, group).cast(MucRelation.class);
        for (JID to : super.whoSubscribedMe(group)) {
          super.findOne(to, true).write(item.presence().add(this.judger.add(new XUser(group, to, room.allowed(to, RoomConfig.WHOISEXISTS)).item(item.hidden(room.allowed(to, RoomConfig.WHOISALLOW, each)).relation(relation.cast(MucRelation.class).role(item.getRole(), true)).actor(context.jid()))).cast(XUser.class)));
        }
      }
    }
    return true;
  }
}
TOP

Related Classes of com.sissi.pipeline.in.iq.muc.admin.role.MucSetRoleBroadcastProcessor

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.