/* * Hibernate OGM, Domain model persistence for NoSQL datastores * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.ogm.datastore.neo4j.query.parsing.impl.predicate.impl; import org.hibernate.hql.ast.spi.predicate.DisjunctionPredicate; import org.hibernate.hql.ast.spi.predicate.NegatablePredicate; import org.hibernate.hql.ast.spi.predicate.Predicate; /** * @author Davide D'Alto <davide@hibernate.org> */ public class Neo4jDisjunctionPredicate extends DisjunctionPredicate<StringBuilder> implements NegatablePredicate<StringBuilder> { private final StringBuilder builder; public Neo4jDisjunctionPredicate(StringBuilder builder) { this.builder = builder; } @Override public StringBuilder getQuery() { int counter = 1; builder.append( "(" ); for ( Predicate<StringBuilder> child : children ) { child.getQuery(); builder.append( ")" ); if ( counter++ < children.size() ) { builder.append( " OR (" ); } } return builder; } @Override public StringBuilder getNegatedQuery() { int counter = 1; builder.append( "(" ); for ( Predicate<StringBuilder> child : children ) { ( (NegatablePredicate<StringBuilder>) child ).getNegatedQuery(); builder.append( ")" ); if ( counter++ < children.size() ) { builder.append( " AND (" ); } } return builder; } }