diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java index 1b97ee0d9..1b025a07d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java @@ -15,6 +15,8 @@ */ package org.springframework.data.document.mongodb.repository; +import java.util.regex.Pattern; + import org.springframework.data.domain.Sort; import org.springframework.data.repository.query.SimpleParameterAccessor; import org.springframework.data.repository.query.SimpleParameterAccessor.BindableParameterIterator; @@ -131,6 +133,9 @@ class MongoQueryCreator extends AbstractQueryCreator { return criteria.notEquals(null); case IS_NULL: return criteria.is(null); + case LIKE: + String value = parameters.next().toString(); + return criteria.regex(toLikeRegex(value)); case SIMPLE_PROPERTY: return criteria.is(parameters.next()); case NEGATING_SIMPLE_PROPERTY: @@ -139,4 +144,11 @@ class MongoQueryCreator extends AbstractQueryCreator { throw new IllegalArgumentException("Unsupported keyword!"); } + + + private Pattern toLikeRegex(String source) { + + String regex = source.replaceAll("\\*", ".*"); + return Pattern.compile(regex); + } } \ No newline at end of file diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/SimpleMongoRepository.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/SimpleMongoRepository.java index 7ba978c3b..a77136c89 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/SimpleMongoRepository.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/SimpleMongoRepository.java @@ -20,6 +20,10 @@ import java.util.ArrayList; import java.util.List; import org.springframework.data.document.mongodb.MongoTemplate; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.support.IsNewAware; import org.springframework.data.repository.support.RepositorySupport; import org.springframework.util.Assert; @@ -33,7 +37,7 @@ import com.mongodb.QueryBuilder; * @author Oliver Gierke */ public class SimpleMongoRepository extends - RepositorySupport { + RepositorySupport implements PagingAndSortingRepository { private final MongoTemplate template; private MongoEntityInformation entityInformation; @@ -176,6 +180,34 @@ public class SimpleMongoRepository extends } + /* + * (non-Javadoc) + * + * @see + * org.springframework.data.repository.PagingAndSortingRepository#findAll + * (org.springframework.data.domain.Pageable) + */ + public Page findAll(Pageable pageable) { + + // TODO Auto-generated method stub + return null; + } + + + /* + * (non-Javadoc) + * + * @see + * org.springframework.data.repository.PagingAndSortingRepository#findAll + * (org.springframework.data.domain.Sort) + */ + public List findAll(Sort sort) { + + // TODO Auto-generated method stub + return null; + } + + /* * (non-Javadoc) * diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepository.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepository.java index 2db31fcea..74beaa4ab 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepository.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepository.java @@ -26,4 +26,7 @@ import java.util.List; public interface PersonRepository extends MongoRepository { List findByLastname(String lastname); + + + List findByFirstnameLike(String firstname); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepositoryIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepositoryIntegrationTests.java index 8f8c987eb..f5d3c5c86 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepositoryIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepositoryIntegrationTests.java @@ -53,5 +53,9 @@ public class PersonRepositoryIntegrationTests { List result = repository.findByLastname("Gierke"); assertThat(result.size(), is(1)); assertThat(result, hasItem(person)); + + result = repository.findByFirstnameLike("Oli*"); + assertThat(result.size(), is(1)); + assertThat(result, hasItem(person)); } }