static NamedQueries findNamedQueries(Class<?> repositoryClass) { try { RepositoryConfigurationExtension config = new SnowdropRepositoryConfigExtension(); String location = config.getDefaultNamedQueryLocation(); PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(repositoryClass.getClassLoader()); ResourceArrayPropertyEditor editor = new ResourceArrayPropertyEditor(resolver, null); editor.setAsText(location); Resource[] resources = (Resource[]) editor.getValue(); PropertiesFactoryBean pfb = new PropertiesFactoryBean(); pfb.setSingleton(false); pfb.setLocations(resources); pfb.setFileEncoding("UTF-8"); Properties properties = pfb.getObject(); return new PropertiesBasedNamedQueries(properties); } catch (IOException e) { throw new IllegalStateException(e); } }
@Override protected RepositoryQuery resolveQuery(EbeanQueryMethod method, EbeanServer ebeanServer, NamedQueries namedQueries) { RepositoryQuery query = EbeanQueryFactory.INSTANCE.fromQueryAnnotation(method, ebeanServer, evaluationContextProvider); if (null != query) { return query; } String name = method.getNamedQueryName(); if (namedQueries.hasQuery(name)) { return EbeanQueryFactory.INSTANCE.fromMethodWithQueryString(method, ebeanServer, namedQueries.getQuery(name), evaluationContextProvider); } query = NamedEbeanQuery.lookupFrom(method, ebeanServer); if (null != query) { return query; } throw new IllegalStateException( String.format("Did neither find a NamedQuery nor an annotated query for method %s!", method)); }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, NamedQueries namedQueries) { SolrQueryMethod queryMethod = new SolrQueryMethod(method, metadata, entityInformationCreator); String namedQueryName = queryMethod.getNamedQueryName(); SolrOperations solrOperations = selectSolrOperations(metadata); if (namedQueries.hasQuery(namedQueryName)) { String namedQuery = namedQueries.getQuery(namedQueryName); return new StringBasedSolrQuery(namedQuery, queryMethod, solrOperations); } else if (queryMethod.hasAnnotatedQuery()) { return new StringBasedSolrQuery(queryMethod, solrOperations); } else { return new PartTreeSolrQuery(queryMethod, solrOperations); } }
@Override @SuppressWarnings("unchecked") public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory, NamedQueries namedQueries) { QueryMethod queryMethod = new QueryMethod(method, metadata, factory); Constructor<? extends KeyValuePartTreeQuery> constructor = (Constructor<? extends KeyValuePartTreeQuery>) ClassUtils .getConstructorIfAvailable(this.repositoryQueryType, QueryMethod.class, EvaluationContextProvider.class, KeyValueOperations.class, Class.class); Assert.state(constructor != null, String.format( "Constructor %s(QueryMethod, EvaluationContextProvider, KeyValueOperations, Class) not available!", ClassUtils.getShortName(this.repositoryQueryType))); return BeanUtils.instantiateClass(constructor, queryMethod, evaluationContextProvider, this.keyValueOperations, this.queryCreator); }
@Override protected RepositoryQuery resolveQuery(JdbcQueryMethod method, NamedQueries namedQueries) { PartTree tree = new PartTree(method.getName(), method.getEntityInformation().getJavaType()); JdbcByNameRepositoryQueryCreator creator = new JdbcByNameRepositoryQueryCreator(method, tree, generator, template, tableDescription, rowMapper); return creator.createQuery(); }
@Override protected RepositoryQuery resolveQuery(JdbcQueryMethod method, NamedQueries namedQueries) { try { return lookupStrategy.resolveQuery(method, namedQueries); } catch (IllegalStateException e) { return createStrategy.resolveQuery(method, namedQueries); } }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory, NamedQueries namedQueries) { final DocumentDbQueryMethod queryMethod = new DocumentDbQueryMethod(method, metadata, factory); Assert.notNull(queryMethod, "queryMethod must not be null!"); Assert.notNull(dbOperations, "dbOperations must not be null!"); return new PartTreeDocumentDbQuery(queryMethod, dbOperations); }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata repositoryMetadata, ProjectionFactory projectionFactory, NamedQueries namedQueries) { if (method.getAnnotation(MybatisQuery.class) != null) { log.info(repositoryMetadata.getRepositoryInterface().getName()+"."+method.getName()+" 为mybatis方法。 "); return new MybatisRepositoryQuery(sqlSessionTemplate , method , repositoryMetadata) ; } else { return jpaQueryLookupStrategy.resolveQuery(method, repositoryMetadata, projectionFactory,namedQueries); } }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory, NamedQueries namedQueries) { SnowdropQueryMethod queryMethod = new SnowdropQueryMethod(method, metadata, factory); String namedQueryName = queryMethod.getNamedQueryName(); if (namedQueries.hasQuery(namedQueryName)) { String namedQuery = namedQueries.getQuery(namedQueryName); return new SnowdropStringQuery(queryMethod, snowdropOperations, namedQuery); } else if (queryMethod.hasAnnotatedQuery()) { return new SnowdropStringQuery(queryMethod, snowdropOperations, queryMethod.getAnnotatedQuery()); } return new SnowdropPartQuery(queryMethod, snowdropOperations); }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory, NamedQueries namedQueries) { QueryMethod queryMethod = new QueryMethod(method, metadata, factory); return new ObjectifyRepositoryQuery(queryMethod); }
@Override protected RepositoryQuery resolveQuery(EbeanQueryMethod method, EbeanServer ebeanServer, NamedQueries namedQueries) { try { return new PartTreeEbeanQuery(method, ebeanServer); } catch (IllegalArgumentException e) { throw new IllegalArgumentException( String.format("Could not create query metamodel for method %s!", method.toString()), e); } }
@Override protected RepositoryQuery resolveQuery(EbeanQueryMethod method, EbeanServer ebeanServer, NamedQueries namedQueries) { try { return lookupStrategy.resolveQuery(method, ebeanServer, namedQueries); } catch (IllegalStateException e) { return createStrategy.resolveQuery(method, ebeanServer, namedQueries); } }
@Override protected RepositoryQuery resolveQuery(MybatisQueryMethod method, NamedQueries namedQueries) { try { return new PartTreeMybatisQuery(context, sqlSessionTemplate, dialect, method); } catch (IllegalArgumentException e) { throw new IllegalArgumentException( String.format("Could not create query metamodel for method %s!", method.toString()), e); } }
@Override protected RepositoryQuery resolveQuery(MybatisQueryMethod method, NamedQueries namedQueries) { RepositoryQuery query = MybatisQueryFactory.INSTANCE.fromQueryAnnotation(sqlSessionTemplate, method, evaluationContextProvider); if (null != query) { return query; } // String name = method.getNamedQueryName(); // if (namedQueries.hasQuery(name)) { // return MybatisQueryFactory.INSTANCE.fromMethodWithQueryString(sqlSessionTemplate, method, namedQueries.getQuery(name), evaluationContextProvider); // } throw new IllegalStateException( String.format("Did neither find a NamedQuery nor an annotated query for method %s!", method)); }
@Override protected RepositoryQuery resolveQuery(MybatisQueryMethod method, NamedQueries namedQueries) { try { return lookupStrategy.resolveQuery(method, namedQueries); } catch (IllegalStateException e) { return createStrategy.resolveQuery(method, namedQueries); } }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory, NamedQueries namedQueries) { if (method.getAnnotation(TemplateQuery.class) == null) { return jpaQueryLookupStrategy.resolveQuery(method, metadata, factory, namedQueries); } else { return new FreemarkerTemplateQuery(new JpaQueryMethod(method, metadata, factory, extractor), entityManager); } }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata repositoryMetadata, ProjectionFactory projectionFactory, NamedQueries namedQueries) { if (!isAggregateQueryAnnotated(method)) { return parentQueryLookupStrategy.resolveQuery(method, repositoryMetadata, projectionFactory, namedQueries); } else { return new AggregateMongoQuery(method, repositoryMetadata, mongoOperations, projectionFactory, queryExecutor); } }
/** * @since Spring data JPA 1.10.0 */ public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory, NamedQueries namedQueries) { QueryLookupStrategy queryLookupStrategy = Factory.super.getQueryLookupStrategy(key, evaluationContextProvider); RepositoryQuery query = queryLookupStrategy.resolveQuery(method, metadata, factory, namedQueries); return wrapQuery(method, metadata, query); }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, NamedQueries namedQueries) { if (method.getAnnotation(MybatisQuery.class) != null) { log.info(metadata.getRepositoryInterface().getName()+"."+method.getName()+" 为mybatis方法。 "); return new MybatisRepositoryQuery(sqlSessionTemplate , method , metadata) ; } else { return jpaQueryLookupStrategy.resolveQuery(method, metadata, namedQueries); } }
/** {@inheritDoc} */ @Override protected QueryLookupStrategy getQueryLookupStrategy(final QueryLookupStrategy.Key key, EvaluationContextProvider evaluationCtxProvider) { return new QueryLookupStrategy() { @Override public RepositoryQuery resolveQuery(final Method mtd, final RepositoryMetadata metadata, final ProjectionFactory factory, NamedQueries namedQueries) { final Query annotation = mtd.getAnnotation(Query.class); if (annotation != null) { String qryStr = annotation.value(); if (key != Key.CREATE && StringUtils.hasText(qryStr)) return new IgniteRepositoryQuery(metadata, new IgniteQuery(qryStr, isFieldQuery(qryStr), IgniteQueryGenerator.getOptions(mtd)), mtd, factory, ignite.getOrCreateCache(repoToCache.get(metadata.getRepositoryInterface()))); } if (key == QueryLookupStrategy.Key.USE_DECLARED_QUERY) throw new IllegalStateException("To use QueryLookupStrategy.Key.USE_DECLARED_QUERY, pass " + "a query string via org.apache.ignite.springdata.repository.config.Query annotation."); return new IgniteRepositoryQuery(metadata, IgniteQueryGenerator.generateSql(mtd, metadata), mtd, factory, ignite.getOrCreateCache(repoToCache.get(metadata.getRepositoryInterface()))); } }; }
/** * <P> * Use {@link HazelcastPartTreeQuery} for resolving queries against Hazelcast repositories. * </P> * * @param Method, the query method * @param RepositoryMetadata, not used * @param ProjectionFactory, not used * @param NamedQueries, not used * @return A mechanism for querying Hazelcast repositories */ public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory projectionFactory, NamedQueries namedQueries) { HazelcastQueryMethod queryMethod = new HazelcastQueryMethod(method, metadata, projectionFactory); if (queryMethod.hasAnnotatedQuery()) { return new StringBasedHazelcastRepositoryQuery(queryMethod); } return new HazelcastPartTreeQuery(queryMethod, evaluationContextProvider, this.keyValueOperations, this.queryCreator); }
@Override protected <T, ID extends Serializable> RepositoryQuery createDynamoDBQuery(Method method, RepositoryMetadata metadata, Class<T> entityClass, Class<ID> idClass, NamedQueries namedQueries) { try { return new PartTreeDynamoDBQuery<T, ID>(dynamoDBOperations, new DynamoDBQueryMethod<T, ID>(method, metadata)); } catch (IllegalArgumentException e) { throw new IllegalArgumentException(String.format("Could not create query metamodel for method %s!", method.toString()), e); } }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, NamedQueries namedQueries) { SimpleDbQueryMethod queryMethod; if(SimpleDbQueryMethod.isAnnotatedQuery(method)) { queryMethod = new SimpleDbQueryMethod(method, metadata, simpleDbOperations.getSimpleDb() .getSimpleDbDomain()); } else { queryMethod = new SimpleDbPartTreeQueryMethod(method, metadata, simpleDbOperations.getSimpleDb() .getSimpleDbDomain()); } return SimpleDbRepositoryQuery.fromQueryAnnotation(queryMethod, simpleDbOperations); }
@Override public RepositoryQuery resolveQuery(final Method method, final RepositoryMetadata metadata, final ProjectionFactory factory, final NamedQueries namedQueries) { return resolveQuery(new JdbcQueryMethod(method, metadata, factory), namedQueries); }
@Override protected RepositoryQuery resolveQuery(JdbcQueryMethod method, NamedQueries namedQueries) { JdbcAnnotatedRepositoryQueryCreator creator = new JdbcAnnotatedRepositoryQueryCreator(method, generator, template, tableDescription, rowMapper); return creator.createQuery(); }
public void setNamedQueries(NamedQueries namedQueries) { this.namedQueries = namedQueries; }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory, NamedQueries namedQueries) { return null; }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory, NamedQueries namedQueries) { return JdbcTemplateRepositoryQuery.create(beanFactory, configuration, method, metadata, factory); }
@Override public final RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory, NamedQueries namedQueries) { return resolveQuery(new EbeanQueryMethod(method, metadata, factory), ebeanServer, namedQueries); }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory, NamedQueries namedQueries) { return resolveQuery(new MybatisQueryMethod(method, metadata, factory), namedQueries); }
@Override public RepositoryQuery resolveQuery(final Method method, final RepositoryMetadata metadata, NamedQueries namedQueries) { final MyBatisQueryMethod queryMethod = new MyBatisQueryMethod(method, metadata); return new MyBatisQuery(queryMethod, provider); }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, NamedQueries namedQueries) { //TODO: implement this method return null; }
@Override public final RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, NamedQueries namedQueries) { return createDynamoDBQuery(method, metadata, metadata.getDomainType(), metadata.getIdType(), namedQueries); }
protected abstract <T, ID extends Serializable> RepositoryQuery createDynamoDBQuery(Method method, RepositoryMetadata metadata, Class<T> entityClass, Class<ID> idClass, NamedQueries namedQueries);
@Override protected <T, ID extends Serializable> RepositoryQuery createDynamoDBQuery(Method method, RepositoryMetadata metadata, Class<T> entityClass, Class<ID> idClass, NamedQueries namedQueries) { throw new UnsupportedOperationException("Declared Queries not supported at this time"); }
/** * Resolve query to return .RepositoryQuery * * @param method * @param ebeanServer * @param namedQueries * @return RepositoryQuery */ protected abstract RepositoryQuery resolveQuery(EbeanQueryMethod method, EbeanServer ebeanServer, NamedQueries namedQueries);
protected abstract RepositoryQuery resolveQuery(JdbcQueryMethod method, NamedQueries namedQueries);
protected abstract RepositoryQuery resolveQuery(MybatisQueryMethod method, NamedQueries namedQueries);