Search in sources :

Example 11 with AgentSession

use of org.jivesoftware.xmpp.workgroup.AgentSession in project Openfire by igniterealtime.

the class TransferRequest method execute.

public void execute() {
    if (Type.user == type) {
        AgentSession agentSession = null;
        // Verify if the invitee user is an agent that is currently logged
        try {
            agentSession = WorkgroupManager.getInstance().getAgentManager().getAgent(invitee).getAgentSession();
        } catch (AgentNotFoundException e) {
        // Ignore
        }
        // Only send muc invites to a particular user.
        if (true) {
            // Invitee is not an agent so send a standard MUC room invitation
            sendMUCInvitiation();
            // Keep track when the invitation was sent to the user
            offerAccepted = System.currentTimeMillis();
        } else {
            // Invite the agent to the room by sending an offer
            Workgroup workgroup = agentSession.getWorkgroups().iterator().next();
            RequestQueue requestQueue = workgroup.getRequestQueues().iterator().next();
            // Add the requested agent as the initial target agent to get the offer
            getMetaData().put("agent", Arrays.asList(invitee.toString()));
            getMetaData().put("ignore", Arrays.asList(inviter.toBareJID()));
            // Dispatch the request
            requestQueue.getDispatcher().injectRequest(this);
        }
    } else if (Type.queue == type) {
        // Send offer to the best again available in the requested queue
        Workgroup targetWorkgroup = WorkgroupManager.getInstance().getWorkgroup(invitee.getNode());
        if (targetWorkgroup == null) {
            // No workgroup was found for the specified invitee. Send a Message with the error
            sendErrorMessage("Specified workgroup was not found.");
            return;
        }
        try {
            RequestQueue requestQueue = targetWorkgroup.getRequestQueue(invitee.getResource());
            getMetaData().put("ignore", Arrays.asList(inviter.toBareJID()));
            // Dispatch the request
            requestQueue.getDispatcher().injectRequest(this);
        } catch (NotFoundException e) {
            // No queue was found for the specified invitee. Send a Message with the error
            sendErrorMessage("Specified queue was not found.");
        }
    } else if (Type.workgroup == type) {
        // Select the best queue based on the original request
        Workgroup targetWorkgroup = WorkgroupManager.getInstance().getWorkgroup(invitee.getNode());
        if (targetWorkgroup != null) {
            RequestQueue requestQueue = RoutingManager.getInstance().getBestQueue(targetWorkgroup, userRequest);
            getMetaData().put("ignore", Arrays.asList(inviter.toBareJID()));
            // Send offer to the best again available in the requested queue
            requestQueue.getDispatcher().injectRequest(this);
        } else {
            // No workgroup was found for the specified invitee. Send a Message with the error
            sendErrorMessage("Specified workgroup was not found.");
        }
    }
}
Also used : AgentSession(org.jivesoftware.xmpp.workgroup.AgentSession) RequestQueue(org.jivesoftware.xmpp.workgroup.RequestQueue) AgentNotFoundException(org.jivesoftware.xmpp.workgroup.AgentNotFoundException) AgentNotFoundException(org.jivesoftware.xmpp.workgroup.AgentNotFoundException) NotFoundException(org.jivesoftware.util.NotFoundException) Workgroup(org.jivesoftware.xmpp.workgroup.Workgroup)

Aggregations

AgentSession (org.jivesoftware.xmpp.workgroup.AgentSession)11 Element (org.dom4j.Element)6 AgentNotFoundException (org.jivesoftware.xmpp.workgroup.AgentNotFoundException)6 IQ (org.xmpp.packet.IQ)6 Workgroup (org.jivesoftware.xmpp.workgroup.Workgroup)4 PacketError (org.xmpp.packet.PacketError)4 NotFoundException (org.jivesoftware.util.NotFoundException)3 AgentSessionList (org.jivesoftware.xmpp.workgroup.AgentSessionList)3 ArrayList (java.util.ArrayList)2 RequestQueue (org.jivesoftware.xmpp.workgroup.RequestQueue)2 Connection (java.sql.Connection)1 PreparedStatement (java.sql.PreparedStatement)1 ResultSet (java.sql.ResultSet)1 HashMap (java.util.HashMap)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 UnauthorizedException (org.jivesoftware.xmpp.workgroup.UnauthorizedException)1 Request (org.jivesoftware.xmpp.workgroup.request.Request)1 UserRequest (org.jivesoftware.xmpp.workgroup.request.UserRequest)1