package com.constellio.model.services.search.query.logical.ongoing; import java.util.Arrays; import java.util.List; import com.constellio.model.entities.schemas.DataStoreField; import com.constellio.model.services.search.query.logical.LogicalOperator; import com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators; import com.constellio.model.services.search.query.logical.LogicalSearchValueCondition; import com.constellio.model.services.search.query.logical.condition.CompositeLogicalSearchCondition; import com.constellio.model.services.search.query.logical.condition.DataStoreFieldLogicalSearchCondition; import com.constellio.model.services.search.query.logical.condition.DataStoreFilters; import com.constellio.model.services.search.query.logical.condition.LogicalSearchCondition; import com.constellio.model.services.search.query.logical.criteria.MeasuringUnitTime; public class OngoingLogicalSearchConditionWithDataStoreFields { private final LogicalSearchCondition otherCondition; private final LogicalOperator otherConditionLogicalOperator; private final DataStoreFilters filters; private final List<DataStoreField> dataStoreFields; private final LogicalOperator metadataLogicalOperator; public OngoingLogicalSearchConditionWithDataStoreFields(DataStoreFilters filters, List<DataStoreField> dataStoreFields, LogicalOperator metadataLogicalOperator) { super(); this.filters = filters; this.dataStoreFields = dataStoreFields; this.metadataLogicalOperator = metadataLogicalOperator; this.otherCondition = null; this.otherConditionLogicalOperator = null; } public OngoingLogicalSearchConditionWithDataStoreFields(DataStoreFilters filters, List<DataStoreField> dataStoreFields, LogicalOperator metadataLogicalOperator, LogicalSearchCondition otherCondition, LogicalOperator otherConditionLogicalOperator) { super(); this.filters = filters; this.dataStoreFields = dataStoreFields; this.metadataLogicalOperator = metadataLogicalOperator; this.otherCondition = otherCondition; this.otherConditionLogicalOperator = otherConditionLogicalOperator; } public <T> LogicalSearchCondition is(T value) { return is(LogicalSearchQueryOperators.is(value)); } public <T> LogicalSearchCondition isNotEqual(T value) { return is(LogicalSearchQueryOperators.isNotEqual(value)); } public <T> LogicalSearchCondition isNot(LogicalSearchValueCondition otherOperator) { return is(LogicalSearchQueryOperators.not(otherOperator)); } public LogicalSearchCondition isContainingText(String value) { return is(LogicalSearchQueryOperators.containingText(value)); } public LogicalSearchCondition isStartingWithText(String value) { return is(LogicalSearchQueryOperators.startingWithText(value)); } public LogicalSearchCondition isEndingWithText(String value) { return is(LogicalSearchQueryOperators.endingWithText(value)); } public <T> LogicalSearchCondition isIn(List<T> values) { return is(LogicalSearchQueryOperators.in(values)); } public <T> LogicalSearchCondition isNotIn(List<T> values) { return is(LogicalSearchQueryOperators.notIn(values)); } // public <T> LogicalSearchCondition isIn(LogicalSearchCondition condition) { // return is(LogicalSearchQueryOperators.in(condition)); // } // public <T> LogicalSearchCondition isNotIn(LogicalSearchCondition condition) { // return is(LogicalSearchQueryOperators.notIn(condition)); // } public <T> LogicalSearchCondition isContaining(List<T> values) { return is(LogicalSearchQueryOperators.containing(values)); } public <T> LogicalSearchCondition isNotContainingElements(List<T> values) { return is(LogicalSearchQueryOperators.notContainingElements(values)); } public <T> LogicalSearchCondition isNull() { return is(LogicalSearchQueryOperators.isNull()); } public <T> LogicalSearchCondition isNotNull() { return is(LogicalSearchQueryOperators.isNotNull()); } public <T> LogicalSearchCondition isAll(List<LogicalSearchValueCondition> otherOperators) { return is(LogicalSearchQueryOperators.all(otherOperators)); } public <T> LogicalSearchCondition isAny(List<LogicalSearchValueCondition> otherOperators) { return is(LogicalSearchQueryOperators.any(otherOperators)); } public <T> LogicalSearchCondition isAny(LogicalSearchValueCondition... otherOperators) { return is(LogicalSearchQueryOperators.any(Arrays.asList(otherOperators))); } public <T> LogicalSearchCondition is(LogicalSearchValueCondition otherOperator) { LogicalSearchCondition condition = new DataStoreFieldLogicalSearchCondition(filters, dataStoreFields, metadataLogicalOperator, otherOperator); condition.validate(); if (otherCondition != null) { condition = new CompositeLogicalSearchCondition(filters, otherConditionLogicalOperator, Arrays.asList(otherCondition, condition)); } return condition; } public LogicalSearchCondition isTrue() { return is(LogicalSearchQueryOperators.isTrue()); } public LogicalSearchCondition isTrueOrNull() { return is(LogicalSearchQueryOperators.isTrueOrNull()); } public LogicalSearchCondition isFalse() { return is(LogicalSearchQueryOperators.isFalse()); } public LogicalSearchCondition isFalseOrNull() { return is(LogicalSearchQueryOperators.isFalseOrNull()); } public LogicalSearchCondition isValueInRange(Object beginValue, Object endValue) { return is(LogicalSearchQueryOperators.valueInRange(beginValue, endValue)); } public LogicalSearchCondition isLessThan(Object value) { return is(LogicalSearchQueryOperators.lessThan(value)); } public LogicalSearchCondition isGreaterThan(Object value) { return is(LogicalSearchQueryOperators.greaterThan(value)); } public LogicalSearchCondition isLessOrEqualThan(Object value) { return is(LogicalSearchQueryOperators.lessOrEqualThan(value)); } public LogicalSearchCondition isGreaterOrEqualThan(Object value) { return is(LogicalSearchQueryOperators.greaterOrEqualThan(value)); } public LogicalSearchCondition isNewerThan(Object value, MeasuringUnitTime measuringUnitTime) { return is(LogicalSearchQueryOperators.newerThan(value, measuringUnitTime)); } public LogicalSearchCondition isOlderThan(Object value, MeasuringUnitTime measuringUnitTime) { return is(LogicalSearchQueryOperators.olderThan(value, measuringUnitTime)); } public LogicalSearchCondition isOldLike(Object value, MeasuringUnitTime measuringUnitTime) { return is(LogicalSearchQueryOperators.oldLike(value, measuringUnitTime)); } public LogicalSearchCondition isEqualTo(Object value) { return is(LogicalSearchQueryOperators.equal(value)); } public LogicalSearchCondition query(String query) { return is(LogicalSearchQueryOperators.query(query)); } }