package com.constellio.model.services.search.query.logical.criteria;
import java.util.List;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import com.constellio.model.entities.schemas.DataStoreField;
import com.constellio.model.services.search.query.logical.LogicalOperator;
import com.constellio.model.services.search.query.logical.LogicalSearchValueCondition;
public class CompositeLogicalSearchValueOperator extends LogicalSearchValueCondition {
LogicalOperator operator;
List<LogicalSearchValueCondition> conditions;
public CompositeLogicalSearchValueOperator(LogicalOperator operator, List<LogicalSearchValueCondition> conditions) {
super();
this.operator = operator;
this.conditions = conditions;
}
@Override
public boolean isValidFor(DataStoreField dataStoreField) {
boolean valid = true;
for (LogicalSearchValueCondition condition : conditions) {
valid &= condition.isValidFor(dataStoreField);
}
return valid;
}
@Override
public String getSolrQuery(DataStoreField dataStoreField) {
String query = "(";
for (int i = 0; i < conditions.size() - 1; i++) {
query += " " + conditions.get(i).getSolrQuery(dataStoreField) + " " + operator;
}
query += " " + conditions.get(conditions.size() - 1).getSolrQuery(dataStoreField);
query += " )";
return query;
}
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
@Override
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj);
}
@Override
public String toString() {
return operator.name() + conditions;
}
}