Package com.sissi.pipeline.in.presence.init

Source Code of com.sissi.pipeline.in.presence.init.PresenceInit4MucProcessor

package com.sissi.pipeline.in.presence.init;

import org.apache.commons.lang.time.FastDateFormat;

import com.sissi.context.JID;
import com.sissi.context.JIDContext;
import com.sissi.pipeline.Input;
import com.sissi.pipeline.in.ProxyProcessor;
import com.sissi.protocol.Protocol;
import com.sissi.protocol.muc.XMuc;
import com.sissi.protocol.offline.History;
import com.sissi.protocol.presence.Presence;
import com.sissi.ucenter.vcard.VCardContext;

/**
* MUC房间推送
*
* @author kim 2014年2月18日
*/
public class PresenceInit4MucProcessor extends ProxyProcessor {

  private final FastDateFormat format = FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ssZ");

  private final Input proxy;

  private final VCardContext vcardContext;

  public PresenceInit4MucProcessor(Input proxy, VCardContext vcardContext) {
    super();
    this.proxy = proxy;
    this.vcardContext = vcardContext;
  }

  /*
   * 推送当前JID存在岗位的房间,并自动指定History
   *
   * @see com.sissi.pipeline.Input#input(com.sissi.context.JIDContext, com.sissi.protocol.Protocol)
   */
  @Override
  public boolean input(JIDContext context, Protocol protocol) {
    Presence presence = Presence.muc();
    presence.findField(XMuc.NAME, XMuc.class).history(new History().setSince(this.format.format(Long.valueOf(this.vcardContext.pull(context.jid(), VCardContext.FIELD_LOGOUT, String.valueOf(System.currentTimeMillis())).getValue()))));
    for (JID jid : super.iSubscribedWho(context.jid())) {
      this.proxy.input(context, presence.setTo(jid));
    }
    return true;
  }
}
TOP

Related Classes of com.sissi.pipeline.in.presence.init.PresenceInit4MucProcessor

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.