WindChat/windchat-message/src/main/java/com/windchat/im/message/executor/MessageExecutor.java

114 lines
5.6 KiB
Java
Executable File

/**
* Copyright 2018-2028 Akaxin Group
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.windchat.im.message.executor;
import com.windchat.common.command.Command;
import com.windchat.common.constant.RequestAction;
import com.windchat.common.executor.AbstracteExecutor;
import com.windchat.common.executor.SimpleExecutor;
import com.windchat.common.executor.chain.AbstractHandlerChain;
import com.windchat.common.executor.chain.SimpleHandlerChain;
import com.windchat.im.message.group.handler.GroupDetectionHandler;
import com.windchat.im.message.group.handler.GroupMessageImageHandler;
import com.windchat.im.message.group.handler.GroupMessageNoticeHandler;
import com.windchat.im.message.group.handler.GroupMessageTextHandler;
import com.windchat.im.message.group.handler.GroupMessageVoiceHandler;
import com.windchat.im.message.group.handler.GroupMessageWebHandler;
import com.windchat.im.message.group.handler.GroupMessageWebNoticeHandler;
import com.windchat.im.message.group.handler.GroupPsnHandler;
import com.windchat.im.message.group.handler.GroupPushHandler;
import com.windchat.im.message.notice.handler.NoticeHandler;
import com.windchat.im.message.notice.handler.NoticePushHandler;
import com.windchat.im.message.sync.handler.SyncFinishHandler;
import com.windchat.im.message.sync.handler.SyncGroupMessageHandler;
import com.windchat.im.message.sync.handler.SyncMsgStatusHandler;
import com.windchat.im.message.sync.handler.SyncU2MessageHandler;
import com.windchat.im.message.user2.handler.U2MessageImageHandler;
import com.windchat.im.message.user2.handler.U2MessageImageSecretHandler;
import com.windchat.im.message.user2.handler.U2MessageNoticeHandler;
import com.windchat.im.message.user2.handler.U2MessageTextHandler;
import com.windchat.im.message.user2.handler.U2MessageTextSecretHandler;
import com.windchat.im.message.user2.handler.U2MessageVoiceHandler;
import com.windchat.im.message.user2.handler.U2MessageVoiceSecretHandler;
import com.windchat.im.message.user2.handler.U2MessageWebHandler;
import com.windchat.im.message.user2.handler.U2MessageWebNoticeHandler;
import com.windchat.im.message.user2.handler.UserDetectionHandler;
import com.windchat.im.message.user2.handler.UserPsnHandler;
import com.windchat.im.message.user2.handler.UserPushHandler;
import com.windchat.im.message.notice.handler.NoticeHandler;
import com.windchat.im.message.notice.handler.NoticePushHandler;
/**
*
* @author Sam{@link an.guoyue254@gmail.com}
* @since 2018-02-05 11:48:39
*/
public class MessageExecutor {
private static AbstracteExecutor<Command, Boolean> executor = new SimpleExecutor<Command, Boolean>();
static {
AbstractHandlerChain<Command, Boolean> u2MessageChain = new SimpleHandlerChain<Command>();
u2MessageChain.addHandler(new UserDetectionHandler());
u2MessageChain.addHandler(new U2MessageTextHandler());
u2MessageChain.addHandler(new U2MessageTextSecretHandler());
u2MessageChain.addHandler(new U2MessageImageHandler());
u2MessageChain.addHandler(new U2MessageImageSecretHandler());
u2MessageChain.addHandler(new U2MessageVoiceHandler());
u2MessageChain.addHandler(new U2MessageVoiceSecretHandler());
u2MessageChain.addHandler(new U2MessageNoticeHandler());
u2MessageChain.addHandler(new U2MessageWebHandler());
u2MessageChain.addHandler(new U2MessageWebNoticeHandler());
u2MessageChain.addHandler(new UserPsnHandler());
u2MessageChain.addHandler(new UserPushHandler());
AbstractHandlerChain<Command, Boolean> groupMessageChain = new SimpleHandlerChain<Command>();
groupMessageChain.addHandler(new GroupDetectionHandler());
groupMessageChain.addHandler(new GroupMessageTextHandler());
groupMessageChain.addHandler(new GroupMessageImageHandler());
groupMessageChain.addHandler(new GroupMessageVoiceHandler());
groupMessageChain.addHandler(new GroupMessageNoticeHandler());
groupMessageChain.addHandler(new GroupMessageWebHandler());
groupMessageChain.addHandler(new GroupMessageWebNoticeHandler());
groupMessageChain.addHandler(new GroupPsnHandler());
groupMessageChain.addHandler(new GroupPushHandler());
AbstractHandlerChain<Command, Boolean> syncMessageChain = new SimpleHandlerChain<Command>();
syncMessageChain.addHandler(new SyncU2MessageHandler());
syncMessageChain.addHandler(new SyncGroupMessageHandler());
AbstractHandlerChain<Command, Boolean> noticeChain = new SimpleHandlerChain<Command>();
noticeChain.addHandler(new NoticeHandler());
noticeChain.addHandler(new NoticePushHandler());
// "im.cts.message.u2"
executor.addChain(RequestAction.IM_CTS_MESSAGE_U2.getName(), u2MessageChain);
// "im.cts.message.group"
executor.addChain(RequestAction.IM_CTS_MESSAGE_GROUP.getName(), groupMessageChain);
// "im.sync.message"
executor.addChain(RequestAction.IM_SYNC_MESSAGE.getName(), syncMessageChain);
// "im.sync.finish"
executor.addChain(RequestAction.IM_SYNC_FINISH.getName(), new SyncFinishHandler());
// "im.sync.msgStatus"
executor.addChain(RequestAction.IM_SYNC_MSGSTATUS.getName(), new SyncMsgStatusHandler());
// "im.stc.notice"
executor.addChain(RequestAction.IM_STC_NOTICE.getName(), noticeChain);
}
public static AbstracteExecutor<Command, Boolean> getExecutor() {
return executor;
}
}