/* * Copyright (C) 2004-2008 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.openfire.fastpath.history; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; /** * Represents the data model for one complete Chat Session in Fastpath. * * @author Derek DeMoro */ public class ChatSession { private String sessionID; private String userID; private long workgroupID; private String transcript; private long startTime; private long endTime; private List<AgentChatSession> agentList = new ArrayList<AgentChatSession>(); public Map<String, List<String>> getMetadata() { return metadata; } public void setMetadata(Map<String, List<String>> metadata) { this.metadata = metadata; } public void addAgent(AgentChatSession chatSession) { agentList.add(chatSession); } public Iterator<AgentChatSession> getAgents() { return agentList.iterator(); } public List<AgentChatSession> getAgentList() { return agentList; } private Map<String, List<String>> metadata; public String getSessionID() { return sessionID; } public void setSessionID(String sessionID) { this.sessionID = sessionID; } public String getTranscript() { return transcript; } public void setTranscript(String transcript) { this.transcript = transcript; } public int getState() { return state; } public void setState(int state) { this.state = state; } public long getWorkgroupID() { return workgroupID; } public void setWorkgroupID(long workgroupID) { this.workgroupID = workgroupID; } public String getUserID() { return userID; } public void setUserID(String userID) { this.userID = userID; } public long getStartTime() { return startTime; } public void setStartTime(long startTime) { this.startTime = startTime; } public long getEndTime() { return endTime; } public void setEndTime(long endTime) { this.endTime = endTime; } public long getQueueWaitTime() { return queueWaitTime; } public void setQueueWaitTime(long queueWaitTime) { this.queueWaitTime = queueWaitTime; } public String getCustomerName() { String name = metadata.get("username") == null || metadata.get("username").isEmpty() ? null : metadata.get("username").get(0); if (name == null || name.trim().length() == 0) { name = "Customer"; } return name; } public String getEmail() { String email = metadata.get("email") == null || metadata.get("email").isEmpty() ? null : metadata.get("email").get(0); if (email == null || email.trim().length() == 0) { email = "n/ae"; } return email; } public String getQuestion() { String question = metadata.get("question") == null || metadata.get("question").isEmpty() ? null : metadata.get("question").get(0); if (question == null || question.trim().length() == 0) { question = "n/a"; } return question; } public AgentChatSession getFirstSession() { long startTime = -1; AgentChatSession returnSession = null; Iterator<AgentChatSession> iter = getAgents(); while (iter.hasNext()) { AgentChatSession agent = iter.next(); if (agent.getStartTime() <= startTime || startTime == -1) { startTime = agent.getStartTime(); returnSession = agent; } } return returnSession; } long queueWaitTime; int state; }