/* * DrakkarKeel - An Enterprise Collaborative Search Platform * * The contents of this file are subject under the terms described in the * DRAKKARKEEL_LICENSE file included in this distribution; you may not use this * file except in compliance with the License. * * 2013-2014 DrakkarKeel Platform. */ package drakkar.oar; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Esta clase almacena los resultados de búsqueda por buscadores para una * determinada consulta * * */ public class ResultSetMetaData implements java.io.Serializable { private static final long serialVersionUID = 70000000000012L; private String query; private Map<Integer, List<DocumentMetaData>> results; /** * Constructor por defecto */ public ResultSetMetaData() { this.query = ""; this.results = new HashMap<>(); } /** * Constructor de la clase * * @param query consulta de búsqueda */ public ResultSetMetaData(String query) { this.query = query; this.results = new HashMap<>(); } /** * Constructor de la clase * * @param query consulta de búsqueda * @param results resultados de la búsqueda */ public ResultSetMetaData(String query, Map<Integer, List<DocumentMetaData>> results) { this.query = query; this.results = results; } /** * Constructor de la clase * * @param query consulta de búsqueda * @param searcher buscador empleado para la búsqueda */ public ResultSetMetaData(String query, int searcher) { this.query = query; this.results = new HashMap<>(); this.results.put(searcher, new ArrayList<DocumentMetaData>()); } /** * Constructor de la clase * * @param query consulta de búsqueda * @param searcher buscador empleado para la búsqueda * @param values resultados de la búsqueda */ public ResultSetMetaData(String query, int searcher, List<DocumentMetaData> values) { this.query = query; this.results = new HashMap<>(); this.results.put(searcher, values); } /** * Devuelve la consulta de la búsqueda * * @return consulta */ public String getQuery() { return query; } /** * Devuelve los resultados de búsqueda por cada buscador * * @return resultados */ public Map<Integer, List<DocumentMetaData>> getResultsMap() { return this.results; } /** * Devuelve todos los resultados de búsqueda * * @return resultados */ public List<DocumentMetaData> getAllResultList() { Collection<List<DocumentMetaData>> temp = this.results.values(); if (temp != null) { List<DocumentMetaData> finalList = new ArrayList<>(temp.size()); for (List<DocumentMetaData> arrayList : temp) { finalList.addAll(arrayList); } return finalList; } return new ArrayList<>(); } /** * Devuelve los resultados de búsqueda obtenidos para una buscador * * @param searcher buscador * @return lista de metadocument para ese searchable, o null si el searchable especificado * no cuenta con resultados. */ public List<DocumentMetaData> getResultList(int searcher) { List<DocumentMetaData> temp = this.results.get(searcher); return temp; } /** * Devuelve los resultados de búsqueda obtenidos para una buscador * * @return lista de metadocument para ese searchable, o null si el searchable especificado * no cuenta con resultados. */ public List<List<DocumentMetaData>> getResultList() { Collection<List<DocumentMetaData>> temp = this.results.values(); if (temp != null) { List<List<DocumentMetaData>> finalList = new ArrayList<>(); for (List<DocumentMetaData> arrayList : temp) { finalList.add(arrayList); } return finalList; } return new ArrayList<>(); } /** * Determina si existen resultados de búsqueda * * @return true si no existen resultados de búsqueda, false en caso contrario */ public boolean isEmpty() { return this.results.isEmpty(); } /** * Agrega una lista de docuementos obtenidos por un buscador * * @param searcher buscador * @param docs documentos obtenidos */ public void add(int searcher, List<DocumentMetaData> docs) { this.results.put(searcher, docs); } /** * Modifica el valor de la consulta de búsqueda * * @param query nueva consulta */ public void setQuery(String query) { this.query = query; } /** * Devuelve el número total de documentos * * @return total */ public int getDocumentsCount() { Collection<List<DocumentMetaData>> temp = this.results.values(); int size = 0; for (List<DocumentMetaData> arrayList : temp) { size += arrayList.size(); } return size; } /** * Devuelve el número total de documentos * * @return total */ public int getSearchersCount() { return this.results.size(); } /** * Elimina un documento de todos los resultados * revisar............... * @param url */ public void deleteFromAllList(String url) { Collection<List<DocumentMetaData>> e = this.results.values(); for (List<DocumentMetaData> list : e) { for (int i = 0; i < list.size(); i++) { DocumentMetaData documentMetaData = list.get(i); if(documentMetaData.getPath().equals(url)){ list.remove(documentMetaData); } } } } /** * * @param results */ public void setResultsMap(Map<Integer, List<DocumentMetaData>> results) { this.results = results; } }