⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avoirrealtimeplugin.java

📁 openfire whiteboard plugin
💻 JAVA
字号:
/* * * Copyright (C) GNU/GPL AVOIR 2008 * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 51 * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */package org.avoir.realtime.plugins;import java.io.ByteArrayInputStream;import java.io.File;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.avoir.realtime.common.util.XmlUtils;import org.jivesoftware.openfire.IQHandlerInfo;import org.jivesoftware.openfire.IQRouter;import org.jivesoftware.openfire.PacketRouter;import org.jivesoftware.openfire.PresenceManager;import org.jivesoftware.openfire.RoutingTable;import org.jivesoftware.openfire.XMPPServer;import org.jivesoftware.openfire.auth.UnauthorizedException;import org.jivesoftware.openfire.container.Plugin;import org.jivesoftware.openfire.container.PluginManager;import org.jivesoftware.openfire.handler.IQHandler;import org.jivesoftware.openfire.muc.MUCEventDispatcher;import org.jivesoftware.openfire.user.User;import org.w3c.dom.Document;import org.xmpp.packet.IQ;import org.xmpp.packet.JID;/** * * @author developer */public class AvoirRealtimePlugin implements Plugin {    private XMPPServer server = XMPPServer.getInstance();    private PacketRouter packetRouter = server.getPacketRouter();    private String domain = server.getServerInfo().getXMPPDomain();    private IQRouter iqRouter = XMPPServer.getInstance().getIQRouter();    private DefaultPacketProcessor defaultPacketProcessor = new DefaultPacketProcessor(this);    private QuestionProcessor questionProcessor = new QuestionProcessor(this);    private SlideShowProcessor slideshowProcessor = new SlideShowProcessor(this);    private RealtimeRoomProcessor roomProcessor = new RealtimeRoomProcessor(this);    private PointerProcessor pointerProcessor = new PointerProcessor(this);    private RoomResourceManager roomResourceManager = new RoomResourceManager();    public AvoirRealtimePlugin() {        iqRouter.addHandler(new RealtimeIQHandler());        String[] exts = {"images", "slideshows", "questions", "notepads", "answers"};        for (int i = 0; i < exts.length; i++) {            new File(Constants.FILES_DIR + "/" + exts[i]).mkdirs();        }        MUCEventDispatcher.addListener(new RoomEventListener());    }    public void destroyPlugin() {    }    public void initializePlugin(PluginManager pluginManager, File file) {    }    protected class RealtimeIQHandler extends IQHandler {        public RealtimeIQHandler() {            super("Realtime Handler");        }        public IQHandlerInfo getInfo() {            return new IQHandlerInfo("query", Constants.NAME_SPACE);        }        public IQ handleIQ(IQ packet) throws UnauthorizedException {            String xml = packet.toXML();            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();            try {                DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();                Document doc = documentBuilder.parse(                        new ByteArrayInputStream(xml.getBytes(Constants.PREFERRED_ENCODING)));                String mode = XmlUtils.readString(doc, "mode");                if (mode.equals(Mode.POINTER)) {                    pointerProcessor.broadCastPointer(packet);                } else if (mode.equals(Mode.MODIFIED_TEXT_BROADCAST)) {                    return packet;                } else if (mode.equals(Mode.UPDATE_TEXT_ITEM)) {                   defaultPacketProcessor.broadcastModifiedTextItem(packet);                } else if (mode.equals(Mode.CHANGE_ACCESS)) {                    return defaultPacketProcessor.changeAccess(packet, doc);                } else if (mode.equals(Mode.BROADCAST_OUT_SLIDE)) {                    return packet;                } else if (mode.equals(Mode.BROADCAST_IN_SLIDE)) {                    slideshowProcessor.broadcastSlide(packet, doc);                } else if (mode.equals(Mode.DOWNLOAD_ROOM_SLIDE_SHOW)) {                    return slideshowProcessor.downloadSlideShowFile(packet, doc);                } else if (mode.equals(Mode.REQUEST_ROOM_RESOURCES)) {                    String roomName = XmlUtils.readString(doc, "room-name");                    return roomResourceManager.getRoomResources(packet, roomName);                } else if (mode.equals(Mode.ADD_SLIDE_SHOW_CLASS_RESOURCE)) {                    String roomName = XmlUtils.readString(doc, "room-name");                    String filePath = XmlUtils.readString(doc, "file-path");                    return roomResourceManager.addSlideShowAsRoomResource(packet, roomName, filePath);                } else if (mode.equals(Mode.SAVE_SLIDE_SHOW)) {                    return slideshowProcessor.saveSlideShowFile(packet, doc);                } else if (mode.equals(Mode.POSTED_ANSWER)) {                    return packet;                } else if (mode.equals(Mode.POST_ANSWER)) {                    questionProcessor.saveAndForwardAnswer(packet, doc);                } else if (mode.equals(Mode.OPEN_SLIDE_SHOW_QUESTION)) {                    return questionProcessor.openQuestionFile(packet, doc, "slide-show");                } else if (mode.equals(Mode.OPEN_SLIDE_SHOW)) {                    return slideshowProcessor.openSlideShowFile(packet, doc);                } else if (mode.equals(Mode.OPEN_QUESTION)) {                    return questionProcessor.openQuestionFile(packet, doc);                } else if (mode.equals(Mode.BROADCAST_QUESTION)) {                    return packet;                } else if (mode.equals(Mode.POST_QUESTION)) {                    questionProcessor.broadQuestion(packet, doc);                } else if (mode.equals(Mode.SAVE_QUESTION)) {                    return questionProcessor.saveQuestionFile(packet, doc);                } else if (mode.equals(Mode.UPLOAD_IMAGE)) {                    return defaultPacketProcessor.saveRealtimeImageFile(packet, doc);                } else if (mode.equals(Mode.REQUEST_SLIDE_QUESTION_FILE_VIEW)) {                    String fileType = XmlUtils.readString(doc, "file-type");                    String username = XmlUtils.readString(doc, "username");                    return defaultPacketProcessor.getFileView(packet, fileType, username, "slide-question");                } else if (mode.equals(Mode.BROADCAST_WB_ITEM)) {                    defaultPacketProcessor.broadcastItem(packet);                } else if (mode.equals(Mode.ITEM_BROADCAST_FROM_SERVER)) {                    return packet;                } else if (mode.equals(Mode.REQUEST_FILE_VIEW)) {                    String fileType = XmlUtils.readString(doc, "file-type");                    String username = XmlUtils.readString(doc, "username");                    return defaultPacketProcessor.getFileView(packet, fileType, username);                } else if (mode.equals(Mode.DOWNLOAD_QUESTION_IMAGE)) {                    String imagePath = XmlUtils.readString(doc, "image-path");                    return defaultPacketProcessor.getRealtimeImageFile(packet, imagePath, "question");                } else if (mode.equals(Mode.DOWNLOAD_SLIDE_SHOW_IMAGE)) {                    String imagePath = XmlUtils.readString(doc, "image-path");                    return defaultPacketProcessor.getRealtimeImageFile(packet, imagePath, "slide-show");                } else if (mode.equals(Mode.BROADCAST_IMAGE)) {                    String imagePath = XmlUtils.readString(doc, "image-path");                    defaultPacketProcessor.broadcastImage(packet, imagePath);                } else if (mode.equals(Mode.DELETE_ITEM_BROADCAST)) {                    return packet;                } else if (mode.equals(Mode.RESIZE_ITEM_BROADCAST)) {                    return packet;                } else if (mode.equals(Mode.TRANSFORMED_ITEM_BROADCAST)) {                    return packet;                } else if (mode.equals(Mode.UPDATE_ITEM_POSITION)) {                    String id = XmlUtils.readString(doc, "item-id");                    String type = XmlUtils.readString(doc, "item-type");                    if (type.equals("line")) {                        int x1 = XmlUtils.readInt(doc, "x1");                        int y1 = XmlUtils.readInt(doc, "y1");                        int x2 = XmlUtils.readInt(doc, "x2");                        int y2 = XmlUtils.readInt(doc, "y2");                        defaultPacketProcessor.broadcastItemPosition(packet, x1, y1, x2, y2, id, type);                    } else {                        int x = XmlUtils.readInt(doc, "x");                        int y = XmlUtils.readInt(doc, "y");                        defaultPacketProcessor.broadcastItemPosition(packet, x, y, id, type);                    }                } else if (mode.equals(Mode.RESIZE_ITEM)) {                    String id = XmlUtils.readString(doc, "item-id");                    String type = XmlUtils.readString(doc, "item-type");                    if (type.equals("line")) {                        int x1 = XmlUtils.readInt(doc, "x1");                        int y1 = XmlUtils.readInt(doc, "y1");                        int x2 = XmlUtils.readInt(doc, "x2");                        int y2 = XmlUtils.readInt(doc, "y2");                        defaultPacketProcessor.broadcastItemPosition(packet, x1, y1, x2, y2, id, type);                    } else {                        int x = XmlUtils.readInt(doc, "x");                        int y = XmlUtils.readInt(doc, "y");                        String r_type = XmlUtils.readString(doc, "r-type");                        defaultPacketProcessor.broadcastResizedItem(packet, id, x, y, r_type);                    }                } else if (mode.equals(Mode.DELETE_ITEM)) {                    String id = XmlUtils.readString(doc, "item-id");                    defaultPacketProcessor.broadcastItemToBeDeleted(packet, id);                } else if (mode.equals(Mode.WB_IMAGE_BROADCAST)) {                    return packet;                } else if (mode.equals(Mode.POINTER_BROADCAST)) {                    return packet;                } else if (mode.equals(Mode.REQUEST_USER_LIST)) {                    return roomProcessor.getUsers(packet, mode);                } else if (mode.equals(Mode.REQUEST_USER_PROPERTIES)) {                    return roomProcessor.getUsers(packet, mode);                } else if (mode.equals(Mode.UPDATE_USER_PROPERTIES)) {                    roomProcessor.updateUserProperties(packet);                } else if (mode.equals(Mode.CREATE_ROOM)) {                    return roomProcessor.initCreateRoom(packet, doc);                } else if (mode.equals(Mode.REQUEST_ADMIN_LIST)) {                    return roomProcessor.getAdmins(packet);                } else if (mode.equals(Mode.REQUEST_ROOM_LIST)) {                    return roomProcessor.getRooms(packet);                }            } catch (Exception ex) {                ex.printStackTrace();            }            return null;        }    }    public ArrayList<JID> getUsers(boolean onlineUsersOnly) {        //onlineUsersOnly = true;        ArrayList<JID> jids = new ArrayList<JID>();        PresenceManager presenceManager = server.getPresenceManager();        RoutingTable routingTable = server.getRoutingTable();        Collection<User> users = server.getUserManager().getUsers();        Iterator<User> itrUsers = users.iterator();        while (itrUsers.hasNext()) {            User user = itrUsers.next();            JID jid = server.createJID(user.getUsername(), "Smack");            if (presenceManager.isAvailable(user)) {                // add all active resources                jids.addAll(routingTable.getRoutes(jid, null));            } else if (!onlineUsersOnly) {                // send offline message to bareJID                jids.add(jid);            }        }        return jids;    }    public RoomResourceManager getRoomResourceManager() {        return roomResourceManager;    }    public PacketRouter getPacketRouter() {        return packetRouter;    }    public String getDomain() {        return domain;    }    public DefaultPacketProcessor getDefaultPacketProcessor() {        return defaultPacketProcessor;    }    public QuestionProcessor getQuestionProcessor() {        return questionProcessor;    }    public SlideShowProcessor getSlideshowProcessor() {        return slideshowProcessor;    }    public IQRouter getIqRouter() {        return iqRouter;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -