/**
* Copyright (C) 2011 BonitaSoft S.A.
* BonitaSoft, 31 rue Gustave Eiffel - 38000 Grenoble
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation
* version 2.1 of the License.
* This library 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 Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
* Floor, Boston, MA 02110-1301, USA.
**/
package org.ow2.bonita.services;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author Baptiste Mesta
*
*/
public class DocumentSearchBuilder implements Serializable {
private static final long serialVersionUID = 6226365334784520445L;
private List<Object> query;
private boolean searchAllVersions = false;
public DocumentSearchBuilder() {
query = new ArrayList<Object>();
}
public DocumentCriterion criterion(DocumentIndex index) {
DocumentCriterion criterion = new DocumentCriterion(index, this);
query.add(criterion);
return criterion;
}
public DocumentSearchBuilder leftParenthesis() {
query.add(QueryFormatter.L_PARENTHESIS);
return this;
}
public DocumentSearchBuilder rightParenthesis() {
query.add(QueryFormatter.R_PARENTHESIS);
return this;
}
public DocumentSearchBuilder or() {
query.add(QueryFormatter.OR);
return this;
}
public DocumentSearchBuilder and() {
query.add(QueryFormatter.AND);
return this;
}
public List<Object> getQuery() {
return query;
}
public DocumentSearchBuilder allVersion() {
this.searchAllVersions = true;
return this;
}
public DocumentSearchBuilder latestVersion() {
this.searchAllVersions = false;
return this;
}
/**
* @return
*/
public boolean isSearchAllVersions() {
return searchAllVersions;
}
}