package com.sissi.persistent.impl; import java.util.Map; import com.sissi.config.Dictionary; import com.sissi.context.JIDBuilder; import com.sissi.protocol.Element; import com.sissi.protocol.message.Message; import com.sissi.protocol.muc.Invite; import com.sissi.protocol.muc.XUser; /** * Message MUC邀请</p>索引策略:{"id":1} * * @author kim 2014年3月31日 */ public class PersistentMessageInvite extends PersistentMessage { public PersistentMessageInvite(JIDBuilder jidBuilder, String tip) { super(jidBuilder, tip); } /* * Super.write plus {"invite":invite.from,"reason":invite.reason,"continue":invite.continued,"type":"invite"} * * @see com.sissi.persistent.impl.PersistentMessage#write(com.sissi.protocol.Element) */ public Map<String, Object> write(Element element) { Invite invite = Message.class.cast(element).getMuc().getInvite(); Map<String, Object> entity = super.write(element); entity.put(Dictionary.FIELD_INVITE, invite.getFrom()); entity.put(Dictionary.FIELD_REASON, invite.reason()); entity.put(Dictionary.FIELD_CONTINUE, invite.continued()); entity.put(Dictionary.FIELD_TYPE, Dictionary.FIELD_INVITE); return entity; } /* * Super.read plus Message.setMuc(XUser.invite(new Invite().reason.continued.from).delay.request * * @see com.sissi.persistent.impl.PersistentMessage#read(java.util.Map) */ @Override public Message read(Map<String, Object> element) { Message message = Message.class.cast(super.read(element, new Message())); return message.muc(new XUser().invite(new Invite().reason(super.toString(element, Dictionary.FIELD_REASON)).continued(super.toString(element, Dictionary.FIELD_CONTINUE)).setFrom(element.get(Dictionary.FIELD_INVITE).toString()))).delay(super.delay(element, message)).request(Boolean.valueOf(element.get(Dictionary.FIELD_ACK).toString())); } /* * Super.isSupport plus Element.type = 'invite' * * @see com.sissi.persistent.impl.PersistentProtocol#isSupport(java.util.Map) */ public boolean isSupport(Map<String, Object> element) { return super.isSupport(element) && Dictionary.FIELD_INVITE.equals(super.toString(element, Dictionary.FIELD_TYPE)); } /* * Message包含Invite * * @see com.sissi.persistent.impl.PersistentMessage#isSupportMessage(com.sissi.protocol.message.Message) */ protected boolean isSupportMessage(Message message) { return message.invite(); } }