Commit f9038218 authored by guus's avatar guus

* Updating 'fastpath' plugin to make use of SLF4J instead of custom logging (OF-53).

* Applied java generics.
* Removed unused code.
* Replaced StringPrep with LibIDN (OF-78).

git-svn-id: http://svn.igniterealtime.org/svn/repos/openfire/trunk@11442 b35dd754-fafc-0310-a699-88a17e54d16e
parent c8b3524b
......@@ -44,6 +44,15 @@
Fastpath Plugin Changelog
</h1>
<p><b>4.2.0</b> -- December 2, 2009</p>
<ul>
<li>Now requires Openfire 3.6.5.</li>
<li>Applied Java generics.</li>
<li>Removed unused code.</li>
<li>[<a href='http://www.igniterealtime.org/issues/browse/OF-53'>OF-53</a>] - Replace custom logging implementation with a third party library.</li>
<li>[<a href='http://www.igniterealtime.org/issues/browse/OF-78'>OF-78</a>] - Replaced custom Stringprep with LibIDN.</li>
</ul>
<p><b>4.1.0</b> -- August 12, 2008</p>
<ul>
......
......@@ -5,9 +5,9 @@
<name>Fastpath Service</name>
<description>Support for managed queued chat requests, such as a support team might use.</description>
<author>Jive Software</author>
<version>4.1.0</version>
<date>8/12/2008</date>
<minServerVersion>3.6.0</minServerVersion>
<version>4.2.0</version>
<date>12/2/2009</date>
<minServerVersion>3.6.5</minServerVersion>
<databaseKey>fastpath</databaseKey>
<databaseVersion>0</databaseVersion>
......
......@@ -19,25 +19,26 @@
package org.jivesoftware.openfire.fastpath;
import java.io.File;
import java.io.FileFilter;
import org.jivesoftware.openfire.cluster.ClusterEventListener;
import org.jivesoftware.openfire.cluster.ClusterManager;
import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager;
import org.jivesoftware.openfire.fastpath.util.TaskEngine;
import org.jivesoftware.openfire.user.UserNameManager;
import org.jivesoftware.openfire.user.UserNameProvider;
import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.openfire.cluster.ClusterEventListener;
import org.jivesoftware.openfire.cluster.ClusterManager;
import org.jivesoftware.openfire.fastpath.util.TaskEngine;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.Log;
import org.xmpp.component.ComponentManagerFactory;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.component.ComponentException;
import org.xmpp.component.ComponentManagerFactory;
import org.xmpp.packet.JID;
import java.io.File;
import java.io.FileFilter;
/**
* Openfire Fastpath plugin.
*
......@@ -45,6 +46,8 @@ import java.io.FileFilter;
*/
public class FastpathPlugin implements Plugin, ClusterEventListener {
private static final Logger Log = LoggerFactory.getLogger(FastpathPlugin.class);
/**
* Keep a reference to Fastpath only when the service is up and running in this JVM.
*/
......@@ -98,7 +101,7 @@ public class FastpathPlugin implements Plugin, ClusterEventListener {
}
catch (ComponentException e) {
// Do nothing. Should never happen.
Log.error(e);
Log.error(e.getMessage(), e);
}
// Register the provider of workgroup names
UserNameManager.addUserNameProvider(workgroupManager.getAddress().toString(),
......
......@@ -13,10 +13,11 @@ import org.jivesoftware.openfire.fastpath.settings.chat.ChatSetting;
import org.jivesoftware.openfire.fastpath.settings.chat.ChatSettings;
import org.jivesoftware.openfire.fastpath.settings.chat.ChatSettingsManager;
import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.StringUtils;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.JID;
/**
......@@ -24,6 +25,8 @@ import org.xmpp.packet.JID;
*/
public class ImageServlet extends HttpServlet {
private static final Logger Log = LoggerFactory.getLogger(ImageServlet.class);
/**
* The content-type of the images to return.
*/
......@@ -103,7 +106,7 @@ public class ImageServlet extends HttpServlet {
workgroup = workgroupManager.getWorkgroup(workgroupJID);
}
catch (UserNotFoundException e) {
Log.error(e);
Log.error(e.getMessage(), e);
return null;
}
......
......@@ -29,10 +29,11 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.StringUtils;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.JID;
/**
......@@ -40,6 +41,8 @@ import org.xmpp.packet.JID;
*/
public class SoundServlet extends HttpServlet {
private static final Logger Log = LoggerFactory.getLogger(SoundServlet.class);
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
}
......@@ -61,7 +64,7 @@ public class SoundServlet extends HttpServlet {
workgroup = WorkgroupManager.getInstance().getWorkgroup(new JID(workgroupName));
}
catch (UserNotFoundException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
try {
......@@ -80,7 +83,7 @@ public class SoundServlet extends HttpServlet {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
\ No newline at end of file
......@@ -26,6 +26,8 @@ import org.dom4j.Element;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.LocaleUtils;
import org.jivesoftware.util.Log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.StringWriter;
import java.sql.Connection;
......@@ -39,6 +41,8 @@ import java.sql.ResultSet;
*/
public class WorkgroupSettings {
private static final Logger Log = LoggerFactory.getLogger(WorkgroupSettings.class);
private static final String LOAD_SETTINGS =
"SELECT value FROM fpSetting WHERE workgroupName=? AND namespace=?";
private static final String INSERT_SETTINGS =
......
......@@ -68,7 +68,7 @@ public class CreateWorkgroup extends AdHocCommand {
return;
}
Map errors = WorkgroupUtils.createWorkgroup(wgName, description, agents);
Map<String, String> errors = WorkgroupUtils.createWorkgroup(wgName, description, agents);
if (!errors.isEmpty()) {
note.addAttribute("type", "error");
......
......@@ -21,16 +21,16 @@
package org.jivesoftware.openfire.fastpath.dataforms;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.DbProperties;
import org.jivesoftware.xmpp.workgroup.UnauthorizedException;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.forms.DataForm;
import org.xmpp.forms.FormField;
......@@ -38,6 +38,9 @@ import com.thoughtworks.xstream.XStream;
public class FormManager {
private static final Logger Log = LoggerFactory.getLogger(FormManager.class);
private static FormManager singleton = new FormManager();
private Map<Workgroup, WorkgroupForm> forms = new ConcurrentHashMap<Workgroup, WorkgroupForm>();
......@@ -85,7 +88,7 @@ public class FormManager {
props.setProperty(context, xmlToSave);
}
catch (UnauthorizedException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -153,17 +156,13 @@ public class FormManager {
}
if (elem.getAnswers().size() > 0 && elem.getAnswerType() != WorkgroupForm.FormEnum.hidden) {
Iterator iter = elem.getAnswers().iterator();
while (iter.hasNext()) {
String item = (String)iter.next();
for(String item : elem.getAnswers()) {
field.addOption(item, item);
}
}
else if (elem.getAnswers().size() > 0) {
// Add hidden element values.
Iterator iter = elem.getAnswers().iterator();
while (iter.hasNext()) {
String item = (String)iter.next();
for(String item : elem.getAnswers()) {
field.addValue(item);
}
}
......@@ -180,7 +179,7 @@ public class FormManager {
props.setProperty(context, xmlToSave);
}
catch (UnauthorizedException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -198,7 +197,7 @@ public class FormManager {
return (DataForm) xstream.fromXML(form);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
return null;
......@@ -223,7 +222,7 @@ public class FormManager {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
else {
......
......@@ -20,7 +20,6 @@
package org.jivesoftware.openfire.fastpath.dataforms;
import java.util.Iterator;
import java.util.List;
public class FormUtils {
......@@ -39,7 +38,7 @@ public class FormUtils {
}
public static String createAnswers(String name, WorkgroupForm.FormEnum answerType, List items) {
public static String createAnswers(String name, WorkgroupForm.FormEnum answerType, List<String> items) {
final StringBuilder builder = new StringBuilder();
if (WorkgroupForm.FormEnum.textfield == answerType) {
builder.append("<input type=\"text\" size=\"30\" name=\"").append(name).append("\">");
......@@ -51,9 +50,7 @@ public class FormUtils {
else if (WorkgroupForm.FormEnum.dropdown_box == answerType) {
builder.append("<select name=\"").append(name).append("\">");
if (items != null) {
Iterator iterator = items.iterator();
while (iterator.hasNext()) {
String item = (String)iterator.next();
for(String item : items) {
builder.append("<option value=\"").append(item).append("\">").append(item)
.append("</option>");
}
......@@ -65,10 +62,8 @@ public class FormUtils {
return null;
}
Iterator iter = items.iterator();
int counter = 0;
while(iter.hasNext()){
String value = (String)iter.next();
for(String value : items) {
builder.append("<input type=\"checkbox\" value=\"").append(value)
.append("\" name=\"").append(name).append(counter).append("\">");
builder.append("&nbsp;");
......@@ -82,9 +77,7 @@ public class FormUtils {
return null;
}
Iterator iter = items.iterator();
while(iter.hasNext()){
String value = (String)iter.next();
for(String value : items) {
builder.append("<input type=\"radio\" value=\"").append(value).append("\" name=\"")
.append(name).append("\">");
builder.append("&nbsp;");
......
......@@ -20,29 +20,30 @@
package org.jivesoftware.openfire.fastpath.events;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.jivesoftware.openfire.fastpath.history.AgentChatSession;
import org.jivesoftware.openfire.fastpath.history.ChatSession;
import org.jivesoftware.openfire.fastpath.history.ChatTranscriptManager;
import org.jivesoftware.xmpp.workgroup.AgentSession;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.event.WorkgroupEventDispatcher;
import org.jivesoftware.xmpp.workgroup.event.WorkgroupEventListener;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.jivesoftware.openfire.user.User;
import org.jivesoftware.openfire.user.UserManager;
import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.util.EmailService;
import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.AgentSession;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.event.WorkgroupEventDispatcher;
import org.jivesoftware.xmpp.workgroup.event.WorkgroupEventListener;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.JID;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
/**
* EmailTranscriptEvent sends emails to specified users on end of chat events.
*
......@@ -50,6 +51,8 @@ import java.util.TreeMap;
*/
public class EmailTranscriptEvent implements WorkgroupEventListener {
private static final Logger Log = LoggerFactory.getLogger(EmailTranscriptEvent.class);
public EmailTranscriptEvent() {
WorkgroupEventDispatcher.addListener(this);
Log.debug("EmailTranscriptEvent initialized.");
......@@ -156,8 +159,8 @@ public class EmailTranscriptEvent implements WorkgroupEventListener {
// Send to Agents
UserManager um = UserManager.getInstance();
for (Iterator iterator = chatSession.getAgents(); iterator.hasNext();) {
AgentChatSession agentSession = (AgentChatSession)iterator.next();
for (Iterator<AgentChatSession> iterator = chatSession.getAgents(); iterator.hasNext();) {
AgentChatSession agentSession = iterator.next();
try {
User user = um.getUser(new JID(agentSession.getAgentJID()).getNode());
emailService.sendMessage("Chat Transcript", user.getEmail(), "Chat Transcript", from, subject, builder.toString(), null);
......@@ -200,9 +203,8 @@ public class EmailTranscriptEvent implements WorkgroupEventListener {
private int getChatDuration(Date start, ChatSession session) {
long startTime = start.getTime();
long end = startTime;
List agents = session.getAgentList();
for (Iterator iterator = agents.iterator(); iterator.hasNext();) {
AgentChatSession chatSession = (AgentChatSession)iterator.next();
List<AgentChatSession> agents = session.getAgentList();
for (AgentChatSession chatSession : agents) {
if (end < chatSession.getEndTime()) {
end = chatSession.getEndTime();
}
......
......@@ -53,11 +53,11 @@ public class ChatSession {
agentList.add(chatSession);
}
public Iterator getAgents() {
public Iterator<AgentChatSession> getAgents() {
return agentList.iterator();
}
public List getAgentList() {
public List<AgentChatSession> getAgentList() {
return agentList;
}
......@@ -157,9 +157,9 @@ public class ChatSession {
long startTime = -1;
AgentChatSession returnSession = null;
Iterator iter = getAgents();
Iterator<AgentChatSession> iter = getAgents();
while (iter.hasNext()) {
AgentChatSession agent = (AgentChatSession)iter.next();
AgentChatSession agent = iter.next();
if (agent.getStartTime() <= startTime || startTime == -1) {
startTime = agent.getStartTime();
returnSession = agent;
......
......@@ -43,13 +43,14 @@ import org.dom4j.Element;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.EmailService;
import org.jivesoftware.util.JiveConstants;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.StringUtils;
import org.jivesoftware.xmpp.workgroup.DbProperties;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.jivesoftware.xmpp.workgroup.request.Request;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.JID;
/**
......@@ -60,6 +61,8 @@ import org.xmpp.packet.JID;
*/
public class ChatTranscriptManager {
private static final Logger Log = LoggerFactory.getLogger(ChatTranscriptManager.class);
private static final String GET_WORKGROUP_SESSIONS =
"SELECT sessionID, userID, startTime, endTime, queueWaitTime, state " +
"FROM fpSession WHERE workgroupID=? AND startTime>=? AND endTime<=?";
......@@ -128,7 +131,7 @@ public class ChatTranscriptManager {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -161,7 +164,7 @@ public class ChatTranscriptManager {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -182,14 +185,14 @@ public class ChatTranscriptManager {
element = DocumentHelper.parseText(transcript);
}
catch (DocumentException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
StringBuilder buf = new StringBuilder();
// Add the Messages and Presences contained in the retrieved transcript element
for (Iterator it = element.getRootElement().elementIterator(); it.hasNext();) {
Element packet = (Element)it.next();
for (Iterator<Element> it = element.getRootElement().elementIterator(); it.hasNext();) {
Element packet = it.next();
String name = packet.getName();
String message = "";
......@@ -210,10 +213,8 @@ public class ChatTranscriptManager {
message = StringUtils.escapeHTMLTags(message);
}
List el = packet.elements("x");
Iterator iter = el.iterator();
while (iter.hasNext()) {
Element ele = (Element)iter.next();
List<Element> el = packet.elements("x");
for (Element ele : el) {
if ("jabber:x:delay".equals(ele.getNamespaceURI())) {
String stamp = ele.attributeValue("stamp");
try {
......@@ -233,7 +234,7 @@ public class ChatTranscriptManager {
}
}
catch (ParseException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -289,7 +290,7 @@ public class ChatTranscriptManager {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -321,7 +322,7 @@ public class ChatTranscriptManager {
session.setMetadata(metadata);
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -360,7 +361,7 @@ public class ChatTranscriptManager {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -388,15 +389,15 @@ public class ChatTranscriptManager {
element = DocumentHelper.parseText(transcript);
}
catch (DocumentException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
StringBuilder buf = new StringBuilder();
String conv1 = null;
// Add the Messages and Presences contained in the retrieved transcript element
for (Iterator it = element.getRootElement().elementIterator(); it.hasNext();) {
Element packet = (Element)it.next();
for (Iterator<Element> it = element.getRootElement().elementIterator(); it.hasNext();) {
Element packet = it.next();
String name = packet.getName();
String message = "";
......@@ -420,10 +421,8 @@ public class ChatTranscriptManager {
}
}
List el = packet.elements("x");
Iterator iter = el.iterator();
while (iter.hasNext()) {
Element ele = (Element)iter.next();
List<Element> el = packet.elements("x");
for (Element ele : el) {
if ("jabber:x:delay".equals(ele.getNamespaceURI())) {
String stamp = ele.attributeValue("stamp");
try {
......@@ -448,7 +447,7 @@ public class ChatTranscriptManager {
}
}
catch (ParseException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......
......@@ -21,7 +21,6 @@
package org.jivesoftware.openfire.fastpath.macros;
import org.dom4j.Element;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.Agent;
import org.jivesoftware.xmpp.workgroup.AgentNotFoundException;
import org.jivesoftware.xmpp.workgroup.DbProperties;
......@@ -29,6 +28,8 @@ import org.jivesoftware.xmpp.workgroup.UnauthorizedException;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupProvider;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.PacketError;
......@@ -36,6 +37,8 @@ import com.thoughtworks.xstream.XStream;
public class MacroProvider implements WorkgroupProvider {
private static final Logger Log = LoggerFactory.getLogger(MacroProvider.class);
public boolean handleGet(IQ packet) {
Element iq = packet.getChildElement();
String name = iq.getName();
......@@ -130,7 +133,7 @@ public class MacroProvider implements WorkgroupProvider {
props.setProperty("personal.macro", saveString);
}
catch (UnauthorizedException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
reply = IQ.createResultIQ(packet);
......
......@@ -23,17 +23,20 @@ package org.jivesoftware.openfire.fastpath.macros;
import java.util.HashMap;
import java.util.Map;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.DbProperties;
import org.jivesoftware.xmpp.workgroup.UnauthorizedException;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.thoughtworks.xstream.XStream;
public class WorkgroupMacros {
private static final Logger Log = LoggerFactory.getLogger(WorkgroupMacros.class);
private Map<Workgroup, MacroGroup> rootGroups = new HashMap<Workgroup, MacroGroup>();
private static WorkgroupMacros singleton;
......@@ -145,7 +148,7 @@ public class WorkgroupMacros {
props.setProperty("jive.macro" + id, saveString);
}
catch (UnauthorizedException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......
......@@ -29,11 +29,12 @@ import java.util.List;
import org.dom4j.Element;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.AgentNotFoundException;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupProvider;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.PacketError;
......@@ -42,6 +43,8 @@ import org.xmpp.packet.PacketError;
*/
public class AgentHistory implements WorkgroupProvider {
private static final Logger Log = LoggerFactory.getLogger(AgentHistory.class);
private static final String GET_AGENT_SESSIONS =
"SELECT sessionID, joinTime, leftTime FROM fpAgentSession WHERE agentJID=?";
private static final String GET_SESSION_METADATA =
......@@ -121,14 +124,14 @@ public class AgentHistory implements WorkgroupProvider {
}
}
catch (NumberFormatException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
result.close();
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -218,7 +221,7 @@ public class AgentHistory implements WorkgroupProvider {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......
......@@ -30,16 +30,19 @@ import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.QName;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.AgentNotFoundException;
import org.jivesoftware.xmpp.workgroup.AgentSession;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.PacketError;
public class ChatMetadataProvider implements WorkgroupProvider {
private static final Logger Log = LoggerFactory.getLogger(ChatMetadataProvider.class);
private static final String GET_SESSION_METADATA =
"SELECT metadataName, metadataValue FROM fpSessionMetadata WHERE sessionID=?";
......@@ -96,7 +99,7 @@ public class ChatMetadataProvider implements WorkgroupProvider {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......
......@@ -26,11 +26,12 @@ import java.sql.ResultSet;
import org.dom4j.Element;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.AgentNotFoundException;
import org.jivesoftware.xmpp.workgroup.AgentSession;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.PacketError;
......@@ -40,6 +41,8 @@ import org.xmpp.packet.PacketError;
*/
public class ChatNotes implements WorkgroupProvider {
private static final Logger Log = LoggerFactory.getLogger(ChatNotes.class);
private static final String GET_NOTES = "SELECT notes FROM fpSession WHERE sessionID=?";
private static final String SET_NOTES = "UPDATE fpSession SET notes=? WHERE sessionID=?";
......@@ -61,14 +64,14 @@ public class ChatNotes implements WorkgroupProvider {
pstmt.executeUpdate();
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
}
......@@ -94,7 +97,7 @@ public class ChatNotes implements WorkgroupProvider {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......
......@@ -25,18 +25,18 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.dom4j.Element;
import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.AgentNotFoundException;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.jivesoftware.xmpp.workgroup.WorkgroupProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.PacketError;
......@@ -48,6 +48,8 @@ import org.xmpp.packet.PacketError;
*/
public class MetadataProvider implements WorkgroupProvider {
private static final Logger Log = LoggerFactory.getLogger(MetadataProvider.class);
/**
* Returns true if the IQ packet name equals "generic-metadata".
*
......@@ -98,7 +100,7 @@ public class MetadataProvider implements WorkgroupProvider {
Properties props = new Properties();
try {
props.load(new FileInputStream(file));
Enumeration properties = props.propertyNames();
Enumeration<?> properties = props.propertyNames();
while (properties.hasMoreElements()) {
String key = (String)properties.nextElement();
String value = props.getProperty(key);
......@@ -106,7 +108,7 @@ public class MetadataProvider implements WorkgroupProvider {
}
}
catch (IOException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -115,10 +117,10 @@ public class MetadataProvider implements WorkgroupProvider {
// it would never be mapped correctly.
final Element genericSetting = reply.setChildElement("generic-metadata",
"http://jivesoftware.com/protocol/workgroup");
final Iterator mappings = map.keySet().iterator();
while (mappings.hasNext()) {
String key = (String)mappings.next();
String value = map.get(key);
for (Map.Entry<String, String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
// Create a name-value element
Element element = genericSetting.addElement("entry");
......
......@@ -101,7 +101,7 @@ public class MonitorProvider implements WorkgroupProvider {
String sessionID = iq.element("makeOwner").attributeValue("sessionID");
final String serviceName = workgroupManager.getMUCServiceName();
final String roomName = sessionID + "@" + serviceName;
final String roomJID = roomName + "/" + workgroup.getJID().getNode();
// final String roomJID = roomName + "/" + workgroup.getJID().getNode();
IQ iqPacket = new IQ(IQ.Type.set);
iqPacket.setTo(roomName);
......
......@@ -232,7 +232,6 @@ public class SiteTracker implements WorkgroupProvider {
}
private void handleInvitation(IQ packet, Workgroup workgroup) {
IQ reply = null;
Element iq = packet.getChildElement();
// Define default values
......@@ -242,6 +241,8 @@ public class SiteTracker implements WorkgroupProvider {
elem.addAttribute("sessionID", sessionID);
SiteUser siteUser = siteUsers.get(sessionID);
IQ reply = IQ.createResultIQ(packet);
if (siteUser == null) {
reply.setChildElement(packet.getChildElement().createCopy());
reply.setError(new PacketError(PacketError.Condition.item_not_found));
......@@ -250,7 +251,6 @@ public class SiteTracker implements WorkgroupProvider {
}
else {
// Send back reply
reply = IQ.createResultIQ(packet);
workgroup.send(reply);
}
......
......@@ -25,15 +25,18 @@ import org.dom4j.Element;
import org.jivesoftware.openfire.user.User;
import org.jivesoftware.openfire.user.UserManager;
import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupProvider;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.JID;
public class WorkgroupPropertiesProvider implements WorkgroupProvider {
private static final Logger Log = LoggerFactory.getLogger(WorkgroupPropertiesProvider.class);
public boolean handleGet(IQ packet) {
Element iq = packet.getChildElement();
String name = iq.getName();
......@@ -73,7 +76,7 @@ public class WorkgroupPropertiesProvider implements WorkgroupProvider {
returnPacket.addElement("name").setText(fullName);
}
catch (UserNotFoundException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......
......@@ -59,7 +59,7 @@ public class SettingsManager {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
}
......@@ -100,7 +100,7 @@ public class SettingsManager {
workgroupSettings.add(workgroup.getJID().toBareJID(), element);
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
}
}
\ No newline at end of file
......@@ -32,12 +32,13 @@ import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager;
import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.StringUtils;
import org.jivesoftware.xmpp.workgroup.UnauthorizedException;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.JID;
import com.thoughtworks.xstream.XStream;
......@@ -48,6 +49,8 @@ import com.thoughtworks.xstream.XStream;
*/
public class ChatSettingsCreator {
private static final Logger Log = LoggerFactory.getLogger(ChatSettingsCreator.class);
private static final ChatSettingsCreator instance = new ChatSettingsCreator();
/**
......@@ -241,7 +244,7 @@ public class ChatSettingsCreator {
stream = new FileInputStream(image);
}
catch (FileNotFoundException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
if (stream != null) {
......@@ -259,7 +262,7 @@ public class ChatSettingsCreator {
ChatSettings.SettingType.image_settings, encodedFile);
}
catch (IOException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -293,10 +296,10 @@ public class ChatSettingsCreator {
}
}
catch (UserNotFoundException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
catch (UnauthorizedException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -403,7 +406,7 @@ public class ChatSettingsCreator {
encodedFile);
}
catch (IOException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......
......@@ -28,11 +28,12 @@ import java.util.Map;
import org.dom4j.Element;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.AgentSession;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.event.WorkgroupEventDispatcher;
import org.jivesoftware.xmpp.workgroup.event.WorkgroupEventListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.PacketError;
......@@ -42,6 +43,8 @@ import org.xmpp.packet.PacketError;
*/
public class ChatSettingsManager implements WorkgroupEventListener {
private static final Logger Log = LoggerFactory.getLogger(ChatSettingsManager.class);
private static final String GET_SETTINGS =
"SELECT * FROM fpChatSetting WHERE workgroupNode=?";
private static final String INSERT_CHAT_SETTING =
......@@ -103,7 +106,7 @@ public class ChatSettingsManager implements WorkgroupEventListener {
ResultSet result = pstmt.executeQuery();
if (result.next()) {
do {
String wg = result.getString("workgroupNode");
//String wg = result.getString("workgroupNode");
int type = result.getInt("type");
String label = result.getString("label");
String description = result.getString("description");
......@@ -131,7 +134,7 @@ public class ChatSettingsManager implements WorkgroupEventListener {
}
catch (Exception ex) {
cachedSettings.remove(workgroup.getJID().getNode());
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -182,14 +185,14 @@ public class ChatSettingsManager implements WorkgroupEventListener {
pstmt.executeUpdate();
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
// Add to cache
......@@ -217,14 +220,14 @@ public class ChatSettingsManager implements WorkgroupEventListener {
pstmt.executeUpdate();
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
// Add to cache
......@@ -251,14 +254,14 @@ public class ChatSettingsManager implements WorkgroupEventListener {
pstmt.executeUpdate();
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
// Add to cache
......@@ -287,14 +290,14 @@ public class ChatSettingsManager implements WorkgroupEventListener {
pstmt.executeUpdate();
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
// Add to cache
......@@ -352,7 +355,7 @@ public class ChatSettingsManager implements WorkgroupEventListener {
root.addElement("type").setText(Integer.toString(setting.getType().getType()));
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -447,14 +450,14 @@ public class ChatSettingsManager implements WorkgroupEventListener {
pstmt.executeUpdate();
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
}
......
......@@ -25,8 +25,9 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Retrieves and persists offline settings for a workgroup.
......@@ -35,6 +36,8 @@ import org.jivesoftware.xmpp.workgroup.Workgroup;
*/
public class OfflineSettingsManager {
private static final Logger Log = LoggerFactory.getLogger(OfflineSettingsManager.class);
private static final String GET_OFFLINE_SETTTINGS =
"SELECT redirectPage, emailAddress, subject, offlineText FROM " +
"fpOfflineSetting WHERE workgroupID=?";
......@@ -82,7 +85,7 @@ public class OfflineSettingsManager {
pstmt.executeUpdate();
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
return null;
}
finally {
......@@ -120,7 +123,7 @@ public class OfflineSettingsManager {
pstmt.executeUpdate();
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
return null;
}
finally {
......@@ -162,7 +165,7 @@ public class OfflineSettingsManager {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......
......@@ -37,7 +37,6 @@ import org.jivesoftware.openfire.user.UserManager;
import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.util.ClassUtils;
import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.Agent;
import org.jivesoftware.xmpp.workgroup.AgentManager;
import org.jivesoftware.xmpp.workgroup.RequestQueue;
......@@ -47,6 +46,8 @@ import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.jivesoftware.xmpp.workgroup.dispatcher.AgentSelector;
import org.jivesoftware.xmpp.workgroup.spi.dispatcher.BasicAgentSelector;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.component.ComponentManagerFactory;
import org.xmpp.packet.JID;
......@@ -57,6 +58,8 @@ import org.xmpp.packet.JID;
*/
public class WorkgroupUtils {
private static final Logger Log = LoggerFactory.getLogger(WorkgroupUtils.class);
public static String updateWorkgroup(String workgroupName, String displayName,
String description, int maxSize, int minSize, long requestTimeout, long offerTimeout)
{
......@@ -135,7 +138,7 @@ public class WorkgroupUtils {
answer.add(algorithm);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -145,7 +148,7 @@ public class WorkgroupUtils {
install_algorithm:
try {
Class algorithmClass = loadClass(className);
// Make sure that the interceptor isn't already installed.
// Make sure that the intercepter isn't already installed.
for (AgentSelector agentSelector : answer) {
if (algorithmClass.equals(agentSelector.getClass())) {
break install_algorithm;
......@@ -155,7 +158,7 @@ public class WorkgroupUtils {
answer.add(algorithm);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
return answer;
......@@ -213,7 +216,7 @@ public class WorkgroupUtils {
* @param agents the agents, in a comma delimited string.
* @return a map of errors (if any)
*/
public static Map createWorkgroup(String workgroupName, String description, String agents) {
public static Map<String, String> createWorkgroup(String workgroupName, String description, String agents) {
Map<String, String> errors = new HashMap<String, String>();
// Get a workgroup manager
......@@ -261,7 +264,7 @@ public class WorkgroupUtils {
errors.put("exists", "");
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
errors.put("general", "");
}
}
......@@ -305,7 +308,7 @@ public class WorkgroupUtils {
queue.addMember(agent);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......
......@@ -29,8 +29,9 @@ import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.QName;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.spi.JiveLiveProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.component.ComponentManagerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.JID;
......@@ -42,6 +43,8 @@ import org.xmpp.packet.JID;
*/
public class Agent {
private static final Logger Log = LoggerFactory.getLogger(Agent.class);
private static final String LOAD_AGENT =
"SELECT name, agentJID, maxchats FROM fpAgent WHERE agentID=?";
private static final String SAVE_AGENT =
......@@ -201,7 +204,7 @@ public class Agent {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -227,7 +230,7 @@ public class Agent {
pstmt.executeUpdate();
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -318,9 +321,9 @@ public class Agent {
* <p>The comparator does not handle other objects, using Agents with any other
* object type in the same sorted container will cause a ClassCastException to be thrown.</p>
*/
class AgentAddressComparator implements Comparator {
public int compare(Object o1, Object o2) {
return ((Agent)o1).getAgentJID().toBareJID().compareTo( ((Agent)o2).getAgentJID().toBareJID());
class AgentAddressComparator implements Comparator<Agent> {
public int compare(Agent o1, Agent o2) {
return o1.getAgentJID().toBareJID().compareTo(o2.getAgentJID().toBareJID());
}
}
}
\ No newline at end of file
......@@ -19,21 +19,29 @@
package org.jivesoftware.xmpp.workgroup;
import org.jivesoftware.xmpp.workgroup.utils.FastpathConstants;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.database.SequenceManager;
import org.jivesoftware.util.Log;
import org.jivesoftware.openfire.group.Group;
import org.jivesoftware.xmpp.workgroup.utils.FastpathConstants;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.component.ComponentManagerFactory;
import org.xmpp.packet.JID;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
/**
* <p>Simple agent manager implementation without caching or intelligent/lazy loading of data.</p>
* <p>This implementation loads all agents into memory so the number of agents is limited by the amount of
......@@ -44,6 +52,8 @@ import java.util.*;
*/
public class AgentManager {
private static final Logger Log = LoggerFactory.getLogger(AgentManager.class);
private static final String LOAD_AGENTS =
"SELECT agentID FROM fpAgent";
private static final String INSERT_AGENT =
......@@ -121,7 +131,7 @@ public class AgentManager {
return Collections.unmodifiableList(new ArrayList<Agent>(agents.values()));
}
public Iterator getAgents(WorkgroupResultFilter filter) {
public Iterator<Agent> getAgents(WorkgroupResultFilter filter) {
return filter.filter(agents.values().iterator());
}
......@@ -187,7 +197,7 @@ public class AgentManager {
pstmt.executeUpdate();
}
catch (SQLException sqle) {
Log.error(sqle);
Log.error(sqle.getMessage(), sqle);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -269,7 +279,7 @@ public class AgentManager {
deleteAgent(agent.getAgentJID());
}
catch (IllegalArgumentException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -301,7 +311,7 @@ public class AgentManager {
return true;
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -323,7 +333,7 @@ public class AgentManager {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......
......@@ -36,11 +36,12 @@ import org.dom4j.Element;
import org.jivesoftware.openfire.fastpath.util.TaskEngine;
import org.jivesoftware.util.FastDateFormat;
import org.jivesoftware.util.LocaleUtils;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.interceptor.InterceptorManager;
import org.jivesoftware.xmpp.workgroup.interceptor.OfferInterceptorManager;
import org.jivesoftware.xmpp.workgroup.interceptor.PacketRejectedException;
import org.jivesoftware.xmpp.workgroup.request.UserRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.JID;
import org.xmpp.packet.Packet;
......@@ -55,6 +56,8 @@ import org.xmpp.packet.Presence;
*/
public class AgentSession {
private static final Logger Log = LoggerFactory.getLogger(AgentSession.class);
private static final FastDateFormat UTC_FORMAT = FastDateFormat.getInstance("yyyyMMdd'T'HH:mm:ss", TimeZone.getTimeZone("GMT+0"));
private Presence presence;
......@@ -116,9 +119,9 @@ public class AgentSession {
// AgentSession based on the values sent within the presence (if any)
Element elem = packet.getChildElement("agent-status", "http://jabber.org/protocol/workgroup");
if (elem != null) {
Iterator metaIter = elem.elementIterator();
Iterator<Element> metaIter = elem.elementIterator();
while (metaIter.hasNext()) {
Element agentStatusElement = (Element)metaIter.next();
Element agentStatusElement = metaIter.next();
if ("max-chats".equals(agentStatusElement.getName())) {
String maxChats = agentStatusElement.getText();
if (maxChats == null || maxChats.trim().length() == 0) {
......@@ -382,7 +385,7 @@ public class AgentSession {
removeOffer(offer);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -594,7 +597,7 @@ public class AgentSession {
*
* @author Gaston Dombiak
*/
public static class ChatInfo implements Comparable {
public static class ChatInfo implements Comparable<ChatInfo> {
private String sessionID;
private String userID;
......@@ -614,18 +617,18 @@ public class AgentSession {
this.workgroup = request.getWorkgroup();
this.date = date;
Map metadata = request.getMetaData();
Map<String, List<String>> metadata = request.getMetaData();
if (metadata.containsKey("email")) {
email = listToString((List)metadata.get("email"));
email = listToString(metadata.get("email"));
}
if (metadata.containsKey("username")) {
username = listToString((List)metadata.get("username"));
username = listToString(metadata.get("username"));
}
if (metadata.containsKey("question")) {
question = listToString((List)metadata.get("question"));
question = listToString(metadata.get("question"));
}
}
......@@ -708,8 +711,7 @@ public class AgentSession {
return workgroup.getTranscript(getSessionID());
}
public int compareTo(Object o) {
ChatInfo otherInfo = (ChatInfo)o;
public int compareTo(ChatInfo otherInfo) {
return date.compareTo(otherInfo.getDate());
}
}
......@@ -720,10 +722,10 @@ public class AgentSession {
* @param list the list of strings.
* @return a comma delimited list of strings.
*/
private static String listToString(List list) {
private static String listToString(List<String> list) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
String entry = (String)list.get(i);
String entry = list.get(i);
builder.append(entry);
if (i != (list.size() - 1)) {
builder.append(",");
......
......@@ -22,7 +22,8 @@ package org.jivesoftware.xmpp.workgroup;
import org.jivesoftware.util.ClassUtils;
import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.Log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* <p>Allows customers to customize the request filters being used by the workgroup.</p>
......@@ -39,6 +40,8 @@ import org.jivesoftware.util.Log;
*/
abstract public class RequestFilterFactory {
private static final Logger Log = LoggerFactory.getLogger(RequestFilterFactory.class);
/** <p>The factory to be used.</p> */
private static RequestFilterFactory factory;
......
......@@ -39,7 +39,6 @@ import org.jivesoftware.openfire.group.Group;
import org.jivesoftware.openfire.group.GroupManager;
import org.jivesoftware.openfire.group.GroupNotFoundException;
import org.jivesoftware.util.FastDateFormat;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.NotFoundException;
import org.jivesoftware.xmpp.workgroup.dispatcher.Dispatcher;
import org.jivesoftware.xmpp.workgroup.dispatcher.RoundRobinDispatcher;
......@@ -47,6 +46,8 @@ import org.jivesoftware.xmpp.workgroup.request.Request;
import org.jivesoftware.xmpp.workgroup.request.UserRequest;
import org.jivesoftware.xmpp.workgroup.spi.JiveLiveProperties;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.JID;
import org.xmpp.packet.Presence;
......@@ -59,6 +60,8 @@ import org.xmpp.packet.Presence;
*/
public class RequestQueue {
private static final Logger Log = LoggerFactory.getLogger(RequestQueue.class);
private static final String LOAD_QUEUE =
"SELECT name, description, priority, maxchats, minchats, overflow, backupQueue FROM " +
"fpQueue WHERE queueID=?";
......@@ -317,7 +320,7 @@ public class RequestQueue {
workgroup.send(queueStatus);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -329,7 +332,7 @@ public class RequestQueue {
workgroup.send(queueStatus);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -410,7 +413,7 @@ public class RequestQueue {
details.remove(user);
// Log an error if the request still belongs to this queue
if (this.equals(request.getRequestQueue())) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -705,7 +708,7 @@ public class RequestQueue {
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -729,7 +732,7 @@ public class RequestQueue {
pstmt.executeUpdate();
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -754,7 +757,7 @@ public class RequestQueue {
return true;
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -780,7 +783,7 @@ public class RequestQueue {
return true;
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -800,7 +803,7 @@ public class RequestQueue {
return true;
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -820,7 +823,7 @@ public class RequestQueue {
return true;
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -844,7 +847,7 @@ public class RequestQueue {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -869,12 +872,12 @@ public class RequestQueue {
agents.add(agent);
}
catch (AgentNotFoundException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......
......@@ -20,16 +20,21 @@
package org.jivesoftware.xmpp.workgroup;
import java.util.*;
import java.text.DateFormatSymbols;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import java.util.SortedSet;
import java.util.StringTokenizer;
import java.util.TreeSet;
public class Schedule {
private long id;
private boolean[] week = new boolean[7];
private final String[] dayNames = new DateFormatSymbols().getShortWeekdays();
private final List dayNamesList = Arrays.asList(dayNames);
private TreeSet events = new TreeSet();
private final List<String> dayNamesList = Arrays.asList(dayNames);
private TreeSet<Schedule.Event> events = new TreeSet<Schedule.Event>();
private final String[] weekdays = new DateFormatSymbols().getShortWeekdays();
public Schedule(long id) {
......@@ -43,7 +48,7 @@ public class Schedule {
}
public void clear() {
events = new TreeSet();
events = new TreeSet<Schedule.Event>();
Arrays.fill(week, false);
}
......@@ -55,7 +60,7 @@ public class Schedule {
return week;
}
public SortedSet getEvents() {
public SortedSet<Schedule.Event> getEvents() {
return events;
}
......@@ -122,9 +127,7 @@ public class Schedule {
}
schedule.append('#');
needsComma = false;
Iterator eventIter = events.iterator();
while (eventIter.hasNext()) {
Event event = (Schedule.Event)eventIter.next();
for(Schedule.Event event : events) {
if (needsComma) {
schedule.append(',');
}
......@@ -156,7 +159,7 @@ public class Schedule {
* <li>minute - any minute between 0 and 59.</li>
* </ul>
*/
public static class Event implements Comparable{
public static class Event implements Comparable<Event>{
private int hour;
private int minute;
private boolean on;
......@@ -234,8 +237,7 @@ public class Schedule {
* @param o The object to compare with this one
* @return negative, zero, or positive int if the object is less than, equal to, or greater than the specified object
*/
public int compareTo(Object o) {
Event event = (Event)o;
public int compareTo(Event event) {
int val = hour - event.hour;
if (val == 0){
val = minute - event.minute;
......
......@@ -46,7 +46,6 @@ import org.jivesoftware.database.SequenceManager;
import org.jivesoftware.openfire.fastpath.util.TaskEngine;
import org.jivesoftware.openfire.group.Group;
import org.jivesoftware.util.FastDateFormat;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.NotFoundException;
import org.jivesoftware.util.StringUtils;
import org.jivesoftware.xmpp.workgroup.chatbot.Chatbot;
......@@ -68,6 +67,8 @@ import org.jivesoftware.xmpp.workgroup.spi.dispatcher.DbDispatcherInfoProvider;
import org.jivesoftware.xmpp.workgroup.utils.DbWorkgroup;
import org.jivesoftware.xmpp.workgroup.utils.FastpathConstants;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.component.ComponentManagerFactory;
import org.xmpp.muc.DestroyRoom;
import org.xmpp.muc.Invitation;
......@@ -89,6 +90,8 @@ import org.xmpp.packet.Presence;
*/
public class Workgroup {
private static final Logger Log = LoggerFactory.getLogger(Workgroup.class);
private static final String LOAD_WORKGROUP =
"SELECT jid, displayName, description, status, modes, creationDate, " +
"modificationDate, maxchats, minchats, offerTimeout, requestTimeout, " +
......@@ -307,7 +310,7 @@ public class Workgroup {
queue = new RequestQueue(this, queueID);
}
catch (UserAlreadyExistsException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
else {
......@@ -336,7 +339,7 @@ public class Workgroup {
dispatcherInfoProvider.deleteDispatcherInfo(queue.getID());
}
catch (UnauthorizedException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -864,7 +867,7 @@ public class Workgroup {
request.invitationsSent(sessionID);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -1292,7 +1295,7 @@ public class Workgroup {
}
}
catch (SQLException ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -1313,7 +1316,7 @@ public class Workgroup {
}
}
catch (SQLException ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -1336,7 +1339,7 @@ public class Workgroup {
return true;
}
catch (SQLException ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -1360,7 +1363,7 @@ public class Workgroup {
return true;
}
catch (SQLException ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -1392,7 +1395,7 @@ public class Workgroup {
return true;
}
catch (SQLException ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -1733,15 +1736,15 @@ public class Workgroup {
// If there are valid domains specified, then validate
if (ModelUtil.hasLength(validDomains)) {
Map metadata = request.getMetaData();
Map<String, List<String>> metadata = request.getMetaData();
List list = (List)metadata.get("referer");
List<String> list = metadata.get("referer");
if (metadata.containsKey("referer")) {
metadata.remove("referer");
}
if (list != null && list.size() > 0) {
String referer = (String)list.get(0);
String referer = list.get(0);
URL refererURL = new URL(referer);
String domain = refererURL.getHost().toLowerCase();
......@@ -1763,7 +1766,7 @@ public class Workgroup {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
return true;
}
......
......@@ -78,7 +78,7 @@ public class WorkgroupAdminManager extends WebManager {
}
// TODO: should allow pretty printed version of agent names aka name <address>, or name, or address
public Collection getAgentsInWorkgroup(Workgroup workgroup) {
public Collection<Agent> getAgentsInWorkgroup(Workgroup workgroup) {
TreeSet<Agent> agents = new TreeSet<Agent>(new AgentAddressComparator());
for (RequestQueue requestQueue : workgroup.getRequestQueues()) {
for (Agent member : requestQueue.getMembers()) {
......
......@@ -24,7 +24,6 @@ import org.dom4j.Element;
import org.jivesoftware.openfire.fastpath.WorkgroupSettings;
import org.jivesoftware.openfire.fastpath.settings.chat.ChatSettingsManager;
import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.NotFoundException;
import org.jivesoftware.xmpp.workgroup.interceptor.InterceptorManager;
import org.jivesoftware.xmpp.workgroup.interceptor.OfferInterceptorManager;
......@@ -35,6 +34,8 @@ import org.jivesoftware.xmpp.workgroup.request.Request;
import org.jivesoftware.xmpp.workgroup.request.TransferRequest;
import org.jivesoftware.xmpp.workgroup.request.UserRequest;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.JID;
import org.xmpp.packet.Packet;
......@@ -64,6 +65,8 @@ import org.xmpp.packet.PacketError;
*/
public class WorkgroupIQHandler {
private static final Logger Log = LoggerFactory.getLogger(WorkgroupIQHandler.class);
private Workgroup workgroup;
private WorkgroupSettings workgroupSettings = null;
......@@ -105,7 +108,7 @@ public class WorkgroupIQHandler {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
IQ reply = IQ.createResultIQ(packet);
if (packet.getChildElement() != null) {
reply.setChildElement(packet.getChildElement().createCopy());
......
......@@ -58,7 +58,6 @@ import org.jivesoftware.openfire.net.SASLAuthentication;
import org.jivesoftware.openfire.user.UserManager;
import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.StringUtils;
import org.jivesoftware.xmpp.workgroup.disco.IQDiscoInfoHandler;
import org.jivesoftware.xmpp.workgroup.disco.IQDiscoItemsHandler;
......@@ -67,6 +66,8 @@ import org.jivesoftware.xmpp.workgroup.routing.RoutingManager;
import org.jivesoftware.xmpp.workgroup.search.ChatSearchManager;
import org.jivesoftware.xmpp.workgroup.search.IQChatSearchHandler;
import org.jivesoftware.xmpp.workgroup.utils.FastpathConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.component.Component;
import org.xmpp.component.ComponentException;
import org.xmpp.component.ComponentManager;
......@@ -86,6 +87,8 @@ import org.xmpp.packet.Presence;
*/
public class WorkgroupManager implements Component {
private static final Logger Log = LoggerFactory.getLogger(WorkgroupManager.class);
private static final String LOAD_WORKGROUPS =
"SELECT workgroupID FROM fpWorkgroup";
private static final String ADD_WORKGROUP =
......@@ -340,7 +343,7 @@ public class WorkgroupManager implements Component {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
if (id != -1) {
try {
if (workgroup != null) {
......@@ -350,7 +353,7 @@ public class WorkgroupManager implements Component {
}
}
catch (Exception e1) {
Log.error(e1);
Log.error(e1.getMessage(), e1);
}
}
if (e instanceof UserAlreadyExistsException) {
......@@ -453,11 +456,11 @@ public class WorkgroupManager implements Component {
return Collections.unmodifiableCollection(copy);
}
public Iterator getWorkgroups(WorkgroupResultFilter filter) {
public Iterator<Workgroup> getWorkgroups(WorkgroupResultFilter filter) {
final List<Workgroup> wgroups = new ArrayList<Workgroup>(workgroups.values());
Collections.sort(wgroups, workgroupComparator);
Iterator groups = filter.filter(wgroups.iterator());
Iterator<Workgroup> groups = filter.filter(wgroups.iterator());
if (groups == null) {
groups = Collections.EMPTY_LIST.iterator();
}
......@@ -556,7 +559,7 @@ public class WorkgroupManager implements Component {
ChatSearchManager.getInstanceFor(group).updateIndex(false);
}
catch (IOException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -607,7 +610,7 @@ public class WorkgroupManager implements Component {
return true;
}
catch (SQLException ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -625,7 +628,7 @@ public class WorkgroupManager implements Component {
pstmt.executeUpdate();
}
catch (SQLException ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -650,7 +653,7 @@ public class WorkgroupManager implements Component {
}
}
catch (SQLException ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
workgroupLock.writeLock().unlock();
......@@ -719,7 +722,7 @@ public class WorkgroupManager implements Component {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -855,7 +858,7 @@ public class WorkgroupManager implements Component {
}
catch (ComponentException e) {
// Do nothing. This error should never happen
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -933,7 +936,7 @@ public class WorkgroupManager implements Component {
return true;
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
return false;
}
......@@ -951,7 +954,7 @@ public class WorkgroupManager implements Component {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
return false;
}
return true;
......
......@@ -36,10 +36,11 @@ import org.jivesoftware.openfire.fastpath.util.TaskEngine;
import org.jivesoftware.util.ConcurrentHashSet;
import org.jivesoftware.util.FastDateFormat;
import org.jivesoftware.util.JiveConstants;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.interceptor.AgentInterceptorManager;
import org.jivesoftware.xmpp.workgroup.interceptor.InterceptorManager;
import org.jivesoftware.xmpp.workgroup.interceptor.PacketRejectedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.JID;
import org.xmpp.packet.PacketError;
import org.xmpp.packet.Presence;
......@@ -61,6 +62,8 @@ import org.xmpp.packet.Presence;
*/
public class WorkgroupPresence {
private static final Logger Log = LoggerFactory.getLogger(WorkgroupPresence.class);
private static final FastDateFormat UTC_FORMAT = FastDateFormat
.getInstance(JiveConstants.XMPP_DELAY_DATETIME_FORMAT, TimeZone.getTimeZone("UTC"));
......@@ -165,7 +168,7 @@ public class WorkgroupPresence {
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
Presence reply = new Presence();
reply.setError(new PacketError(PacketError.Condition.internal_server_error));
reply.setTo(packet.getFrom());
......@@ -419,12 +422,12 @@ public class WorkgroupPresence {
}
}
private int getNumberOfAgentsOnline() {
int onlineAgents = 0;
WorkgroupManager workgroupManager = WorkgroupManager.getInstance();
for (Workgroup workgroup : workgroupManager.getWorkgroups()) {
onlineAgents += workgroup.getAgentSessions().size();
}
return onlineAgents;
}
// private int getNumberOfAgentsOnline() {
// int onlineAgents = 0;
// WorkgroupManager workgroupManager = WorkgroupManager.getInstance();
// for (Workgroup workgroup : workgroupManager.getWorkgroups()) {
// onlineAgents += workgroup.getAgentSessions().size();
// }
// return onlineAgents;
// }
}
\ No newline at end of file
......@@ -127,13 +127,13 @@ public class WorkgroupResultFilter {
* @param rawResults Iterator over all support group members
* @return Iterator over group members fitting the current filter settings
*/
public synchronized Iterator filter(Iterator rawResults) {
Iterator result = null;
public synchronized <E> Iterator<E> filter(Iterator<E> rawResults) {
Iterator<E> result = null;
if (startIndex == 0 && numResults == NO_RESULT_LIMIT) {
result = rawResults;
}
else {
LinkedList list = new LinkedList();
LinkedList<E> list = new LinkedList<E>();
while (rawResults.hasNext() && startIndex-- > 0) {
rawResults.next(); // skip over first x entries
}
......
......@@ -20,17 +20,6 @@
package org.jivesoftware.xmpp.workgroup;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.FastDateFormat;
import org.jivesoftware.util.Log;
import org.xmpp.component.ComponentManagerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.PacketError;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
......@@ -42,8 +31,21 @@ import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.FastDateFormat;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.PacketError;
public class WorkgroupStats {
private static final Logger Log = LoggerFactory.getLogger(WorkgroupStats.class);
private static final String GET_SESSIONS_WITH_TRANSCRIPTS =
"SELECT sessionID, startTime, endTime FROM fpSession WHERE workgroupID=? AND " +
"userID=? AND transcript IS NOT NULL";
......@@ -55,8 +57,8 @@ public class WorkgroupStats {
private static final FastDateFormat UTC_FORMAT = FastDateFormat
.getInstance("yyyyMMdd'T'HH:mm:ss", TimeZone.getTimeZone("GMT+0"));
private List chatList = new ArrayList();
private List transferList = new ArrayList();
private List<Object[]> chatList = new ArrayList<Object[]>();
private List<Object[]> transferList = new ArrayList<Object[]>();
private Workgroup workgroup;
// Defined Variables used in Stats
......@@ -75,30 +77,30 @@ public class WorkgroupStats {
this.workgroup = workgroup;
}
public void processStatistics(Map map) {
final String action = (String)map.get(ACTION);
public void processStatistics(Map<String, String> map) {
final String action = map.get(ACTION);
if (END_OF_CHAT.equals(action)) {
String agent = (String)map.get(AGENT_JID);
Long startTime = new Long((String)map.get(START_TIME));
Long endTime = new Long((String)map.get(END_TIME));
String agent = map.get(AGENT_JID);
Long startTime = new Long(map.get(START_TIME));
Long endTime = new Long(map.get(END_TIME));
// String chatRoom = (String)map.get(CHAT_ROOM);
// String workgroupName = (String)map.get(WORKGROUP_NAME);
chatList.add(new Object[]{agent, startTime, endTime});
}
else if (AGENT_TRANSFER.equals(action)) {
final String agent = (String)map.get(AGENT_JID);
final Long startTime = new Long((String)map.get(START_TIME));
final Long transferTime = new Long((String)map.get(END_TIME));
final String agentTransferedTo = (String)map.get(OTHER_AGENT_JID);
final String agent = map.get(AGENT_JID);
final Long startTime = new Long(map.get(START_TIME));
final Long transferTime = new Long(map.get(END_TIME));
final String agentTransferedTo = map.get(OTHER_AGENT_JID);
transferList.add(new Object[]{agent, startTime, transferTime, agentTransferedTo});
}
}
public Iterator getCompletedChats() {
public Iterator<Object[]> getCompletedChats() {
return chatList.iterator();
}
public Iterator getChatsTransfered() {
public Iterator<Object[]> getChatsTransfered() {
return transferList.iterator();
}
......@@ -150,7 +152,7 @@ public class WorkgroupStats {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
}
......@@ -175,7 +177,7 @@ public class WorkgroupStats {
}
}
catch (SQLException sqle) {
Log.error(sqle);
Log.error(sqle.getMessage(), sqle);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -183,8 +185,8 @@ public class WorkgroupStats {
if (transcriptXML != null) {
Document element = DocumentHelper.parseText(transcriptXML);
// Add the Messages and Presences contained in the retrieved transcript element
for (Iterator it = element.getRootElement().elementIterator(); it.hasNext();) {
Element packet = (Element)it.next();
for (Iterator<Element> it = element.getRootElement().elementIterator(); it.hasNext();) {
Element packet = it.next();
transcript.add(packet.createCopy());
}
}
......@@ -228,7 +230,7 @@ public class WorkgroupStats {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......
......@@ -32,7 +32,6 @@ import org.jivesoftware.openfire.fastpath.history.ChatTranscriptManager;
import org.jivesoftware.openfire.fastpath.settings.chat.ChatSettings;
import org.jivesoftware.openfire.fastpath.settings.chat.ChatSettingsManager;
import org.jivesoftware.openfire.fastpath.settings.chat.KeyEnum;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.NotFoundException;
import org.jivesoftware.xmpp.workgroup.UnauthorizedException;
import org.jivesoftware.xmpp.workgroup.UserCommunicationMethod;
......@@ -43,6 +42,8 @@ import org.jivesoftware.xmpp.workgroup.interceptor.PacketRejectedException;
import org.jivesoftware.xmpp.workgroup.interceptor.QueueInterceptorManager;
import org.jivesoftware.xmpp.workgroup.request.Request;
import org.jivesoftware.xmpp.workgroup.request.UserRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.JID;
import org.xmpp.packet.Message;
......@@ -111,6 +112,8 @@ import org.xmpp.packet.Message;
*/
public class Chatbot implements UserCommunicationMethod {
private static final Logger Log = LoggerFactory.getLogger(Chatbot.class);
/**
* Holds the workgroup where the chatbot is working. This is a one-to-one relation so this
* chatbot is the only chatbot that will be answering Messages sent to the workgroup.
......
......@@ -75,10 +75,9 @@ public class IQDiscoInfoHandler {
public IQ handleIQ(IQ packet) {
if (packet.getType() == IQ.Type.result) {
List features = packet.getChildElement().elements("feature");
List<Element> features = packet.getChildElement().elements("feature");
// Detect if this item is the MUC service
for (Iterator it=features.iterator(); it.hasNext(); ) {
Element feature = (Element) it.next();
for (Element feature : features) {
String variable = feature.attributeValue("var");
if ("http://jabber.org/protocol/muc".equals(variable)) {
......
......@@ -51,10 +51,9 @@ public class IQDiscoItemsHandler {
public IQ handleIQ(IQ packet) {
if (packet.getType() == IQ.Type.result) {
List items = packet.getChildElement().elements("item");
List<Element> items = packet.getChildElement().elements("item");
// Send a disco#info to each discovered item
for (Iterator it=items.iterator(); it.hasNext(); ) {
Element item = (Element) it.next();
for (Element item : items) {
String jid = item.attributeValue("jid");
IQ disco = new IQ(IQ.Type.get);
......
......@@ -21,6 +21,7 @@
package org.jivesoftware.xmpp.workgroup.dispatcher;
import org.jivesoftware.xmpp.workgroup.DbProperties;
import org.jivesoftware.xmpp.workgroup.Offer;
import org.jivesoftware.xmpp.workgroup.RequestQueue;
import org.jivesoftware.xmpp.workgroup.UnauthorizedException;
import org.jivesoftware.xmpp.workgroup.WorkgroupResultFilter;
......@@ -69,7 +70,7 @@ public interface Dispatcher extends DbProperties {
*
* @return An iterator over Offers currently being made
*/
Iterator getOffers();
Iterator<Offer> getOffers();
/**
* <p>Obtain an iterator over the offers currently outstanding with results filtered by given filter.</p>
......@@ -77,7 +78,7 @@ public interface Dispatcher extends DbProperties {
* @param filter The filter to apply to the search results
* @return An iterator over Offers currently being made
*/
Iterator getOffers(WorkgroupResultFilter filter);
Iterator<Offer> getOffers(WorkgroupResultFilter filter);
/**
* Returns the algorithm that selects the best agent of the queue for receiving an offer.
......
......@@ -35,7 +35,6 @@ import org.jivesoftware.util.BeanUtils;
import org.jivesoftware.util.ClassUtils;
import org.jivesoftware.util.ConcurrentHashSet;
import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.NotFoundException;
import org.jivesoftware.xmpp.workgroup.AgentSession;
import org.jivesoftware.xmpp.workgroup.AgentSessionList;
......@@ -49,6 +48,8 @@ import org.jivesoftware.xmpp.workgroup.request.Request;
import org.jivesoftware.xmpp.workgroup.request.UserRequest;
import org.jivesoftware.xmpp.workgroup.spi.JiveLiveProperties;
import org.jivesoftware.xmpp.workgroup.spi.dispatcher.DbDispatcherInfoProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* <p>Implements simple round robin dispatching of offers to agents.</p>
......@@ -59,6 +60,9 @@ import org.jivesoftware.xmpp.workgroup.spi.dispatcher.DbDispatcherInfoProvider;
* @author Iain Shigeoka
*/
public class RoundRobinDispatcher implements Dispatcher, AgentSessionListener {
private static final Logger Log = LoggerFactory.getLogger(RoundRobinDispatcher.class);
/**
* <p>The circular list of agents in the pool.</p>
*/
......@@ -232,7 +236,7 @@ public class RoundRobinDispatcher implements Dispatcher, AgentSessionListener {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -486,10 +490,10 @@ public class RoundRobinDispatcher implements Dispatcher, AgentSessionListener {
this.info = info;
}
catch (NotFoundException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
catch (UnsupportedOperationException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -497,11 +501,11 @@ public class RoundRobinDispatcher implements Dispatcher, AgentSessionListener {
return offers.size();
}
public Iterator getOffers() {
public Iterator<Offer> getOffers() {
return offers.iterator();
}
public Iterator getOffers(WorkgroupResultFilter filter) {
public Iterator<Offer> getOffers(WorkgroupResultFilter filter) {
return filter.filter(offers.iterator());
}
......@@ -536,7 +540,7 @@ public class RoundRobinDispatcher implements Dispatcher, AgentSessionListener {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
// Save the agentSelectoras a property of the dispatcher
try {
......@@ -546,7 +550,7 @@ public class RoundRobinDispatcher implements Dispatcher, AgentSessionListener {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -594,7 +598,7 @@ public class RoundRobinDispatcher implements Dispatcher, AgentSessionListener {
BeanUtils.setProperties(agentSelector, agentSelectorProps);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......
......@@ -23,9 +23,10 @@ package org.jivesoftware.xmpp.workgroup.event;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.AgentSession;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Dispatches workgroup events. Since the dispatching is done on the "main" thread
......@@ -36,6 +37,8 @@ import org.jivesoftware.xmpp.workgroup.Workgroup;
*/
public class WorkgroupEventDispatcher {
private static final Logger Log = LoggerFactory.getLogger(WorkgroupEventDispatcher.class);
private static List<WorkgroupEventListener> listeners =
new CopyOnWriteArrayList<WorkgroupEventListener>();
......@@ -75,7 +78,7 @@ public class WorkgroupEventDispatcher {
listener.workgroupCreated(workgroup);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -91,7 +94,7 @@ public class WorkgroupEventDispatcher {
listener.workgroupDeleting(workgroup);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -107,7 +110,7 @@ public class WorkgroupEventDispatcher {
listener.workgroupDeleted(workgroup);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -124,7 +127,7 @@ public class WorkgroupEventDispatcher {
listener.workgroupOpened(workgroup);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -141,7 +144,7 @@ public class WorkgroupEventDispatcher {
listener.workgroupClosed(workgroup);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -158,7 +161,7 @@ public class WorkgroupEventDispatcher {
listener.agentJoined(workgroup, agentSession);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -175,7 +178,7 @@ public class WorkgroupEventDispatcher {
listener.agentDeparted(workgroup, agentSession);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -192,7 +195,7 @@ public class WorkgroupEventDispatcher {
listener.chatSupportStarted(workgroup, sessionID);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -209,7 +212,7 @@ public class WorkgroupEventDispatcher {
listener.chatSupportFinished(workgroup, sessionID);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -231,7 +234,7 @@ public class WorkgroupEventDispatcher {
listener.agentJoinedChatSupport(workgroup, sessionID, agentSession);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -250,7 +253,7 @@ public class WorkgroupEventDispatcher {
listener.agentLeftChatSupport(workgroup, sessionID, agentSession);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......
......@@ -20,20 +20,27 @@
package org.jivesoftware.xmpp.workgroup.interceptor;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.jivesoftware.util.JiveGlobals;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.util.BeanUtils;
import org.jivesoftware.util.ClassUtils;
import org.jivesoftware.util.Log;
import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.JID;
import org.xmpp.packet.Packet;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* Base class for fastpath packet interceptors.
*
......@@ -41,6 +48,8 @@ import java.util.concurrent.CopyOnWriteArrayList;
*/
public abstract class InterceptorManager {
private static final Logger Log = LoggerFactory.getLogger(InterceptorManager.class);
private List<PacketInterceptor> availableInterceptors =
new CopyOnWriteArrayList<PacketInterceptor>();
......@@ -195,7 +204,7 @@ public abstract class InterceptorManager {
* @return true if the item was present in the list
*/
public boolean removeInterceptor(String workgroup, PacketInterceptor interceptor) {
List interceptors = getLocalInterceptors(workgroup);
List<PacketInterceptor> interceptors = getLocalInterceptors(workgroup);
if (interceptors == null) {
return false;
}
......@@ -284,7 +293,7 @@ public abstract class InterceptorManager {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -305,14 +314,14 @@ public abstract class InterceptorManager {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
private Map getPropertiesMap(List<PacketInterceptor> interceptors, String context) {
private Map<String, String> getPropertiesMap(List<PacketInterceptor> interceptors, String context) {
// Build the properties map that will be saved later
Map propertyMap = new HashMap();
Map<String, String> propertyMap = new HashMap<String, String>();
if (!interceptors.isEmpty()) {
propertyMap.put(context + "interceptorCount", String.valueOf(interceptors.size()));
......@@ -327,10 +336,10 @@ public abstract class InterceptorManager {
propertyMap.put(interceptorContext + "className", interceptor.getClass().getName());
// Write out all properties
Map interceptorProps = BeanUtils.getProperties(interceptor);
for (Iterator iter=interceptorProps.keySet().iterator(); iter.hasNext(); ) {
String name = (String) iter.next();
String value = (String) interceptorProps.get(name);
Map<String, String> interceptorProps = BeanUtils.getProperties(interceptor);
for (Map.Entry<String, String> entry : interceptorProps.entrySet()) {
String name = entry.getKey();
String value = entry.getValue();
if (value != null && !"".equals(value)) {
propertyMap.put(interceptorContext + "properties." + name, value);
}
......@@ -416,11 +425,11 @@ public abstract class InterceptorManager {
}
// Now get custom interceptors.
List classNames = JiveGlobals.getProperties("interceptor.interceptorClasses." +
List<String> classNames = JiveGlobals.getProperties("interceptor.interceptorClasses." +
getPropertySuffix());
for (int i=0; i<classNames.size(); i++) {
install_interceptor: try {
Class interceptorClass = loadClass((String)classNames.get(i));
Class interceptorClass = loadClass(classNames.get(i));
// Make sure that the interceptor isn't already installed.
for (int j=0; j<interceptorList.size(); j++) {
if (interceptorClass.equals(interceptorList.get(j).getClass())) {
......@@ -431,7 +440,7 @@ public abstract class InterceptorManager {
interceptorList.add(interceptor);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -454,12 +463,12 @@ public abstract class InterceptorManager {
interceptorList.add((PacketInterceptor) interceptorClass.newInstance());
// Load properties.
List props = JiveGlobals.getPropertyNames(interceptorContext + "properties");
Map interceptorProps = new HashMap();
List<String> props = JiveGlobals.getPropertyNames(interceptorContext + "properties");
Map<String, String> interceptorProps = new HashMap<String, String>();
for (int k = 0; k < props.size(); k++) {
String key = (String)props.get(k);
String value = JiveGlobals.getProperty((String)props.get(k));
String key = props.get(k);
String value = JiveGlobals.getProperty(props.get(k));
// Get the bean property name, which is everything after the last '.' in the
// xml property name.
interceptorProps.put(key.substring(key.lastIndexOf(".")+1), value);
......@@ -499,7 +508,7 @@ public abstract class InterceptorManager {
interceptorList.add((PacketInterceptor) interceptorClass.newInstance());
// Load properties.
Map interceptorProps = new HashMap();
Map<String, String> interceptorProps = new HashMap<String, String>();
for (String key : getChildrenPropertyNames(interceptorContext + "properties",
workgroup.getProperties().getPropertyNames()))
{
......@@ -556,7 +565,7 @@ public abstract class InterceptorManager {
interceptors = localInterceptors.get(workgroup);
}
catch (UserNotFoundException e) {
Log.warn(e);
Log.warn(e.getMessage(), e);
}
}
}
......
......@@ -23,7 +23,8 @@ package org.jivesoftware.xmpp.workgroup.interceptor;
import java.util.Arrays;
import java.util.Collection;
import org.jivesoftware.util.Log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.Packet;
/**
......@@ -35,6 +36,8 @@ import org.xmpp.packet.Packet;
*/
public class RoomInterceptorManager extends InterceptorManager {
private static final Logger Log = LoggerFactory.getLogger(RoomInterceptorManager.class);
private static RoomInterceptorManager instance = new RoomInterceptorManager();
/**
......
......@@ -20,6 +20,12 @@
package org.jivesoftware.xmpp.workgroup.request;
import java.util.Arrays;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.QName;
import org.jivesoftware.util.NotFoundException;
import org.jivesoftware.xmpp.workgroup.AgentNotFoundException;
import org.jivesoftware.xmpp.workgroup.AgentSession;
import org.jivesoftware.xmpp.workgroup.RequestQueue;
......@@ -27,25 +33,23 @@ import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.jivesoftware.xmpp.workgroup.interceptor.RoomInterceptorManager;
import org.jivesoftware.xmpp.workgroup.routing.RoutingManager;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.QName;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.NotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.muc.Invitation;
import org.xmpp.packet.IQ;
import org.xmpp.packet.JID;
import org.xmpp.packet.Message;
import org.xmpp.packet.PacketError;
import java.util.Arrays;
/**
* Request sent by an agent to invite another agent or user.
*
* @author Gaston Dombiak
*/
public class InvitationRequest extends Request {
private static final Logger Log = LoggerFactory.getLogger(InvitationRequest.class);
/**
* Time limit to wait for the invitee to join the support room. The limit is verified once the agent
* accepted the offer or a MUC invitation was sent to the user.
......
......@@ -33,7 +33,6 @@ import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.QName;
import org.jivesoftware.database.SequenceManager;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.NotFoundException;
import org.jivesoftware.util.StringUtils;
import org.jivesoftware.xmpp.workgroup.AgentSession;
......@@ -41,6 +40,8 @@ import org.jivesoftware.xmpp.workgroup.Offer;
import org.jivesoftware.xmpp.workgroup.RequestQueue;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.utils.FastpathConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.JID;
......@@ -51,6 +52,8 @@ import org.xmpp.packet.JID;
*/
public abstract class Request {
private static final Logger Log = LoggerFactory.getLogger(Request.class);
private static final Map<String, Request> requests = new ConcurrentHashMap<String, Request>();
protected final String requestID;
......
......@@ -20,6 +20,12 @@
package org.jivesoftware.xmpp.workgroup.request;
import java.util.Arrays;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.QName;
import org.jivesoftware.util.NotFoundException;
import org.jivesoftware.xmpp.workgroup.AgentNotFoundException;
import org.jivesoftware.xmpp.workgroup.AgentSession;
import org.jivesoftware.xmpp.workgroup.RequestQueue;
......@@ -27,25 +33,23 @@ import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.jivesoftware.xmpp.workgroup.interceptor.RoomInterceptorManager;
import org.jivesoftware.xmpp.workgroup.routing.RoutingManager;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.QName;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.NotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.muc.Invitation;
import org.xmpp.packet.IQ;
import org.xmpp.packet.JID;
import org.xmpp.packet.Message;
import org.xmpp.packet.PacketError;
import java.util.Arrays;
/**
* Request sent by an agent to transfer a session support to another agent.
*
* @author Gaston Dombiak
*/
public class TransferRequest extends Request {
private static final Logger Log = LoggerFactory.getLogger(TransferRequest.class);
/**
* Time limit to wait for the invitee to join the support room. The limit is verified once the agent
* accepted the offer or a MUC invitation was sent to the user.
......
......@@ -35,7 +35,6 @@ import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.QName;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.NotFoundException;
import org.jivesoftware.util.StringUtils;
import org.jivesoftware.xmpp.workgroup.AgentSession;
......@@ -44,6 +43,8 @@ import org.jivesoftware.xmpp.workgroup.UserCommunicationMethod;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.chatbot.ChatbotSession;
import org.jivesoftware.xmpp.workgroup.spi.WorkgroupCompatibleClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.forms.DataForm;
import org.xmpp.forms.FormField;
import org.xmpp.packet.IQ;
......@@ -56,6 +57,8 @@ import org.xmpp.packet.JID;
*/
public class UserRequest extends Request {
private static final Logger Log = LoggerFactory.getLogger(UserRequest.class);
private static final String INSERT_SESSION =
"INSERT INTO fpSession(sessionID, userID, workgroupID, state, queueWaitTime, " +
"startTime, endTime) values(?,?,?,?,?,?,?)";
......@@ -131,9 +134,9 @@ public class UserRequest extends Request {
// compatible client
this.communicationMethod = WorkgroupCompatibleClient.getInstance();
Iterator elementIter = packet.getChildElement().elementIterator();
Iterator<Element> elementIter = packet.getChildElement().elementIterator();
while (elementIter.hasNext()) {
Element element = (Element)elementIter.next();
Element element = elementIter.next();
if ("queue-notifications".equals(element.getName())) {
setNotify(true);
}
......@@ -145,8 +148,8 @@ public class UserRequest extends Request {
}
}
else if ("metadata".equals(element.getName())) {
for (Iterator i = element.elementIterator(); i.hasNext();) {
Element item = (Element)i.next();
for (Iterator<Element> i = element.elementIterator(); i.hasNext();) {
Element item = i.next();
if ("value".equals(item.getName())) {
String name = item.attributeValue("name");
if (name != null) {
......@@ -207,7 +210,7 @@ public class UserRequest extends Request {
communicationMethod.notifyQueueStatus(workgroup.getJID(), userJID, this, isPolling);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -387,7 +390,7 @@ public class UserRequest extends Request {
communicationMethod.notifyQueueDepartued(sender, userJID, this, type);
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -497,7 +500,7 @@ public class UserRequest extends Request {
pstmt.close();
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(con);
......
......@@ -20,20 +20,24 @@
package org.jivesoftware.xmpp.workgroup.routing;
import org.jivesoftware.xmpp.workgroup.RequestQueue;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.request.UserRequest;
import org.jivesoftware.xmpp.workgroup.spi.routers.WordMatchRouter;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.NotFoundException;
import org.xmpp.component.ComponentManagerFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.NotFoundException;
import org.jivesoftware.xmpp.workgroup.RequestQueue;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.request.UserRequest;
import org.jivesoftware.xmpp.workgroup.spi.routers.WordMatchRouter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Provides a registration and event processing for all <code>RequestRouter</code>s.
......@@ -42,6 +46,8 @@ import java.util.*;
*/
public final class RoutingManager {
private static final Logger Log = LoggerFactory.getLogger(RoutingManager.class);
private static final String ADD_ROUTING_RULE =
"INSERT INTO fpRouteRule (workgroupID, queueID, rulePosition, query) VALUES (?,?,?,?)";
private static final String DELETE_ROUTING_RULE =
......@@ -92,7 +98,7 @@ public final class RoutingManager {
return workgroup.getRequestQueue(rule.getQueueID());
}
catch (NotFoundException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -143,7 +149,7 @@ public final class RoutingManager {
pstmt.executeUpdate();
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -171,7 +177,7 @@ public final class RoutingManager {
pstmt.execute();
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -197,7 +203,7 @@ public final class RoutingManager {
pstmt.executeUpdate();
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -231,7 +237,7 @@ public final class RoutingManager {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......
......@@ -20,19 +20,16 @@
package org.jivesoftware.xmpp.workgroup.search;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.apache.lucene.document.DateField;
import org.apache.lucene.document.Document;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.StringUtils;
import org.xmpp.component.ComponentManagerFactory;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.xmpp.packet.JID;
import java.util.*;
/**
* Encapsulates a search for transcripts in a workgroup. Use the public constructor
* {@link #ChatSearch(Workgroup, Date, Date, JID, String)} to create a search where
......@@ -72,7 +69,7 @@ import java.util.*;
*/
public class ChatSearch {
private static final int MAX_RESULTS_SIZE;
// private static final int MAX_RESULTS_SIZE;
/**
* Indicates whether wildcards should be enabled or ignored in searches.
*/
......@@ -89,19 +86,19 @@ public class ChatSearch {
private transient List<QueryResult> results = new ArrayList<QueryResult>();
static {
// Load a custom max results size value from the Jive property file or
// default to 500.
int maxSize = 500;
String maxResultsSize = JiveGlobals.getProperty("workgroup.search.maxResultsSize");
if (maxResultsSize != null) {
try {
maxSize = Integer.parseInt(maxResultsSize);
}
catch (NumberFormatException nfe) {
// Ignore.
}
}
MAX_RESULTS_SIZE = maxSize;
// // Load a custom max results size value from the Jive property file or
// // default to 500.
// int maxSize = 500;
// String maxResultsSize = JiveGlobals.getProperty("workgroup.search.maxResultsSize");
// if (maxResultsSize != null) {
// try {
// maxSize = Integer.parseInt(maxResultsSize);
// }
// catch (NumberFormatException nfe) {
// // Ignore.
// }
// }
// MAX_RESULTS_SIZE = maxSize;
// Determine if wildcards should be ignored
wildcardIgnored = JiveGlobals.getBooleanProperty("workgroup.search.wildcardIgnored");
}
......@@ -320,7 +317,7 @@ public class ChatSearch {
results.add(result);
}
catch (NumberFormatException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -332,7 +329,7 @@ public class ChatSearch {
results.clear();
}
catch(Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
results.clear();
}
finally {
......@@ -351,9 +348,9 @@ public class ChatSearch {
return string.indexOf('?') != -1 || string.indexOf('*') != -1 || string.indexOf('~') != -1;
}
private String escapeBadCharacters(String queryString) {
return StringUtils.replace(queryString, ":", "\\:");
}
// private String escapeBadCharacters(String queryString) {
// return StringUtils.replace(queryString, ":", "\\:");
// }
private String lowerCaseQueryString(String queryString) {
char[] chars = queryString.toCharArray();
......
......@@ -57,12 +57,13 @@ import org.jivesoftware.openfire.fastpath.providers.ChatNotes;
import org.jivesoftware.openfire.fastpath.util.TaskEngine;
import org.jivesoftware.util.ClassUtils;
import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.StringUtils;
import org.jivesoftware.xmpp.workgroup.AgentSession;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.event.WorkgroupEventDispatcher;
import org.jivesoftware.xmpp.workgroup.event.WorkgroupEventListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.JID;
/**
......@@ -118,6 +119,8 @@ import org.xmpp.packet.JID;
*/
public class ChatSearchManager implements WorkgroupEventListener {
private static final Logger Log = LoggerFactory.getLogger(ChatSearchManager.class);
private static final String CHATS_SINCE_DATE =
"SELECT sessionID,transcript,startTime FROM fpSession WHERE workgroupID=? AND " +
"startTime>? AND transcript IS NOT NULL ORDER BY startTime";
......@@ -326,7 +329,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
// get stop word list is there was one
List stopWords = new ArrayList();
List<String> stopWords = new ArrayList<String>();
if (words != null) {
StringTokenizer st = new StringTokenizer(words, ",");
while (st.hasMoreTokens()) {
......@@ -342,7 +345,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
// If the analyzer is null, use the standard analyzer.
if (analyzer == null && stopWords.size() > 0) {
analyzer = new StandardAnalyzer((String[])stopWords.toArray(new String[stopWords.size()]));
analyzer = new StandardAnalyzer(stopWords.toArray(new String[stopWords.size()]));
}
else if (analyzer == null) {
analyzer = new StandardAnalyzer();
......@@ -351,7 +354,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
indexerAnalyzer = analyzer;
}
private Analyzer getAnalyzerInstance(String analyzerClass, List stopWords) throws Exception {
private Analyzer getAnalyzerInstance(String analyzerClass, List<String> stopWords) throws Exception {
Analyzer analyzer = null;
// Load the class.
Class c = null;
......@@ -397,7 +400,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
try {
......@@ -406,7 +409,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
try {
......@@ -415,7 +418,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
try {
if (con != null) {
......@@ -423,7 +426,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -644,7 +647,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
// Reset the answer if an error happened
chats = new ArrayList<ChatInformation>();
......@@ -656,7 +659,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
......@@ -666,7 +669,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
try {
......@@ -675,7 +678,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
try {
......@@ -684,7 +687,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
// Return the chats order by startTime
......@@ -733,7 +736,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
// Reset the lastDate if an error happened
lastDate = null;
}
......@@ -744,7 +747,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
DbConnectionManager.closeConnection(pstmt, con);
......@@ -780,7 +783,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
if (result != null) {
......@@ -788,7 +791,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
result.close();
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
......@@ -822,7 +825,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
try {
......@@ -831,7 +834,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
try {
if (con != null) {
......@@ -839,7 +842,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -857,7 +860,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
pstmt.executeUpdate();
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
try {
......@@ -866,7 +869,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
try {
if (con != null) {
......@@ -874,7 +877,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
......@@ -885,8 +888,8 @@ public class ChatSearchManager implements WorkgroupEventListener {
boolean hasMessages = false;
Document document = new Document();
for (Iterator elements = chat.getTranscript().elementIterator(); elements.hasNext();) {
Element element = (Element)elements.next();
for (Iterator<Element> elements = chat.getTranscript().elementIterator(); elements.hasNext();) {
Element element = elements.next();
// Only add Messages to the index (Presences are discarded)
if ("message".equals(element.getName())) {
// TODO Index XHTML bodies?
......@@ -1007,7 +1010,7 @@ public class ChatSearchManager implements WorkgroupEventListener {
updateIndex(true);
}
catch (IOException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
});
......
......@@ -35,10 +35,11 @@ import java.util.Map;
import org.dom4j.Element;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.AgentNotFoundException;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.forms.DataForm;
import org.xmpp.forms.FormField;
import org.xmpp.packet.IQ;
......@@ -55,6 +56,8 @@ import org.xmpp.packet.PacketError;
*/
public class IQChatSearchHandler {
private static final Logger Log = LoggerFactory.getLogger(IQChatSearchHandler.class);
private static final String LOAD_META_DATA =
"SELECT metadataName, metadataValue FROM fpSessionMetadata WHERE sessionID=?";
......@@ -155,7 +158,7 @@ public class IQChatSearchHandler {
fields.put("relevance", result.getRelevance());
// Add Metadata
Map metadata = getMetadataMap(result.getSessionID());
Map<String, String> metadata = getMetadataMap(result.getSessionID());
if (metadata.containsKey("question")) {
fields.put("question", metadata.get("question"));
}
......@@ -242,7 +245,7 @@ public class IQChatSearchHandler {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......
......@@ -11,11 +11,12 @@ import java.util.List;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.StringUtils;
import org.jivesoftware.xmpp.workgroup.RequestQueue;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.WorkgroupManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.JID;
......@@ -27,6 +28,8 @@ import org.xmpp.packet.JID;
*/
public final class ChatHistoryUtils {
private static final Logger Log = LoggerFactory.getLogger(ChatHistoryUtils.class);
private static final String ALL_SESSION_TIMES =
"SELECT startTime, endTime FROM fpSession";
private static final String ACCEPTED_CHATS_COUNT =
......@@ -103,15 +106,15 @@ public final class ChatHistoryUtils {
}
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
catch (NumberFormatException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -134,7 +137,7 @@ public final class ChatHistoryUtils {
workgroup = WorkgroupManager.getInstance().getWorkgroup(new JID(workgroupName));
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
if (workgroup == null) {
return 0;
......@@ -157,7 +160,7 @@ public final class ChatHistoryUtils {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -179,7 +182,7 @@ public final class ChatHistoryUtils {
workgroup = WorkgroupManager.getInstance().getWorkgroup(new JID(workgroupName));
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
int totalWorkgroupChatTime = 0;
......@@ -206,7 +209,7 @@ public final class ChatHistoryUtils {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -247,7 +250,7 @@ public final class ChatHistoryUtils {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -270,7 +273,7 @@ public final class ChatHistoryUtils {
workgroup = WorkgroupManager.getInstance().getWorkgroup(new JID(workgroupName));
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
if (workgroup == null) {
return 0;
......@@ -295,7 +298,7 @@ public final class ChatHistoryUtils {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -323,7 +326,7 @@ public final class ChatHistoryUtils {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -345,7 +348,7 @@ public final class ChatHistoryUtils {
workgroup = WorkgroupManager.getInstance().getWorkgroup(new JID(workgroupName));
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
if (workgroup == null) {
return 0;
......@@ -370,7 +373,7 @@ public final class ChatHistoryUtils {
}
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -392,7 +395,7 @@ public final class ChatHistoryUtils {
workgroup = WorkgroupManager.getInstance().getWorkgroup(new JID(workgroupName));
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
int count = 0;
......@@ -457,7 +460,7 @@ public final class ChatHistoryUtils {
count = rs.getInt(1);
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -483,7 +486,7 @@ public final class ChatHistoryUtils {
count = rs.getInt(1);
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -509,7 +512,7 @@ public final class ChatHistoryUtils {
totalWaitTime = rs.getInt(1);
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -531,7 +534,7 @@ public final class ChatHistoryUtils {
workgroup = WorkgroupManager.getInstance().getWorkgroup(new JID(workgroupName));
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
if (workgroup == null) {
return 0;
......@@ -555,7 +558,7 @@ public final class ChatHistoryUtils {
waitTime = rs.getInt(1);
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......
......@@ -19,19 +19,20 @@
*/
package org.jivesoftware.xmpp.workgroup.spi;
import org.jivesoftware.xmpp.workgroup.DbProperties;
import org.jivesoftware.xmpp.workgroup.UnauthorizedException;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.Log;
import org.xmpp.component.ComponentManagerFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.xmpp.workgroup.DbProperties;
import org.jivesoftware.xmpp.workgroup.UnauthorizedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Generic implementation of entity property manager will work against any standard
* jiveXProp table. Several entities require property management. This class will
......@@ -41,6 +42,8 @@ import java.util.concurrent.ConcurrentHashMap;
*/
public class JiveLiveProperties implements DbProperties {
private static final Logger Log = LoggerFactory.getLogger(JiveLiveProperties.class);
private long id;
private Map<String, String> properties = new ConcurrentHashMap<String, String>();
private String tableName;
......@@ -82,7 +85,7 @@ public class JiveLiveProperties implements DbProperties {
properties.remove(name);
}
catch (SQLException ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -108,7 +111,7 @@ public class JiveLiveProperties implements DbProperties {
}
}
catch (SQLException ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(rs, pstmt, con);
......@@ -127,7 +130,7 @@ public class JiveLiveProperties implements DbProperties {
pstmt.executeUpdate();
}
catch (SQLException e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -146,7 +149,7 @@ public class JiveLiveProperties implements DbProperties {
pstmt.executeUpdate();
}
catch (SQLException ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......
......@@ -20,21 +20,22 @@
package org.jivesoftware.xmpp.workgroup.spi.dispatcher;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.LocaleUtils;
import org.jivesoftware.util.NotFoundException;
import org.jivesoftware.xmpp.workgroup.UnauthorizedException;
import org.jivesoftware.xmpp.workgroup.UserAlreadyExistsException;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.dispatcher.BasicDispatcherInfo;
import org.jivesoftware.xmpp.workgroup.dispatcher.DispatcherInfo;
import org.jivesoftware.xmpp.workgroup.dispatcher.DispatcherInfoProvider;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.LocaleUtils;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.NotFoundException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* <p>The Jive default implementation of dispatch info provider relying on any standard
......@@ -44,6 +45,8 @@ import java.sql.SQLException;
*/
public class DbDispatcherInfoProvider implements DispatcherInfoProvider {
private static final Logger Log = LoggerFactory.getLogger(DbDispatcherInfoProvider.class);
private static final String INSERT_DISPATCHER =
"INSERT INTO fpDispatcher (name, description, offerTimeout, requestTimeout, queueID) VALUES (?,?,?,?,?)";
private static final String LOAD_DISPATCHER_BY_ID =
......
......@@ -22,12 +22,13 @@ package org.jivesoftware.xmpp.workgroup.spi.routers;
import java.util.List;
import java.util.Map;
import org.jivesoftware.util.Log;
import org.jivesoftware.xmpp.workgroup.DbProperties;
import org.jivesoftware.xmpp.workgroup.RequestQueue;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.request.UserRequest;
import org.jivesoftware.xmpp.workgroup.routing.RequestRouter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* <p>Routes requests to the queue with the most matching meta-data.</p>
......@@ -36,6 +37,8 @@ import org.jivesoftware.xmpp.workgroup.routing.RequestRouter;
*/
public class MetaDataRouter extends RequestRouter {
private static final Logger Log = LoggerFactory.getLogger(MetaDataRouter.class);
public MetaDataRouter() {
}
......@@ -140,7 +143,7 @@ public class MetaDataRouter extends RequestRouter {
}
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
return currentMatch;
}
......
......@@ -20,24 +20,33 @@
package org.jivesoftware.xmpp.workgroup.spi.routers;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.request.Request;
import org.jivesoftware.xmpp.workgroup.request.UserRequest;
import org.jivesoftware.xmpp.workgroup.routing.RequestRouter;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.apache.lucene.analysis.*;
import java.io.Reader;
import java.util.List;
import java.util.Map;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.LowerCaseTokenizer;
import org.apache.lucene.analysis.PorterStemFilter;
import org.apache.lucene.analysis.StopFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.*;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.store.RAMDirectory;
import org.jivesoftware.util.Log;
import java.io.Reader;
import java.util.List;
import java.util.Map;
import org.jivesoftware.xmpp.workgroup.Workgroup;
import org.jivesoftware.xmpp.workgroup.request.Request;
import org.jivesoftware.xmpp.workgroup.request.UserRequest;
import org.jivesoftware.xmpp.workgroup.routing.RequestRouter;
import org.jivesoftware.xmpp.workgroup.utils.ModelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* The WordMatcheRouter using Lucense index to search individual metadata as specified
......@@ -45,6 +54,8 @@ import java.util.Map;
*/
public class WordMatchRouter extends RequestRouter {
private static final Logger Log = LoggerFactory.getLogger(WordMatchRouter.class);
private boolean stemmingEnabled;
private Analyzer analyzer;
......@@ -163,7 +174,7 @@ public class WordMatchRouter extends RequestRouter {
searcher.close();
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
return foundMatch;
......
......@@ -25,14 +25,17 @@ import java.sql.PreparedStatement;
import java.util.Date;
import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.Log;
import org.jivesoftware.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Handles basic DB Operations.
*/
public class DbWorkgroup {
private static final Logger Log = LoggerFactory.getLogger(DbWorkgroup.class);
private static final String UPDATE_TRANSCRIPT =
"UPDATE fpSession SET transcript=?, endTime=? WHERE sessionID=?";
private static final String INSERT_AGENT_SESSION =
......@@ -64,7 +67,7 @@ public class DbWorkgroup {
pstmt.executeUpdate();
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......@@ -101,7 +104,7 @@ public class DbWorkgroup {
pstmt.executeUpdate();
}
catch (Exception ex) {
Log.error(ex);
Log.error(ex.getMessage(), ex);
}
finally {
DbConnectionManager.closeConnection(pstmt, con);
......
......@@ -27,6 +27,7 @@ import java.util.*;
* classes.
*/
public final class ModelUtil {
private ModelUtil() {
// Prevents instantiation.
}
......@@ -244,8 +245,8 @@ public final class ModelUtil {
final long MS_IN_AN_HOUR = 1000 * 60 * 60;
final long MS_IN_A_MINUTE = 1000 * 60;
final long MS_IN_A_SECOND = 1000;
Date currentTime = new Date();
long numDays = diff / MS_IN_A_DAY;
//Date currentTime = new Date();
//long numDays = diff / MS_IN_A_DAY;
diff = diff % MS_IN_A_DAY;
long numHours = diff / MS_IN_AN_HOUR;
diff = diff % MS_IN_AN_HOUR;
......@@ -253,7 +254,7 @@ public final class ModelUtil {
diff = diff % MS_IN_A_MINUTE;
long numSeconds = diff / MS_IN_A_SECOND;
diff = diff % MS_IN_A_SECOND;
long numMilliseconds = diff;
//long numMilliseconds = diff;
StringBuilder buf = new StringBuilder();
if (numHours > 0) {
......@@ -274,8 +275,8 @@ public final class ModelUtil {
/**
* Build a List of all elements in an Iterator.
*/
public static List iteratorAsList(Iterator i) {
ArrayList list = new ArrayList(10);
public static <E> List<E> iteratorAsList(Iterator<E> i) {
ArrayList<E> list = new ArrayList<E>(10);
while (i.hasNext()) {
list.add(i.next());
}
......@@ -285,18 +286,18 @@ public final class ModelUtil {
/**
* Creates an Iterator that is the reverse of a ListIterator.
*/
public static Iterator reverseListIterator(ListIterator i) {
return new ReverseListIterator(i);
public static <E> Iterator<E> reverseListIterator(ListIterator<E> i) {
return new ReverseListIterator<E>(i);
}
}
/**
* An Iterator that is the reverse of a ListIterator.
*/
class ReverseListIterator implements Iterator {
private ListIterator _i;
class ReverseListIterator<E> implements Iterator<E> {
private ListIterator<E> _i;
ReverseListIterator(ListIterator i) {
ReverseListIterator(ListIterator<E> i) {
_i = i;
while (_i.hasNext())
_i.next();
......@@ -306,7 +307,7 @@ class ReverseListIterator implements Iterator {
return _i.hasPrevious();
}
public Object next() {
public E next() {
return _i.previous();
}
......
......@@ -20,7 +20,11 @@
package org.jivesoftware.xmpp.workgroup.utils;
import org.jivesoftware.util.Log;
import java.rmi.server.UID;
import java.util.Date;
import java.util.Properties;
import java.util.StringTokenizer;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
......@@ -32,12 +36,13 @@ import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.rmi.server.UID;
import java.util.Date;
import java.util.Properties;
import java.util.StringTokenizer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SendMail {
private static final Logger Log = LoggerFactory.getLogger(SendMail.class);
private String toField;
private String subjectField;
private String messageText;
......
......@@ -29,7 +29,8 @@ import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLConnection;
import org.jivesoftware.util.Log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* <code>URLFileSystem</code> class handles some of the most common
......@@ -39,6 +40,9 @@ import org.jivesoftware.util.Log;
*/
public class URLFileSystem {
private static final Logger Log = LoggerFactory.getLogger(URLFileSystem.class);
public static void main(String args[]) {
}
......@@ -469,7 +473,7 @@ public class URLFileSystem {
return seed;
}
catch (Exception e) {
Log.error(e);
Log.error(e.getMessage(), e);
return null;
}
}
......
......@@ -19,9 +19,6 @@
*/
package org.jivesoftware.xmpp.workgroup.utils;
import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.Log;
import java.beans.BeanDescriptor;
import java.beans.BeanInfo;
import java.beans.EventSetDescriptor;
......@@ -35,12 +32,18 @@ import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import org.jivesoftware.util.JiveGlobals;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public abstract class WorkgroupBeanInfo implements BeanInfo {
private static final Logger Log = LoggerFactory.getLogger(WorkgroupBeanInfo.class);
private ResourceBundle bundle;
public WorkgroupBeanInfo() {
List bundleNames = new ArrayList();
List<String> bundleNames = new ArrayList<String>();
String prefix = "bean_";
// fully qualified class name: bean_com.foo.MyClass.properties
bundleNames.add(prefix + getClass().toString());
......@@ -49,7 +52,7 @@ public abstract class WorkgroupBeanInfo implements BeanInfo {
//Get the locale that should be used, then load the resource bundle.
Locale currentLocale = JiveGlobals.getLocale();
for (int i = 0, n = bundleNames.size(); i < n; i++) {
String name = (String)bundleNames.get(i);
String name = bundleNames.get(i);
try {
// TODO - possibly use other class loaders?
bundle = ResourceBundle.getBundle(name, currentLocale);
......@@ -127,9 +130,9 @@ public abstract class WorkgroupBeanInfo implements BeanInfo {
catch (MissingResourceException ignored) {
}
// Add any other properties that are specified.
Enumeration e = bundle.getKeys();
Enumeration<String> e = bundle.getKeys();
while (e.hasMoreElements()) {
String key = (String)e.nextElement();
String key = e.nextElement();
try {
String value = bundle.getString(key);
if (value != null) {
......@@ -186,7 +189,7 @@ public abstract class WorkgroupBeanInfo implements BeanInfo {
return descriptors;
}
catch (IntrospectionException ie) {
Log.error(ie);
Log.error(ie.getMessage(), ie);
throw new Error(ie.toString());
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment