/* * Copyright (C) 2004-2006 Jive Software. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jivesoftware.xmpp.workgroup.utils; import java.sql.Connection; import java.sql.PreparedStatement; import java.util.Date; import org.jivesoftware.database.DbConnectionManager; 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 = "INSERT INTO fpAgentSession(sessionID, agentJID, joinTime, leftTime) VALUES(?,?,?,?)"; private static final String UPDATE_AGENT_SESSION = "UPDATE fpAgentSession SET leftTime=? WHERE sessionID=? AND agentJID=?"; private DbWorkgroup() { // Empty Private Constructor for Utility class. } /** * Updates a chat transcript. * * @param sessionID the sessionID belonging to the chat transcript. * @param transcript the chat transcript (XML) * @param endTime the time the chat ended. */ public static void updateTranscript(String sessionID, String transcript, Date endTime) { Connection con = null; PreparedStatement pstmt = null; try { con = DbConnectionManager.getConnection(); pstmt = con.prepareStatement(UPDATE_TRANSCRIPT); DbConnectionManager.setLargeTextField(pstmt, 1, transcript); pstmt.setString(2, StringUtils.dateToMillis(endTime)); pstmt.setString(3, sessionID); pstmt.executeUpdate(); } catch (Exception e) { Log.error(e.getMessage(), e); } finally { DbConnectionManager.closeConnection(pstmt, con); } } /** * Updates the Joined Session. * * @param sessionID the sessionID. * @param agent the agent who joined. * @param joining true if they are joining, false if leaving. */ public static void updateJoinedSession(String sessionID, String agent, boolean joining) { Connection con = null; PreparedStatement pstmt = null; try { Date time = new Date(); con = DbConnectionManager.getConnection(); if (joining) { pstmt = con.prepareStatement(INSERT_AGENT_SESSION); pstmt.setString(1, sessionID); pstmt.setString(2, agent); pstmt.setString(3, StringUtils.dateToMillis(time)); pstmt.setString(4, ""); } else { pstmt = con.prepareStatement(UPDATE_AGENT_SESSION); pstmt.setString(1, StringUtils.dateToMillis(time)); pstmt.setString(2, sessionID); pstmt.setString(3, agent); } pstmt.executeUpdate(); } catch (Exception ex) { Log.error(ex.getMessage(), ex); } finally { DbConnectionManager.closeConnection(pstmt, con); } } }