/*
* 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;
}