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.support;
 
 import java.util.Set;
 
 import  org.springframework.util.Assert;

QueryCreationListener inspecting PartTreeMongoQuerys and creating an index for the properties it refers to.

Author(s):
Oliver Gierke
 
 
 	private static final Set<TypeGEOSPATIAL_TYPES = new HashSet<Type>(Arrays.asList(..));
 	private static final Logger LOG = LoggerFactory.getLogger(IndexEnsuringQueryCreationListener.class);
 
 	private final MongoOperations operations;

Creates a new IndexEnsuringQueryCreationListener using the given MongoOperations.

Parameters:
operations must not be null.
 
 
 		Assert.notNull(operations);
 		this. = operations;
 	}
 
 	/*
 	 * (non-Javadoc)
 	 * @see org.springframework.data.repository.core.support.QueryCreationListener#onCreation(org.springframework.data.repository.query.RepositoryQuery)
 	 */
 	public void onCreation(PartTreeMongoQuery query) {
 
 		PartTree tree = query.getTree();
 		Index index = new Index();
 		index.named(query.getQueryMethod().getName());
 		Sort sort = tree.getSort();
 
 		for (Part part : tree.getParts()) {
 			if (.contains(part.getType())) {
 				return;
 			}
 			String property = part.getProperty().toDotPath();
 			Direction order = toDirection(sortproperty);
 			index.on(propertyorder);
 		}
 
 		// Add fixed sorting criteria to index
 		if (sort != null) {
 			for (Sort.Order order : sort) {
 				index.on(order.getProperty(), order.getDirection());
 			}
 		}
 
 		.debug(String.format("Created %s!"index));
 	}
 
 	private static Direction toDirection(Sort sortString property) {
 
 		if (sort == null) {
 			return .;
 		}
 
 		org.springframework.data.domain.Sort.Order order = sort.getOrderFor(property);
 		return order == null ? . : order.isAscending() ? . : .;
	}
New to GrepCode? Check out our FAQ X