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;
}
}