package com.sissi.pipeline.in.message.muc.all;
import com.sissi.context.JID;
import com.sissi.context.JIDBuilder;
import com.sissi.pipeline.in.ClassMatcher;
import com.sissi.protocol.Protocol;
import com.sissi.protocol.message.Message;
import com.sissi.protocol.message.MessageType;
/**
* To.resource.bare && type = groupchat && message.content
*
* @author kim 2014年3月6日
*/
public class MessageMuc2AllMatcher extends ClassMatcher {
private final JIDBuilder jidBuilder;
public MessageMuc2AllMatcher(JIDBuilder jidBuilder) {
super(Message.class);
this.jidBuilder = jidBuilder;
}
public boolean match(Protocol protocol) {
return super.match(protocol) && this.support(this.jidBuilder.build(protocol.getTo())) && this.support(protocol.parent().cast(Message.class));
}
private boolean support(JID jid) {
return jid.isGroup() && jid.isBare();
}
private boolean support(Message message) {
return message.type(MessageType.GROUPCHAT) && message.content();
}
}