/* * 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.xmpp.workgroup.search; import org.jivesoftware.xmpp.workgroup.Workgroup; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Date; import java.util.List; import java.util.Locale; /** * Encapsulates a transcript search result resulting from a search using the ChatSearch class. * Relevance is only stored to 3 significant decimal places (xx.x%).<p> * * Use {@link #getSessionID()} to get the id of the session that originated the transcript * contained in the result. * * @author Gaston Dombiak */ public class QueryResult { private Workgroup workgroup; private String sessionID; private Date startDate; private List<String> agentJIDs; private float relevance; public QueryResult(Workgroup workgroup, String sessionID, Date startDate, List<String> agentJIDs, float relevance) { this.workgroup = workgroup; this.sessionID = sessionID; this.startDate = startDate; this.agentJIDs = agentJIDs; this.relevance = Math.round(relevance * 1000.0F) / 1000.0F;; } /** * Returns the workgroup where the chat support took place. Using the workgroup and the * sessionID it's possible for an agent to retrieve the complete chat transcript. * * @return the workgroup where the chat support took place. */ public Workgroup getWorkgroup() { return workgroup; } /** * Returns the id of the session that originated the chat support. Use this id for * getting more information about the session. See * {@link org.jivesoftware.xmpp.workgroup.WorkgroupIQHandler#handleIQGet(org.xmpp.packet.IQ)}. * * @return the id of the session that originated the chat support. */ public String getSessionID() { return sessionID; } /** * Returns the date when the chat support started. * * @return the date when the chat support started. */ public Date getStartDate() { return startDate; } /** * Returns the bare JID of the agents that were involved in the chat support. More than * one agent may have been involved in a chat transfer was done to another agent or a chat * invitation was sent to another agent. * * @return the bare JID of the agents that were involved in the chat support. */ public List<String> getAgentJIDs() { return agentJIDs; } /** * Get the relevance of this query result as determined by the search engine. * * @return the relevance of this query result as determined by the search engine. */ public float getRelevance() { return relevance; } /** * Returns the relevance as a percentage (no decimal places) formatted according * to the locale passed in. * * @param locale the locale to use to format the percentage. * @return the formatted percentage as a String. */ public String getRelevanceAsPercentage(Locale locale) { NumberFormat format = DecimalFormat.getPercentInstance(locale); format.setMaximumFractionDigits(0); return format.format(relevance); } }