/*
* 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.mongodb.query.parsing.predicate.impl;
import java.util.regex.Pattern;
import org.hibernate.hql.ast.spi.predicate.LikePredicate;
import org.hibernate.hql.ast.spi.predicate.NegatablePredicate;
import org.hibernate.ogm.util.parser.impl.LikeExpressionToRegExpConverter;
import org.bson.Document;
/**
* MongoDB-based implementation of {@link LikePredicate}.
*
* @author Gunnar Morling
*/
public class MongoDBLikePredicate extends LikePredicate<Document> implements NegatablePredicate<Document> {
private final Pattern pattern;
public MongoDBLikePredicate(String propertyName, String patternValue, Character escapeCharacter) {
super( propertyName, patternValue, escapeCharacter );
LikeExpressionToRegExpConverter converter = new LikeExpressionToRegExpConverter( escapeCharacter );
pattern = converter.getRegExpFromLikeExpression( patternValue );
}
@Override
public Document getQuery() {
return new Document( propertyName, pattern );
}
@Override
public Document getNegatedQuery() {
return new Document( propertyName, new Document( "$not", pattern ) );
}
}