正在查看: 95爱播免登录版 v3.1.9 应用的 Workgroup.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: 95爱播免登录版 v3.1.9 应用的 Workgroup.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package org.jivesoftware.smackx.workgroup.user;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.jivesoftware.smack.Connection;
import org.jivesoftware.smack.PacketCollector;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.SmackConfiguration;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.FromContainsFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketIDFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smack.packet.PacketExtension;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.smackx.Form;
import org.jivesoftware.smackx.FormField;
import org.jivesoftware.smackx.ServiceDiscoveryManager;
import org.jivesoftware.smackx.muc.InvitationListener;
import org.jivesoftware.smackx.muc.MultiUserChat;
import org.jivesoftware.smackx.packet.DataForm;
import org.jivesoftware.smackx.packet.MUCUser;
import org.jivesoftware.smackx.workgroup.MetaData;
import org.jivesoftware.smackx.workgroup.WorkgroupInvitation;
import org.jivesoftware.smackx.workgroup.WorkgroupInvitationListener;
import org.jivesoftware.smackx.workgroup.ext.forms.WorkgroupForm;
import org.jivesoftware.smackx.workgroup.packet.DepartQueuePacket;
import org.jivesoftware.smackx.workgroup.packet.QueueUpdate;
import org.jivesoftware.smackx.workgroup.packet.SessionID;
import org.jivesoftware.smackx.workgroup.packet.UserID;
import org.jivesoftware.smackx.workgroup.settings.ChatSetting;
import org.jivesoftware.smackx.workgroup.settings.ChatSettings;
import org.jivesoftware.smackx.workgroup.settings.OfflineSettings;
import org.jivesoftware.smackx.workgroup.settings.SoundSettings;
import org.jivesoftware.smackx.workgroup.settings.WorkgroupProperties;
public class Workgroup {
private Connection connection;
private boolean inQueue;
private List<WorkgroupInvitationListener> invitationListeners;
private List<QueueListener> queueListeners;
private int queuePosition = -1;
private int queueRemainingTime = -1;
private String workgroupJID;
private class JoinQueuePacket extends IQ {
private DataForm form;
private String userID;
public JoinQueuePacket(String str, Form form, String str2) {
this.userID = null;
this.userID = str2;
setTo(str);
setType(IQ.Type.SET);
DataForm dataFormToSend = form.getDataFormToSend();
this.form = dataFormToSend;
addExtension(dataFormToSend);
}
public String getChildElementXML() {
StringBuilder sb = new StringBuilder();
sb.append("<join-queue xmlns=\"http://jabber.org/protocol/workgroup\">");
sb.append("<queue-notifications/>");
if (Workgroup.this.connection.isAnonymous()) {
sb.append(new UserID(this.userID).toXML());
}
sb.append(this.form.toXML());
sb.append("</join-queue>");
return sb.toString();
}
}
public Workgroup(String str, Connection connection) {
if (!connection.isAuthenticated()) {
throw new IllegalStateException("Must login to server before creating workgroup.");
}
this.workgroupJID = str;
this.connection = connection;
this.inQueue = false;
this.invitationListeners = new ArrayList();
this.queueListeners = new ArrayList();
addQueueListener(new QueueListener() {
@Override
public void departedQueue() {
Workgroup.this.inQueue = false;
Workgroup.this.queuePosition = -1;
Workgroup.this.queueRemainingTime = -1;
}
@Override
public void joinedQueue() {
Workgroup.this.inQueue = true;
}
@Override
public void queuePositionUpdated(int i) {
Workgroup.this.queuePosition = i;
}
@Override
public void queueWaitTimeUpdated(int i) {
Workgroup.this.queueRemainingTime = i;
}
});
MultiUserChat.addInvitationListener(connection, new InvitationListener() {
@Override
public void invitationReceived(Connection connection2, String str2, String str3, String str4, String str5, Message message) {
Workgroup.this.inQueue = false;
Workgroup.this.queuePosition = -1;
Workgroup.this.queueRemainingTime = -1;
}
});
connection.addPacketListener(new PacketListener() {
public void processPacket(Packet packet) {
Workgroup.this.handlePacket(packet);
}
}, new PacketTypeFilter(Message.class));
}
private void fireInvitationEvent(WorkgroupInvitation workgroupInvitation) {
synchronized (this.invitationListeners) {
Iterator<WorkgroupInvitationListener> it = this.invitationListeners.iterator();
while (it.hasNext()) {
it.next().invitationReceived(workgroupInvitation);
}
}
}
private void fireQueueDepartedEvent() {
synchronized (this.queueListeners) {
Iterator<QueueListener> it = this.queueListeners.iterator();
while (it.hasNext()) {
it.next().departedQueue();
}
}
}
private void fireQueueJoinedEvent() {
synchronized (this.queueListeners) {
Iterator<QueueListener> it = this.queueListeners.iterator();
while (it.hasNext()) {
it.next().joinedQueue();
}
}
}
private void fireQueuePositionEvent(int i) {
synchronized (this.queueListeners) {
Iterator<QueueListener> it = this.queueListeners.iterator();
while (it.hasNext()) {
it.next().queuePositionUpdated(i);
}
}
}
private void fireQueueTimeEvent(int i) {
synchronized (this.queueListeners) {
Iterator<QueueListener> it = this.queueListeners.iterator();
while (it.hasNext()) {
it.next().queueWaitTimeUpdated(i);
}
}
}
public void handlePacket(Packet packet) {
if (packet instanceof Message) {
Message message = (Message) packet;
PacketExtension extension = message.getExtension("depart-queue", "http://jabber.org/protocol/workgroup");
PacketExtension extension2 = message.getExtension(QueueUpdate.ELEMENT_NAME, "http://jabber.org/protocol/workgroup");
if (extension != null) {
fireQueueDepartedEvent();
return;
}
if (extension2 != null) {
QueueUpdate queueUpdate = (QueueUpdate) extension2;
if (queueUpdate.getPosition() != -1) {
fireQueuePositionEvent(queueUpdate.getPosition());
}
if (queueUpdate.getRemaingTime() != -1) {
fireQueueTimeEvent(queueUpdate.getRemaingTime());
return;
}
return;
}
MUCUser mUCUser = (MUCUser) message.getExtension("x", "http://jabber.org/protocol/muc#user");
MUCUser.Invite invite = mUCUser != null ? mUCUser.getInvite() : null;
if (invite == null || !this.workgroupJID.equals(invite.getFrom())) {
return;
}
PacketExtension extension3 = message.getExtension(SessionID.ELEMENT_NAME, "http://jivesoftware.com/protocol/workgroup");
String sessionID = extension3 != null ? ((SessionID) extension3).getSessionID() : null;
PacketExtension extension4 = message.getExtension(MetaData.ELEMENT_NAME, "http://jivesoftware.com/protocol/workgroup");
fireInvitationEvent(new WorkgroupInvitation(this.connection.getUser(), message.getFrom(), this.workgroupJID, sessionID, message.getBody(), message.getFrom(), extension4 != null ? ((MetaData) extension4).getMetaData() : null));
}
}
public void addInvitationListener(WorkgroupInvitationListener workgroupInvitationListener) {
synchronized (this.invitationListeners) {
if (!this.invitationListeners.contains(workgroupInvitationListener)) {
this.invitationListeners.add(workgroupInvitationListener);
}
}
}
public void addQueueListener(QueueListener queueListener) {
synchronized (this.queueListeners) {
if (!this.queueListeners.contains(queueListener)) {
this.queueListeners.add(queueListener);
}
}
}
public void departQueue() throws XMPPException {
if (this.inQueue) {
DepartQueuePacket departQueuePacket = new DepartQueuePacket(this.workgroupJID);
PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(departQueuePacket.getPacketID()));
this.connection.sendPacket(departQueuePacket);
IQ nextResult = createPacketCollector.nextResult(5000L);
createPacketCollector.cancel();
if (nextResult == null) {
throw new XMPPException("No response from the server.");
}
if (nextResult.getError() != null) {
throw new XMPPException(nextResult.getError());
}
fireQueueDepartedEvent();
}
}
public ChatSetting getChatSetting(String str) throws XMPPException {
return getChatSettings(str, -1).getFirstEntry();
}
public ChatSettings getChatSettings(int i) throws XMPPException {
return getChatSettings(null, i);
}
public OfflineSettings getOfflineSettings() throws XMPPException {
OfflineSettings offlineSettings = new OfflineSettings();
offlineSettings.setType(IQ.Type.GET);
offlineSettings.setTo(this.workgroupJID);
PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(offlineSettings.getPacketID()));
this.connection.sendPacket(offlineSettings);
OfflineSettings nextResult = createPacketCollector.nextResult(SmackConfiguration.getPacketReplyTimeout());
createPacketCollector.cancel();
if (nextResult == null) {
throw new XMPPException("No response from server.");
}
if (nextResult.getError() == null) {
return nextResult;
}
throw new XMPPException(nextResult.getError());
}
public int getQueuePosition() {
return this.queuePosition;
}
public int getQueueRemainingTime() {
return this.queueRemainingTime;
}
public SoundSettings getSoundSettings() throws XMPPException {
SoundSettings soundSettings = new SoundSettings();
soundSettings.setType(IQ.Type.GET);
soundSettings.setTo(this.workgroupJID);
PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(soundSettings.getPacketID()));
this.connection.sendPacket(soundSettings);
SoundSettings nextResult = createPacketCollector.nextResult(SmackConfiguration.getPacketReplyTimeout());
createPacketCollector.cancel();
if (nextResult == null) {
throw new XMPPException("No response from server.");
}
if (nextResult.getError() == null) {
return nextResult;
}
throw new XMPPException(nextResult.getError());
}
public Form getWorkgroupForm() throws XMPPException {
WorkgroupForm workgroupForm = new WorkgroupForm();
workgroupForm.setType(IQ.Type.GET);
workgroupForm.setTo(this.workgroupJID);
PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(workgroupForm.getPacketID()));
this.connection.sendPacket(workgroupForm);
WorkgroupForm nextResult = createPacketCollector.nextResult(SmackConfiguration.getPacketReplyTimeout());
createPacketCollector.cancel();
if (nextResult == null) {
throw new XMPPException("No response from server on status set.");
}
if (nextResult.getError() == null) {
return Form.getFormFrom(nextResult);
}
throw new XMPPException(nextResult.getError());
}
public String getWorkgroupJID() {
return this.workgroupJID;
}
public WorkgroupProperties getWorkgroupProperties() throws XMPPException {
WorkgroupProperties workgroupProperties = new WorkgroupProperties();
workgroupProperties.setType(IQ.Type.GET);
workgroupProperties.setTo(this.workgroupJID);
PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(workgroupProperties.getPacketID()));
this.connection.sendPacket(workgroupProperties);
WorkgroupProperties nextResult = createPacketCollector.nextResult(SmackConfiguration.getPacketReplyTimeout());
createPacketCollector.cancel();
if (nextResult == null) {
throw new XMPPException("No response from server.");
}
if (nextResult.getError() == null) {
return nextResult;
}
throw new XMPPException(nextResult.getError());
}
public boolean isAvailable() {
Presence.Type type = Presence.Type.available;
Presence presence = new Presence(type);
presence.setTo(this.workgroupJID);
PacketCollector createPacketCollector = this.connection.createPacketCollector(new AndFilter(new PacketFilter[]{new FromContainsFilter(this.workgroupJID), new PacketTypeFilter(Presence.class)}));
this.connection.sendPacket(presence);
Presence nextResult = createPacketCollector.nextResult(SmackConfiguration.getPacketReplyTimeout());
createPacketCollector.cancel();
return nextResult != null && nextResult.getError() == null && type == nextResult.getType();
}
public boolean isEmailAvailable() {
try {
return ServiceDiscoveryManager.getInstanceFor(this.connection).discoverInfo(StringUtils.parseServer(this.workgroupJID)).containsFeature("jive:email:provider");
} catch (XMPPException unused) {
return false;
}
}
public boolean isInQueue() {
return this.inQueue;
}
public void joinQueue() throws XMPPException {
joinQueue(null);
}
public void removeQueueListener(QueueListener queueListener) {
synchronized (this.queueListeners) {
this.queueListeners.remove(queueListener);
}
}
public ChatSettings getChatSettings() throws XMPPException {
return getChatSettings(null, -1);
}
public void joinQueue(Form form) throws XMPPException {
joinQueue(form, (String) null);
}
private ChatSettings getChatSettings(String str, int i) throws XMPPException {
ChatSettings chatSettings = new ChatSettings();
if (str != null) {
chatSettings.setKey(str);
}
if (i != -1) {
chatSettings.setType(i);
}
chatSettings.setType(IQ.Type.GET);
chatSettings.setTo(this.workgroupJID);
PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(chatSettings.getPacketID()));
this.connection.sendPacket(chatSettings);
ChatSettings nextResult = createPacketCollector.nextResult(SmackConfiguration.getPacketReplyTimeout());
createPacketCollector.cancel();
if (nextResult != null) {
if (nextResult.getError() == null) {
return nextResult;
}
throw new XMPPException(nextResult.getError());
}
throw new XMPPException("No response from server.");
}
public void joinQueue(Form form, String str) throws XMPPException {
if (!this.inQueue) {
JoinQueuePacket joinQueuePacket = new JoinQueuePacket(this.workgroupJID, form, str);
PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(joinQueuePacket.getPacketID()));
this.connection.sendPacket(joinQueuePacket);
IQ nextResult = createPacketCollector.nextResult(10000L);
createPacketCollector.cancel();
if (nextResult != null) {
if (nextResult.getError() == null) {
fireQueueJoinedEvent();
return;
}
throw new XMPPException(nextResult.getError());
}
throw new XMPPException("No response from the server.");
}
throw new IllegalStateException("Already in queue " + this.workgroupJID);
}
public void removeQueueListener(WorkgroupInvitationListener workgroupInvitationListener) {
synchronized (this.invitationListeners) {
this.invitationListeners.remove(workgroupInvitationListener);
}
}
public WorkgroupProperties getWorkgroupProperties(String str) throws XMPPException {
WorkgroupProperties workgroupProperties = new WorkgroupProperties();
workgroupProperties.setJid(str);
workgroupProperties.setType(IQ.Type.GET);
workgroupProperties.setTo(this.workgroupJID);
PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(workgroupProperties.getPacketID()));
this.connection.sendPacket(workgroupProperties);
WorkgroupProperties nextResult = createPacketCollector.nextResult(SmackConfiguration.getPacketReplyTimeout());
createPacketCollector.cancel();
if (nextResult != null) {
if (nextResult.getError() == null) {
return nextResult;
}
throw new XMPPException(nextResult.getError());
}
throw new XMPPException("No response from server.");
}
public void joinQueue(Map<String, Object> map, String str) throws XMPPException {
if (!this.inQueue) {
Form form = new Form("submit");
for (String str2 : map.keySet()) {
String obj = map.get(str2).toString();
String escapeForXML = StringUtils.escapeForXML(str2);
String escapeForXML2 = StringUtils.escapeForXML(obj);
FormField formField = new FormField(escapeForXML);
formField.setType("text-single");
form.addField(formField);
form.setAnswer(escapeForXML, escapeForXML2);
}
joinQueue(form, str);
return;
}
throw new IllegalStateException("Already in queue " + this.workgroupJID);
}
}