/*
* Copyright 2013 uaiHebert Solucoes em Informatica
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* */
package com.uaihebert.uaicriteria.criteria;
import com.uaihebert.uaicriteria.base.element.BaseCriteria;
import com.uaihebert.uaicriteria.base.element.BasicCriteriaElements;
import com.uaihebert.uaicriteria.path.MultiSelectQueryPathCreator;
import com.uaihebert.uaicriteria.path.RegularQueryPathCreator;
import com.uaihebert.uaicriteria.subquery.SubQueryImp;
import java.util.List;
public class CriteriaCreator {
private static final boolean DO_NOT_USE_LOWER_CASE = false;
private final BasicCriteriaElements basicCriteriaElements;
public CriteriaCreator(final BasicCriteriaElements basicCriteriaElements) {
this.basicCriteriaElements = basicCriteriaElements;
}
public void andEquals(final boolean toLowerCase, final String attributeName, final Object value) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andEquals(toLowerCase, baseCriteria, attributeName, value);
}
}
public void andNotEquals(final boolean toLowerCase, final String attributeName, final Object value) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andNotEquals(toLowerCase, baseCriteria, attributeName, value);
}
}
public void innerJoin(final String joinName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.innerJoin(joinName, baseCriteria);
}
}
public void innerJoinFetch(final String joinName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.innerJoinFetch(joinName, baseCriteria);
}
}
public void leftJoinFetch(final String joinName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.leftJoinFetch(joinName, baseCriteria);
}
}
public void leftJoin(final String joinName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.leftJoin(joinName, baseCriteria);
}
}
public void orderByDesc(final String attributeName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.orderBy(attributeName, baseCriteria, CriteriaResultOrderBy.DESC);
}
}
public void orderByAsc(final String attributeName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.orderBy(attributeName, baseCriteria, CriteriaResultOrderBy.ASC);
}
}
public void setFirstResult(final int firstResult) {
basicCriteriaElements.setFirstResult(firstResult);
}
public void setMaxResults(final int maxResults) {
basicCriteriaElements.setMaxResults(maxResults);
}
public void addHint(final String key, final String value) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andHint(baseCriteria, key, value);
}
}
public void orEquals(final boolean toLowerCase, final String attributeName, final Object... valueArray) {
orEquals(toLowerCase, BaseCriteria.DEFAULT_OR_PREDICATE_INDEX, attributeName, valueArray, CriteriaOrType.EQUALS);
}
public void orLike(final boolean toLowerCase, final String attributeName, final Object... valueArray) {
orEquals(toLowerCase, BaseCriteria.DEFAULT_OR_PREDICATE_INDEX, attributeName, valueArray, CriteriaOrType.LIKE);
}
public void orNotLike(final boolean toLowerCase, final String attributeName, final Object... valueArray) {
orEquals(toLowerCase, BaseCriteria.DEFAULT_OR_PREDICATE_INDEX, attributeName, valueArray, CriteriaOrType.NOT_LIKE);
}
public void orEquals(final boolean toLowerCase, final int index, final String attributeName, final Object[] valueArray, final CriteriaOrType orType) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.addOr(toLowerCase, index, baseCriteria, attributeName, valueArray, orType);
}
}
public void addAndSeparatedByOr(final boolean toLowerCase, final int index, final String attributeName, final Object value) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.addAndSeparatedByOr(toLowerCase, index, baseCriteria, attributeName, value);
}
}
public void andIsMemberOf(final Object value, final String collectionName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andIsMemberOf(baseCriteria, collectionName, value);
}
}
public void andIsNotMemberOf(final Object value, final String collectionName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andIsNotMemberOf(baseCriteria, collectionName, value);
}
}
public void andBetween(final boolean toLowerCase, final String attributeName, final Object valueA, final Object valueB) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andBetween(toLowerCase, baseCriteria, attributeName, valueA, valueB);
}
}
public void andGreaterOrEqualTo(final boolean toLowerCase, final String attributeName, final Object value) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andGreaterOrEqualTo(toLowerCase, baseCriteria, attributeName, value);
}
}
public void andLessThan(final boolean toLowerCase, final String attributeName, final Object value) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andLessThan(toLowerCase, baseCriteria, attributeName, value);
}
}
public void andLessOrEqualTo(final boolean toLowerCase, final String attributeName, final Object value) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andLessOrEqualTo(toLowerCase, baseCriteria, attributeName, value);
}
}
public void andGreaterThan(final boolean toLowerCase, final String attributeName, final Object value) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andGreaterThan(toLowerCase, baseCriteria, attributeName, value);
}
}
public void orNotEquals(final boolean toLowerCase, final String attributeName, final Object[] valueArray) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.orNotEquals(toLowerCase, baseCriteria, attributeName, valueArray);
}
}
public void andIsNull(final String attributeName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andIsNull(baseCriteria, attributeName);
}
}
public void orIsNull(final String attributeName) {
orEquals(DO_NOT_USE_LOWER_CASE, BaseCriteria.DEFAULT_OR_PREDICATE_INDEX, attributeName, null, CriteriaOrType.IS_NULL);
}
public void andIsNotNull(final String attributeName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andIsNotNull(baseCriteria, attributeName);
}
}
public void orIsNotNull(final String attributeName) {
orEquals(DO_NOT_USE_LOWER_CASE, BaseCriteria.DEFAULT_OR_PREDICATE_INDEX, attributeName, null, CriteriaOrType.IS_NOT_NULL);
}
public void andCollectionIsEmpty(final String collectionName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andCollectionIsEmpty(baseCriteria, collectionName);
}
}
public void andCollectionIsNotEmpty(final String collectionName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andCollectionIsNotEmpty(baseCriteria, collectionName);
}
}
public void setDistinctTrue() {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.setDistinctTrue(baseCriteria);
}
}
public void andStringIn(final boolean toLowerCase, final String attributeName, final List<String> valueList) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andStringIn(toLowerCase, baseCriteria, attributeName, valueList);
}
}
public void andStringNotIn(final boolean toLowerCase, final String attributeName, final List<String> valueList) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andStringNotIn(toLowerCase, baseCriteria, attributeName, valueList);
}
}
public void andStringLike(final boolean toLowerCase, final String attributeName, final String value) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andStringLike(toLowerCase, baseCriteria, attributeName, value);
}
}
public void andStringNotLike(final boolean toLowerCase, final String attributeName, final String value) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andStringNotLike(toLowerCase, baseCriteria, attributeName, value);
}
}
public <E> void andAttributeIn(final String attributeName, final List<E> attributeList) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andAttributeIn(baseCriteria, attributeName, attributeList);
}
}
public void andAttributeIn(final String attributeName, final SubQueryImp uaiSubQuery) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andAttributeIn(baseCriteria, attributeName, uaiSubQuery);
}
}
public void andAttributeNotIn(final String attributeName, final SubQueryImp uaiSubQuery) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andAttributeNotIn(baseCriteria, attributeName, uaiSubQuery);
}
}
public <E> void andAttributeNotIn(final String attributeName, final List<E> attributeList) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
RegularQueryPathCreator.andAttributeNotIn(baseCriteria, attributeName, attributeList);
}
}
public void sum(final String... attributeNameArray) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.sum(baseCriteria, attributeNameArray);
}
}
public void addMultiSelectSelectAttribute(final String... attributeNameArray) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.addMultiSelectSelectAttribute(baseCriteria, attributeNameArray);
}
}
public void avg(final String... attributeNameArray) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.avg(baseCriteria, attributeNameArray);
}
}
public void square(final String... attributeNameArray) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.square(baseCriteria, attributeNameArray);
}
}
public <N extends Number> void sum(final String attributeName, final N number) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.sum(baseCriteria, attributeName, number);
}
}
public <N extends Number> void sum(final N number, final String attributeName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.sum(baseCriteria, number, attributeName);
}
}
public void groupBy(final String[] attributeName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.groupBy(baseCriteria, attributeName);
}
}
public void diff(final String firstAttribute, final String secondAttribute) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.diff(baseCriteria, firstAttribute, secondAttribute);
}
}
public <N extends Number> void diff(final String attributeName, final N number) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.diff(baseCriteria, attributeName, number);
}
}
public <N extends Number> void diff(final N number, final String attributeName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.diff(baseCriteria, number, attributeName);
}
}
public void multiply(final String firstAttribute, final String secondAttribute) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.multiply(baseCriteria, firstAttribute, secondAttribute);
}
}
public <N extends Number> void multiply(final String attributeName, final N number) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.multiply(baseCriteria, attributeName, number);
}
}
public <N extends Number> void multiply(final N number, final String attributeName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.multiply(baseCriteria, number, attributeName);
}
}
public void divide(final String firstAttribute, final String secondAttribute) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.divide(baseCriteria, firstAttribute, secondAttribute);
}
}
public <N extends Number> void divide(final String attributeName, final N number) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.divide(baseCriteria, attributeName, number);
}
}
public <N extends Number> void divide(final N number, final String attributeName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.divide(baseCriteria, number, attributeName);
}
}
public void module(final String firstAttribute, final String secondAttribute) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.module(baseCriteria, firstAttribute, secondAttribute);
}
}
public void module(final String attributeName, final Integer number) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.module(baseCriteria, attributeName, number);
}
}
public void module(final Integer number, final String attributeName) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.module(baseCriteria, number, attributeName);
}
}
public void countAttribute(final String[] attributeArray) {
final List<BaseCriteria> baseCriteriaList = basicCriteriaElements.getBaseCriteriaList();
for (final BaseCriteria baseCriteria : baseCriteriaList) {
MultiSelectQueryPathCreator.countAttribute(baseCriteria, attributeArray);
}
}
}