/* Index ECM Engine - A system for managing the capture (when created
* or received), classification (cataloguing), storage, retrieval,
* revision, sharing, reuse and disposition of documents.
*
* Copyright (C) 2008 Regione Piemonte
* Copyright (C) 2008 Provincia di Torino
* Copyright (C) 2008 Comune di Torino
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2,
* or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
package it.doqui.index.ecmengine.dto.engine.search;
import it.doqui.index.ecmengine.dto.EcmEngineDto;
import it.doqui.index.ecmengine.dto.engine.management.Property;
/**
* Data Transfer Object che rappresenta i parametri di ricerca utilizzati
* per una ricerca generica globale all'interno del repository.
*
* <p>I parametri di ricerca che possono essere specificati mediante questa classe sono:</p>
* <ul>
* <li>Il tipo di contenuto che si sta cercando.</li>
* <li>Il tipo MIME dei contenuti che si stanno cercando.</li>
* <li>Una lista di metadati, anche vuota, con i relativi valori da cercare (i valori possono
* contenere un carattere '*' come wildcard, ma questo non deve apparire all'inizio della stringa
* di ricerca).</li>
* <li>La dimensione delle pagine (nel caso di ricerca paginata).</li>
* <li>L'indice della pagina da recuperare (nel caso di ricerca paginata).</li>
* </ul>
* <p>La ricerca viene paginata se e solo se {@code pageIndex} >= 0 AND {@code pageSize} > 0.</p>
*
* @author Doqui
*/
public class SearchParams extends EcmEngineDto {
private static final long serialVersionUID = 1L;
private String typePrefixedName;
private String mimeType;
private Property [] properties;
private int limit;
private String fullTextQuery;
private boolean fullTextAllWords;
private String xPathQuery;
private String luceneQuery;
private int pageSize;
private int pageIndex;
private SortField[] sortFields;
private boolean fullProperty;
/**
* Costruttore predefinito.
*/
public SearchParams() {
super();
}
/**
* Restituisce il nome completo di prefisso del tipo di contenuto da cercare.
*
* @return Il nome completo di prefisso.
*/
public String getTypePrefixedName() {
return typePrefixedName;
}
/**
* Imposta il nome completo di prefisso del tipo di contenuto da cercare.
*
* @param prefixedName Il nome completo di prefisso.
*/
public void setTypePrefixedName(String prefixedName) {
this.typePrefixedName = prefixedName;
}
/**
* Restituisce il MIME-Type del contenuto da cercare.
*
* @return Il MIME-Type.
*/
public String getMimeType() {
return mimeType;
}
/**
* Imposta il MIME-Type del contenuto da cercare.
*
* @param mimeType Il MIME-Type.
*/
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
/**
* Restituisce un insieme di metadati da utilizzare come parametri di ricerca.
*
* @return I metadati, come array di {@link Property}, da utilizzare come parametri di ricerca.
*/
public Property[] getProperties() {
return properties;
}
/**
* Imposta un insieme di metadati da utilizzare come parametri di ricerca.
*
* @param properties Un array di {@link Property} contenente i metadati da utilizzare come
* parametri di ricerca.
*/
public void setProperties(Property[] properties) {
this.properties = properties;
}
/**
* Restituisce il numero massimo di risultati da restituire al chiamante.
*
* @return Il numero massimo di risultati (0 significa "illimitato").
*/
public int getLimit() {
return limit;
}
/**
* Imposta il numero massimo di risultati da restituire al chiamante.
*
* @param limit il numero massimo di risultati (0 significa "illimitato").
*/
public void setLimit(int limit) {
this.limit = limit;
}
/**
* Restituisce la stringa da usare per la ricerca full-text.
*
* @return La stringa di ricerca full-text.
*/
public String getFullTextQuery() {
return fullTextQuery;
}
/**
* Imposta la stringa da usare per la ricerca full-text.
*
* @param fullTextQuery La stringa da usare per la ricerca full-text.
*/
public void setFullTextQuery(String fullTextQuery) {
this.fullTextQuery = fullTextQuery;
}
/**
* Restituisce la modalità con cui eseguire le ricerche full-text.
*
* @return {@code true} se i risultati devono contenere tutte le parole chiave,
* {@code false} altimenti.
*/
public boolean isFullTextAllWords() {
return fullTextAllWords;
}
/**
* Imposta la modalità con cui eseguire le ricerche full-text.
*
* @param fullTextAllWords {@code true} per cercare tutte le parole chiave
* contemporaneamente, {@code false} altrimenti.
*/
public void setFullTextAllWords(boolean fullTextAllWords) {
this.fullTextAllWords = fullTextAllWords;
}
/**
* Restituisce la stringa di recerca XPath con cui eseguire la ricerca.
*
* @return La stringa XPath.
*/
public String getXPathQuery() {
return xPathQuery;
}
/**
* Imposta la stringa di ricerca XPath con cui eseguire la ricerca.
*
* @param pathQuery La stringa di ricerca XPath.
*/
public void setXPathQuery(String pathQuery) {
xPathQuery = pathQuery;
}
/**
* Restituisce la stringa di ricerca Lucene con cui eseguire la ricerca.
*
* @return La stringa Lucene.
*/
public String getLuceneQuery() {
return luceneQuery;
}
/**
* Imposta la stringa di ricerca Lucene con cui eseguire la ricerca.
*
* @param luceneQuery La stringa di ricerca Lucene.
*/
public void setLuceneQuery(String luceneQuery) {
this.luceneQuery = luceneQuery;
}
/**
* Restituisce l'indice della pagina della ricerca.
*
* @return L'indice della pagina della ricerca.
*/
public int getPageIndex() {
return pageIndex;
}
/**
* Imposta l'indice della pagina della ricerca.
* La ricerca viene paginata se e solo se {@code pageIndex} >= 0 AND {@code pageSize} > 0.
*
* @param pageIndex L'indice della pagina della ricerca.
*/
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}
/**
* Restituisce la dimensione della pagina della ricerca.
*
* @return La dimensione della pagina della ricerca.
*/
public int getPageSize() {
return pageSize;
}
/**
* Imposta la dimensione della pagina della ricerca.
* La ricerca viene paginata se e solo se {@code pageIndex} >= 0 AND {@code pageSize} > 0.
*
* @param pageSize La dimensione della pagina della ricerca.
*/
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
/**
* Restituisce i campi su cui eseguire l'ordinamento del risultato della ricerca.
*
* @return L'array degli oggetti {@code SortField}
*/
public SortField[] getSortFields() {
return sortFields;
}
/**
* Imposta i campi su cui eseguire l'ordinamento del risultato della ricerca.
*
* @param sortFields L'array degli oggetti {@code SortField}
*/
public void setSortFields(SortField[] sortFields) {
this.sortFields = sortFields;
}
/**
* Restituisce la modalità con la quale sono prese le property dei singoli risultati
*
* @return {@code true} se le property non sono filtrate
* {@code false} altimenti.
*/
public boolean isFullProperty() {
return fullProperty;
}
/**
* Imposta la modalità con la quale sono prese le property dei singoli risultati
*
* @param fullProperty {@code true} per restituire tutte le property associate ai singoli
* nodi, {@code false} altrimenti.
*/
public void setFullProperty(boolean fullProperty) {
this.fullProperty = fullProperty;
}
}