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

📄 bsconfbean.java

📁 一款即时通讯软件
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        BSConfRoomInfo ri = (BSConfRoomInfo) rooms.get(key);
        if (ri != null) {
            //str = BSPresenceBean.getJIDHashString(jid, true);
            //nick = (String) ri.nicks.get(str);
            nick = (String) ri.nicks.get(jid);
        }
        if (nick == null)
            nick = jid.getResource();
        return nick;
    }

    /** Changes the nick name  */
    public void changeNick(JID roomJID, String newNick) {
        JID key = roomJID.getSimpleJID();
        BSConfRoomInfo ri = (BSConfRoomInfo) rooms.get(key);
        if (ri == null) return;
        JID jid = new JID(roomJID.getUsername(), roomJID.getServer(), newNick);
        sendPresence(ri.myPresence, jid);
    }

    // *** presence events handling ***

    /** <code>BSPresenceListener</code> function - gets nick and sends farther */
    public void presenceChanged(BSPresenceInfo pi) {
        if (pi == null || pi.getJID() == null) return;

        //String hashJID = BSPresenceBean.getJIDHashString(pi.getJID(), false);
        JID key = pi.getJID().getSimpleJID();
        //BSConfRoomInfo ri = (BSConfRoomInfo) rooms.get(hashJID.toLowerCase());
        BSConfRoomInfo ri = (BSConfRoomInfo) rooms.get(key);
        if (ri == null) return;

        //hashJID = BSPresenceBean.getJIDHashString(pi.getJID(), true);
        //String extName = (String) ri.nicks.get(hashJID);
        String extName = getNick(pi.getJID());

        firePresenceChanged(pi.getJID(), extName, pi);
    }

    /** <code>BSPresenceListener</code> function - clears all presences */
    public void presencesCleared() {
        if (presenceBean == null) return;
        // for all rooms
        Enumeration ris = rooms.elements();
        while (ris.hasMoreElements()) {
            BSConfRoomInfo ri = (BSConfRoomInfo) ris.nextElement();
            // for all presences in room
            Enumeration presences = getRoster(ri.roomJID);
            while (presences.hasMoreElements()) {
                BSPresenceInfo pi = (BSPresenceInfo) presences.nextElement();
                presenceBean.setPresence(pi.getJID(), false, null, null, 0);
                BSPresenceInfo newPi = new BSPresenceInfo(pi.getJID(), false, null, null);
                firePresenceChanged(pi.getJID(), getNick(pi.getJID()), newPi);
            }
        }
    }

    /** <code>BSPresenceListener</code> function - empty implementation */
    public void subscriptionApproved(JID jid) { }
    /** <code>BSPresenceListener</code> function - empty implementation */
    public void subscriptionRequested(JID jid) { }
    /** <code>BSPresenceListener</code> function - empty implementation */
    public void presenceError(Presence p) { }

    // *** conference listeners ***

    /**
     * Adds <code>BSConfListener</code> from listeners notified when
     * conference event appears.
     *
     * @see #removeConfListener
     * @see #removeAllConfListeners
     * @see #fireConfReceived
     */
    public void addConfListener(BSConfListener listener) {
        //assert listener != null : listener;
        if (listener == null) return;
        if (!confListeners.contains(listener)) {
            confListeners.addElement(listener);
        }
    }

    /**
     * Removes <code>BSConfListener</code> from listeners notified when
     * conference event appears.
     *
     * @see #addConfListener
     * @see #removeAllConfListeners
     * @see #fireConfReceived
     */
    public void removeConfListener(BSConfListener listener) {
        //assert listener != null : listener;
        if (listener == null) return;
        confListeners.removeElement(listener);
    }

    /**
     * Removes all listeners notified when conference event appears.
     * This can be used before to free dependencies and allow dispose of
     * all objects.
     *
     * @see #addConfListener
     * @see #removeConfListener
     * @see #fireConfReceived
     */
    public void removeAllConfListeners() {
        confListeners.clear();
    }


    /**
     * Adds <code>BSConfConsumer</code> from consumers notified when
     * conference event appears.
     *
     * @see #removeConfListener
     * @see #removeAllConfListeners
     * @see #fireConfReceived
     */
    public void addConfConsumer(BSConfConsumer consumer) {
        //assert listener != null : listener;
        if (consumer == null) return;
        if (!confConsumers.contains(consumer, 0)) {
            confConsumers.addLast(consumer, 0);
        }
    }

    /**
     * Removes <code>BSConfConsumer</code> from consumers notified when
     * conference event appears.
     *
     * @see #addConfListener
     * @see #removeAllConfListeners
     * @see #fireConfReceived
     */
    public void removeConfConsumer(BSConfConsumer consumer) {
        //assert listener != null : listener;
        if (consumer == null) return;
        confConsumers.remove(consumer, 0);
    }

    /**
     * Removes all consumers notified when conference event appears.
     * This can be used before to free dependencies and allow dispose of
     * all objects.
     *
     * @see #addConfListener
     * @see #removeConfListener
     * @see #fireConfReceived
     */
    public void removeAllConfConsumers() {
        confConsumers.clear();
    }

    /**
     * Notifies conference cunsumers and listeners that groupchat message arrived.
     *
     * @see #addConfListener
     * @see #removeConfListener
     * @see #removeAllConfListeners
     */
    protected void fireGroupMessage(JID fromAddress, String nick, String body) {
        for (Enumeration e = confConsumers.getConsumers(); e.hasMoreElements(); ) {
            BSConfConsumer consumer = (BSConfConsumer) e.nextElement();
            if (BSConsumationResult.DONE == consumer.groupMessage(fromAddress, nick, body).value)
                return;
        }
        for (Enumeration e = confListeners.elements(); e.hasMoreElements(); ) {
            BSConfListener listener = (BSConfListener) e.nextElement();
            listener.groupMessage(fromAddress, nick, body);
        }
    }

    /**
     * Notifies conference listeners that message from room arrived.
     *
     * @see #addConfListener
     * @see #removeConfListener
     * @see #removeAllConfListeners
     */
    protected void fireRoomMessage(JID roomJID, String body) {
        for (Enumeration e = confConsumers.getConsumers(); e.hasMoreElements(); ) {
            BSConfConsumer consumer = (BSConfConsumer) e.nextElement();
            if (BSConsumationResult.DONE == consumer.roomMessage(roomJID, body).value)
                return;
        }
        for (Enumeration e = confListeners.elements(); e.hasMoreElements(); ) {
            BSConfListener listener = (BSConfListener) e.nextElement();
            listener.roomMessage(roomJID, body);
        }
    }

    /**
     * Notifies conference listeners that private message arrived.
     *
     * @see #addConfListener
     * @see #removeConfListener
     * @see #removeAllConfListeners
     */
    protected void firePrivateMessage(JID fromAddress, String nick, String body) {
        for (Enumeration e = confConsumers.getConsumers(); e.hasMoreElements(); ) {
            BSConfConsumer consumer = (BSConfConsumer) e.nextElement();
            if (BSConsumationResult.DONE == consumer.privateMessage(fromAddress, nick, body).value)
                return;
        }
        for (Enumeration e = confListeners.elements(); e.hasMoreElements(); ) {
            BSConfListener listener = (BSConfListener) e.nextElement();
            listener.privateMessage(fromAddress, nick, body);
        }
    }

    /**
     * Notifies conference listeners that presence of nick in room changed.
     *
     * @see #addConfListener
     * @see #removeConfListener
     * @see #removeAllConfListeners
     */
    protected void firePresenceChanged(JID fromAddress, String nick, BSPresenceInfo pi) {
        for (Enumeration e = confConsumers.getConsumers(); e.hasMoreElements(); ) {
            BSConfConsumer consumer = (BSConfConsumer) e.nextElement();
            if (BSConsumationResult.DONE == consumer.presenceChanged(fromAddress, nick, pi).value)
                return;
        }
        for (Enumeration e = confListeners.elements(); e.hasMoreElements(); ) {
            BSConfListener listener = (BSConfListener) e.nextElement();
            listener.presenceChanged(fromAddress, nick, pi);
        }
    }

    /**
     * Notifies conference listeners that invitation into room arrived.
     *
     * @see #addConfListener
     * @see #removeConfListener
     * @see #removeAllConfListeners
     */
    protected void fireInvitation(JID fromAddress, JID roomJID,
                                  String subject, String body) {

        for (Enumeration e = confConsumers.getConsumers(); e.hasMoreElements(); ) {
            BSConfConsumer consumer = (BSConfConsumer) e.nextElement();
            if (BSConsumationResult.DONE == consumer.invitation(fromAddress, roomJID, subject, body).value)
                return;
        }
        for (Enumeration e = confListeners.elements(); e.hasMoreElements(); ) {
            BSConfListener listener = (BSConfListener) e.nextElement();
            listener.invitation(fromAddress, roomJID, subject, body);
        }
    }

    /**
     * Notifies conference listeners that error occured.
     *
     * @see #addConfListener
     * @see #removeConfListener
     * @see #removeAllConfListeners
     */
    protected void fireError(JID roomJID, String errCode, String errMsg) {
        for (Enumeration e = confConsumers.getConsumers(); e.hasMoreElements(); ) {
            BSConfConsumer consumer = (BSConfConsumer) e.nextElement();
            if (BSConsumationResult.DONE == consumer.error(roomJID, errCode, errMsg).value)
                return;
        }
        for (Enumeration e = confListeners.elements(); e.hasMoreElements(); ) {
            BSConfListener listener = (BSConfListener) e.nextElement();
            listener.error(roomJID, errCode, errMsg);
        }
    }


    /**
     * Notifies conference listeners about myJID in conference. This can be
     * taken as successful room entering.
     *
     * @see #addConfListener
     * @see #removeConfListener
     * @see #removeAllConfListeners
     */
    protected void fireSetMyJID(JID roomJID, JID myJID) {
        for (Enumeration e = confConsumers.getConsumers(); e.hasMoreElements(); ) {
            BSConfConsumer consumer = (BSConfConsumer) e.nextElement();
            if (BSConsumationResult.DONE == consumer.setMyJID(roomJID, myJID).value)
                return;
        }
        for (Enumeration e = confListeners.elements(); e.hasMoreElements(); ) {
            BSConfListener listener = (BSConfListener) e.nextElement();
            listener.setMyJID(roomJID, myJID);
        }
    }

}

⌨️ 快捷键说明

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