package com.constellio.app.ui.pages.search.criteria; import com.constellio.app.ui.pages.search.criteria.Criterion.BooleanOperator; import com.constellio.app.ui.pages.search.criteria.Criterion.SearchOperator; import com.constellio.model.entities.schemas.Metadata; public class CriterionBuilder { private Criterion criterion; public CriterionBuilder(String schemaType) { this.criterion = new Criterion(schemaType); } public CriterionBuilder(Criterion criterion) { this.criterion = criterion; } public String getSchemaType() { return criterion.getSchemaType(); } public String getMetadataCode() { return criterion.getMetadataCode(); } public boolean isRightParens() { return criterion.isRightParens(); } public String getSchemaCode() { return criterion.getSchemaCode(); } public Object getValue() { return criterion.getValue(); } public boolean isLeftParens() { return criterion.isLeftParens(); } public CriterionBuilder withRightParens() { return rightParens(true); } public CriterionBuilder rightParens(boolean rightParens) { criterion.setRightParens(rightParens); return this; } public CriterionBuilder where(Metadata metadata) { return metadata(metadata); } public CriterionBuilder metadata(Metadata metadata) { criterion.setMetadata(metadata); return this; } public CriterionBuilder searchOperator(SearchOperator searchOperator) { criterion.setSearchOperator(searchOperator); return this; } public boolean isNotEmpty() { return criterion.isNotEmpty(); } public CriterionBuilder booleanOperator(BooleanOperator booleanOperator) { criterion.setBooleanOperator(booleanOperator); return this; } public CriterionBuilder withLeftParens() { return leftParens(true); } public CriterionBuilder leftParens(boolean leftParens) { criterion.setLeftParens(leftParens); return this; } public BooleanOperator getBooleanOperator() { return criterion.getBooleanOperator(); } public CriterionBuilder isEqualTo(Object value) { return searchOperator(SearchOperator.EQUALS).value(value); } public CriterionBuilder isContainingText(Object value) { return searchOperator(SearchOperator.CONTAINS_TEXT).value(value); } public CriterionBuilder value(Object value) { criterion.setValue(value); return this; } public Object getEndValue() { return criterion.getEndValue(); } public CriterionBuilder endValue(Object endValue) { criterion.setEndValue(endValue); return this; } public SearchOperator getSearchOperator() { return criterion.getSearchOperator(); } public CriterionBuilder relativeSearchCriteria(RelativeCriteria relativeCriteria) { criterion.setRelativeCriteria(relativeCriteria); return this; } public RelativeCriteria getRelativeCriteria() { return criterion.getRelativeCriteria(); } public Criterion build() { return criterion; } }