Java Examples for org.springframework.data.repository.query.parser.PartTree
The following java examples will help you to understand the usage of org.springframework.data.repository.query.parser.PartTree. These source code samples are taken from different open source projects.
Example 1
Project: spring-data-simpledb-master File: PartTreeConverterTest.java View source code |
@Test public void should_create_corect_query_for_complex_operators() { final String methodName = "getByItemNameLikeOrAgeGreaterThanAndAgeLessThan"; final PartTree tree = new PartTree(methodName, SimpleDbSampleEntity.class); final String query = PartTreeConverter.toIndexedQuery(tree); final String expected = " itemName LIKE ? OR age > ? AND age < ? "; assertEquals(expected, query); }
Example 2
Project: spring-data-aerospike-master File: AerospikeTemplateIntegrationTests.java View source code |
@SuppressWarnings("unchecked") private <T> Query<T> createQueryForMethodWithArgs(String methodName, Object... args) throws NoSuchMethodException, SecurityException { Class<?>[] argTypes = new Class<?>[args.length]; if (!ObjectUtils.isEmpty(args)) { for (int i = 0; i < args.length; i++) { argTypes[i] = args[i].getClass(); } } Method method = PersonRepository.class.getMethod(methodName, argTypes); PartTree partTree = new PartTree(method.getName(), Person.class); AerospikeQueryCreator creator = new AerospikeQueryCreator(partTree, new ParametersParameterAccessor(new QueryMethod(method, repositoryMetaData, new SpelAwareProxyProjectionFactory()).getParameters(), args)); Query<T> q = (Query<T>) creator.createQuery(); return q; }
Example 3
Project: spring-data-jpa-master File: JpaCountQueryCreatorIntegrationTests.java View source code |
// DATAJPA-1044 @Test public void distinctFlagOnCountQueryIssuesCountDistinct() throws Exception { Method method = SomeRepository.class.getMethod("findDistinctByRolesIn", List.class); PersistenceProvider provider = PersistenceProvider.fromEntityManager(entityManager); JpaQueryMethod queryMethod = new JpaQueryMethod(method, AbstractRepositoryMetadata.getMetadata(SomeRepository.class), new SpelAwareProxyProjectionFactory(), provider); PartTree tree = new PartTree("findDistinctByRolesIn", User.class); ParameterMetadataProvider metadataProvider = new ParameterMetadataProvider(entityManager.getCriteriaBuilder(), queryMethod.getParameters(), provider); JpaCountQueryCreator creator = new JpaCountQueryCreator(tree, queryMethod.getResultProcessor().getReturnedType(), entityManager.getCriteriaBuilder(), metadataProvider); TypedQuery<? extends Object> query = entityManager.createQuery(creator.createQuery()); assertThat(HibernateUtils.getHibernateQuery(query), startsWith("select distinct count(distinct")); }
Example 4
Project: spring-data-gemfire-master File: QueryBuilderUnitTests.java View source code |
@Test public void createQueryBuilderWithDistinctQuery() { GemfirePersistentEntity<?> mockPersistentEntity = mock(GemfirePersistentEntity.class); PartTree mockPartTree = mock(PartTree.class); when(mockPersistentEntity.getRegionName()).thenReturn("Example"); when(mockPartTree.isDistinct()).thenReturn(true); QueryBuilder queryBuilder = new QueryBuilder(mockPersistentEntity, mockPartTree); assertThat(queryBuilder.toString()).isEqualTo("SELECT DISTINCT * FROM /Example x"); verify(mockPersistentEntity, times(1)).getRegionName(); verify(mockPartTree, times(1)).isDistinct(); }
Example 5
Project: spring-data-keyvalue-master File: KeyValuePartTreeQuery.java View source code |
public KeyValueQuery<?> createQuery(ParameterAccessor accessor) { PartTree tree = new PartTree(getQueryMethod().getName(), getQueryMethod().getEntityInformation().getJavaType()); Constructor<? extends AbstractQueryCreator<?, ?>> constructor = ClassUtils.getConstructorIfAvailable(queryCreator, PartTree.class, ParameterAccessor.class); KeyValueQuery<?> query = (KeyValueQuery<?>) BeanUtils.instantiateClass(constructor, tree, accessor).createQuery(); if (tree.isLimiting()) { query.setRows(tree.getMaxResults()); } return query; }
Example 6
Project: spring-ide-master File: InvalidDerivedQueryRule.java View source code |
public void validate(CompilationUnit element, SpringDataValidationContext context, IProgressMonitor monitor) {
try {
ITypeRoot typeRoot = element.getTypeRoot();
IType type = typeRoot.findPrimaryType();
if (!supports(typeRoot))
return;
// resolve repository information and generate problem markers
RepositoryInformation information = new RepositoryInformation(type);
Class<?> domainClass = information.getManagedDomainClass();
if (domainClass == null) {
return;
}
for (IMethod method : information.getMethodsToValidate()) {
String methodName = method.getElementName();
try {
new PartTree(methodName, domainClass);
} catch (PropertyReferenceException e) {
element.setElementSourceLocation(new JavaModelSourceLocation(method));
ValidationProblemAttribute start = new ValidationProblemAttribute(IMarker.CHAR_START, method.getNameRange().getOffset());
ValidationProblemAttribute end = new ValidationProblemAttribute(IMarker.CHAR_END, method.getSourceRange().getOffset() + method.getSourceRange().getLength());
context.error(element, "INVALID_DERIVED_QUERY", "Invalid derived query! " + e.getMessage(), new ValidationProblemAttribute[] { start, end });
}
}
} catch (JavaModelException e) {
SpringCore.log(e);
} catch (Exception e) {
SpringCore.log(e);
} catch (Error e) {
SpringCore.log(e);
}
}
Example 7
Project: spring-data-mongodb-master File: MongoQueryCreatorUnitTests.java View source code |
// DATAMONGO-469
@Test
public void createsAndQueryCorrectly() {
Person person = new Person();
MongoQueryCreator creator = new MongoQueryCreator(new PartTree("findByFirstNameAndFriend", Person.class), getAccessor(converter, "Oliver", person), context);
Query query = creator.createQuery();
assertThat(query, is(query(where("firstName").is("Oliver").and("friend").is(person))));
}
Example 8
Project: spring-data-commons-master File: PartTreeUnitTests.java View source code |
@Test
public void detectsDistinctCorrectly() throws Exception {
for (String prefix : PREFIXES) {
detectsDistinctCorrectly(prefix + "DistinctByLastname", true);
detectsDistinctCorrectly(prefix + "UsersDistinctByLastname", true);
detectsDistinctCorrectly(prefix + "DistinctUsersByLastname", true);
detectsDistinctCorrectly(prefix + "UsersByLastname", false);
detectsDistinctCorrectly(prefix + "ByLastname", false);
// Check it's non-greedy (would strip everything until Order*By*
// otherwise)
PartTree tree = detectsDistinctCorrectly(prefix + "ByLastnameOrderByFirstnameDesc", false);
assertThat(tree.getSort()).isEqualTo(Sort.by("firstname").descending());
}
}
Example 9
Project: ignite-master File: IgniteQueryGenerator.java View source code |
/** * @param mtd Method. * @param metadata Metadata. */ @NotNull public static IgniteQuery generateSql(Method mtd, RepositoryMetadata metadata) { PartTree parts = new PartTree(mtd.getName(), metadata.getDomainType()); StringBuilder sql = new StringBuilder(); if (parts.isDelete()) throw new UnsupportedOperationException("DELETE clause is not supported now."); else { sql.append("SELECT "); if (parts.isDistinct()) throw new UnsupportedOperationException("DISTINCT clause in not supported."); if (parts.isCountProjection()) sql.append("COUNT(1) "); else sql.append(" * "); } sql.append("FROM ").append(metadata.getDomainType().getSimpleName()); if (parts.iterator().hasNext()) { sql.append(" WHERE "); for (PartTree.OrPart orPart : parts) { sql.append("("); for (Part part : orPart) { handleQueryPart(sql, part); sql.append(" AND "); } sql.delete(sql.length() - 5, sql.length()); sql.append(") OR "); } sql.delete(sql.length() - 4, sql.length()); } addSorting(sql, parts.getSort()); if (parts.isLimiting()) { sql.append(" LIMIT "); sql.append(parts.getMaxResults().intValue()); } return new IgniteQuery(sql.toString(), parts.isCountProjection(), getOptions(mtd)); }
Example 10
Project: spring-roo-master File: Predicate.java View source code |
/**
* Splits source by Or{@literal Or} expressions and builds {@link OrPart}s which are simple conditions or expressions joined by And.
* E.g. from the source "LastNameAndFirstNameOrAge" it will build the "LastNameAndFirstName" and "Age" OrderParts.
*
* @param source the source to split up into {@literal Or} parts in turn.
*/
private void buildTree(String source) {
String[] split = PartTree.split(source, "Or", -1);
for (int i = 0; i < split.length; i++) {
// Validate previous expressions are correct
if (i > 0 && StringUtils.isBlank(split[i - 1])) {
throw new RuntimeException("ERROR: Missing expression before Or");
}
nodes.add(new OrPart(currentPartTreeInstance, split[i], fields));
}
// Validate expression before order clause is correct
if (hasOrderClause()) {
if (StringUtils.isBlank(split[split.length - 1])) {
throw new RuntimeException("ERROR: Missing expression before OrderBy");
}
List<Part> parts = nodes.get(nodes.size() - 1).getChildren();
if (!parts.get(parts.size() - 1).hasProperty()) {
throw new RuntimeException("ERROR: Missing expression before OrderBy");
}
}
}
Example 11
Project: spring-data-cassandra-master File: CassandraQueryCreatorUnitTests.java View source code |
private String createQuery(String source, Class<?> entityClass, Object... values) { PartTree tree = new PartTree(source, entityClass); CassandraQueryCreator creator = new CassandraQueryCreator(tree, getAccessor(converter, values), context); StatementFactory factory = new StatementFactory(new UpdateMapper(converter)); Query query = creator.createQuery(); RegularStatement select = factory.select(query, context.getRequiredPersistentEntity(entityClass)); return select.toString(); }
Example 12
Project: spring-data-solr-master File: SolrQueryCreatorTests.java View source code |
private Query createQueryForMethodWithArgs(Method method, Object[] args) { PartTree partTree = new PartTree(method.getName(), method.getReturnType()); SolrQueryMethod queryMethod = new SolrQueryMethod(method, metadata, new SpelAwareProxyProjectionFactory(), entityInformationCreatorMock); SolrQueryCreator creator = new SolrQueryCreator(partTree, new SolrParametersParameterAccessor(queryMethod, args), mappingContext); return creator.createQuery(); }
Example 13
Project: spring-data-dynamodb-master File: PartTreeDynamoDBQuery.java View source code |
public PartTree getTree() {
return tree;
}
Example 14
Project: spring-data-redis-master File: RedisQueryCreatorUnitTests.java View source code |
private RedisQueryCreator createQueryCreatorForMethodWithArgs(Method method, Object[] args) { PartTree partTree = new PartTree(method.getName(), method.getReturnType()); RedisQueryCreator creator = new RedisQueryCreator(partTree, new ParametersParameterAccessor(new DefaultParameters(method), args)); return creator; }