1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Revision$
3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Date$
4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Copyright 2003-2007 Jive Software.
6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * you may not use this file except in compliance with the License.
9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * You may obtain a copy of the License at
10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *     http://www.apache.org/licenses/LICENSE-2.0
12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Unless required by applicable law or agreed to in writing, software
14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distributed under the License is distributed on an "AS IS" BASIS,
15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * See the License for the specific language governing permissions and
17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * limitations under the License.
18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.jivesoftware.smackx.workgroup.packet;
21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.packet.IQ;
23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.packet.Packet;
24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.ArrayList;
26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.Collections;
27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.Iterator;
28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.List;
29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Represents the conversation transcript that occured in a group chat room between an Agent
32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * and a user that requested assistance. The transcript contains all the Messages that were sent
33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * to the room as well as the sent presences.
34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Gaston Dombiak
36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class Transcript extends IQ {
38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    private String sessionID;
39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    private List<Packet> packets;
40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    /**
42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * Creates a transcript request for the given sessionID.
43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     *
44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * @param sessionID the id of the session to get the conversation transcript.
45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     */
46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public Transcript(String sessionID) {
47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.sessionID = sessionID;
48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.packets = new ArrayList<Packet>();
49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    /**
52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * Creates a new transcript for the given sessionID and list of packets. The list of packets
53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * may include Messages and/or Presences.
54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     *
55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * @param sessionID the id of the session that generated this conversation transcript.
56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * @param packets the list of messages and presences send to the room.
57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     */
58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public Transcript(String sessionID, List<Packet> packets) {
59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.sessionID = sessionID;
60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.packets = packets;
61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    /**
64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * Returns id of the session that generated this conversation transcript. The sessionID is a
65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * value generated by the server when a new request is received.
66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     *
67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * @return id of the session that generated this conversation transcript.
68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     */
69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public String getSessionID() {
70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return sessionID;
71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
73d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    /**
74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * Returns the list of Messages and Presences that were sent to the room.
75d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     *
76d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * @return the list of Messages and Presences that were sent to the room.
77d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     */
78d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public List<Packet> getPackets() {
79d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return Collections.unmodifiableList(packets);
80d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
81d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
82d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public String getChildElementXML() {
83d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        StringBuilder buf = new StringBuilder();
84d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
85d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        buf.append("<transcript xmlns=\"http://jivesoftware.com/protocol/workgroup\" sessionID=\"")
86d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                .append(sessionID)
87d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                .append("\">");
88d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
89d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        for (Iterator<Packet> it=packets.iterator(); it.hasNext();) {
90d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            Packet packet = it.next();
91d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            buf.append(packet.toXML());
92d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
93d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
94d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        buf.append("</transcript>");
95d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
96d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return buf.toString();
97d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
98d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
99