📄 bsconfbean.java
字号:
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 + -