Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2011-2013 the original author or authors.
   *
   * 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 org.springframework.data.mongodb.repository.query;
 
 
 
Query to use a plain JSON String to create the org.springframework.data.mongodb.core.query.Query to actually execute.

Author(s):
Oliver Gierke
 
 public class StringBasedMongoQuery extends AbstractMongoQuery {
 
 	private static final Pattern PLACEHOLDER = Pattern.compile("\\?(\\d+)");
 	private static final Logger LOG = LoggerFactory.getLogger(StringBasedMongoQuery.class);
 
 	private final String query;
 	private final String fieldSpec;
 	private final boolean isCountQuery;

Creates a new StringBasedMongoQuery.

Parameters:
method must not be null.
template must not be null.
 
 	public StringBasedMongoQuery(String queryMongoQueryMethod methodMongoOperations mongoOperations) {
 
 		super(methodmongoOperations);
 
 		this. = query;
 		this. = method.getFieldSpecification();
 		this. = method.hasAnnotatedQuery() ? method.getQueryAnnotation().count() : false;
 	}
 
 	public StringBasedMongoQuery(MongoQueryMethod methodMongoOperations mongoOperations) {
 		this(method.getAnnotatedQuery(), methodmongoOperations);
 	}
 
 	/*
 	 * (non-Javadoc)
 	 * @see org.springframework.data.mongodb.repository.query.AbstractMongoQuery#createQuery(org.springframework.data.mongodb.repository.query.ConvertingParameterAccessor)
 	 */
 	protected Query createQuery(ConvertingParameterAccessor accessor) {
 
 		String queryString = replacePlaceholders(accessor);
 
 		Query query = null;
 
 		if ( != null) {
 			String fieldString = replacePlaceholders(accessor);
 			query = new BasicQuery(queryStringfieldString);
 		} else {
 			query = new BasicQuery(queryString);
 		}
 
 		query.with(accessor.getSort());
 
 		if (.isDebugEnabled()) {
 			.debug(String.format("Created query %s"query.getQueryObject()));
 		}
 
 		return query;
 	}
 
 	/* 
 	 * (non-Javadoc)
 	 * @see org.springframework.data.mongodb.repository.query.AbstractMongoQuery#isCountQuery()
 	 */
 	protected boolean isCountQuery() {
 		return ;
 	}
 
 
		Matcher matcher = .matcher(input);
		String result = input;
		while (matcher.find()) {
			String group = matcher.group();
			int index = Integer.parseInt(matcher.group(1));
			result = result.replace(groupgetParameterWithIndex(accessorindex));
		}
		return result;
	}
	private String getParameterWithIndex(ConvertingParameterAccessor accessorint index) {
		return JSON.serialize(accessor.getBindableValue(index));
	}
New to GrepCode? Check out our FAQ X