protected PagingQueryProvider getPagingQueryProvider() throws Exception { SqlPagingQueryProviderFactoryBean factory = new SqlPagingQueryProviderFactoryBean(); factory.setDataSource(dataSource); factory.setSelectClause("select ID, NAME, VALUE"); factory.setFromClause("from T_FOOS"); Map<String, Order> sortKeys = new LinkedHashMap<>(); sortKeys.put("VALUE", Order.ASCENDING); factory.setSortKeys(sortKeys); return factory.getObject(); }
public SqlPagingQueryProviderFactoryBeanTests() throws Exception { factory.setSelectClause("id, name, age"); factory.setFromClause("foo"); factory.setWhereClause("bar = 1"); Map<String, Order> sortKeys = new LinkedHashMap<>(); sortKeys.put("id", Order.ASCENDING); factory.setSortKeys(sortKeys); DataSource dataSource = DatabaseTypeTestUtils.getMockDataSource(DatabaseType.HSQL.getProductName(), "100.0.0"); factory.setDataSource(dataSource); }
@Test(expected=IllegalArgumentException.class) public void testNoDataSource() throws Exception { factory.setDataSource(null); PagingQueryProvider provider = factory.getObject(); assertNotNull(provider); }
@Bean public ItemReader<Person> jdbcPagingItemReader(DataSource dataSource) { SqlPagingQueryProviderFactoryBean bean = new SqlPagingQueryProviderFactoryBean(); bean.setDataSource(dataSource); bean.setSelectClause("*"); bean.setFromClause("PERSONS"); bean.setSortKey("ID"); JdbcPagingItemReader<Person> reader = new JdbcPagingItemReader<>(); reader.setDataSource(dataSource); try { reader.setQueryProvider(bean.getObject()); } catch (Exception e) { throw new RuntimeException(e); } reader.setRowMapper((rs, rowNum) -> Person.builder() .firstName(rs.getString("FIRST_NAME")) .lastName(rs.getString("LAST_NAME")) .mail(rs.getString("MAIL")) .build() ); return reader; } }
@Test(expected=IllegalArgumentException.class) public void testNoSortKey() throws Exception { factory.setSortKeys(null); PagingQueryProvider provider = factory.getObject(); assertNotNull(provider); }
@Test public void testWhereClause() throws Exception { factory.setWhereClause("x=y"); PagingQueryProvider provider = factory.getObject(); String query = provider.generateFirstPageQuery(100); assertTrue("Wrong query: "+query, query.contains("x=y")); }
@Test(expected=IllegalArgumentException.class) public void testWrongDatabaseType() throws Exception { factory.setDatabaseType("NoSuchDb"); PagingQueryProvider provider = factory.getObject(); assertNotNull(provider); }
@Test public void testFactory() throws Exception { PagingQueryProvider provider = factory.getObject(); assertNotNull(provider); }
@Test(expected=IllegalArgumentException.class) public void testMissingMetaData() throws Exception { factory.setDataSource(DatabaseTypeTestUtils.getMockDataSource(new MetaDataAccessException("foo"))); PagingQueryProvider provider = factory.getObject(); assertNotNull(provider); }
@Test public void testAllDatabaseTypes() throws Exception { for (DatabaseType type : DatabaseType.values()) { factory.setDatabaseType(type.name()); PagingQueryProvider provider = factory.getObject(); assertNotNull(provider); } }
@Test public void testAscending() throws Exception { PagingQueryProvider provider = factory.getObject(); String query = provider.generateFirstPageQuery(100); assertTrue("Wrong query: "+query, query.contains("ASC")); }
protected ItemReader<Foo> getItemReader() throws Exception { JdbcPagingItemReader<Foo> reader = new JdbcPagingItemReader<>(); reader.setDataSource(dataSource); SqlPagingQueryProviderFactoryBean factory = new SqlPagingQueryProviderFactoryBean(); factory.setDataSource(dataSource); factory.setSelectClause("select ID, NAME, VALUE"); factory.setFromClause("from T_FOOS"); Map<String, Order> sortKeys = new LinkedHashMap<>(); sortKeys.put("VALUE", Order.ASCENDING); factory.setSortKeys(sortKeys); reader.setQueryProvider(factory.getObject()); reader.setRowMapper(new RowMapper<Foo>() { @Override public Foo mapRow(ResultSet rs, int i) throws SQLException { Foo foo = new Foo(); foo.setId(rs.getInt(1)); foo.setName(rs.getString(2)); foo.setValue(rs.getInt(3)); return foo; } }); reader.setPageSize(pageSize); reader.afterPropertiesSet(); reader.setSaveState(true); return reader; }
protected ItemReader<Foo> getItemReader() throws Exception { JdbcPagingItemReader<Foo> reader = new JdbcPagingItemReader<>(); reader.setDataSource(dataSource); SqlPagingQueryProviderFactoryBean factory = new SqlPagingQueryProviderFactoryBean(); factory.setDataSource(dataSource); factory.setSelectClause("select ID, NAME, VALUE"); factory.setFromClause("from T_FOOS"); Map<String, Order> sortKeys = new LinkedHashMap<>(); sortKeys.put("VALUE", Order.ASCENDING); factory.setSortKeys(sortKeys); reader.setQueryProvider(factory.getObject()); reader.setRowMapper(new RowMapper<Foo>() { @Override public Foo mapRow(ResultSet rs, int i) throws SQLException { Foo foo = new Foo(); foo.setId(rs.getInt(1)); foo.setName(rs.getString(2)); foo.setValue(rs.getInt(3)); return foo; } }); reader.setPageSize(PAGE_SIZE); reader.afterPropertiesSet(); reader.setSaveState(false); return reader; }
/** * @return a {@link PagingQueryProvider} with a where clause to narrow the * query * @throws Exception */ private PagingQueryProvider getPagingQueryProvider(String fromClause, String whereClause) throws Exception { SqlPagingQueryProviderFactoryBean factory = new SqlPagingQueryProviderFactoryBean(); factory.setDataSource(dataSource); fromClause = "%PREFIX%JOB_EXECUTION E, %PREFIX%JOB_INSTANCE I" + (fromClause == null ? "" : ", " + fromClause); factory.setFromClause(getQuery(fromClause)); factory.setSelectClause(FIELDS); Map<String, Order> sortKeys = new HashMap<String, Order>(); sortKeys.put("JOB_EXECUTION_ID", Order.DESCENDING); factory.setSortKeys(sortKeys); whereClause = "E.JOB_INSTANCE_ID=I.JOB_INSTANCE_ID" + (whereClause == null ? "" : " and " + whereClause); factory.setWhereClause(whereClause); return (PagingQueryProvider) factory.getObject(); }
private PagingQueryProvider getPagingQueryProviderForQueryService(String fromClause, String whereClause, final Boolean withJobName) throws Exception { final SqlPagingQueryProviderFactoryBean factory = new SqlPagingQueryProviderFactoryBean(); factory.setDataSource(this.dataSource); fromClause = "%PREFIX%JOB_EXECUTION E, %PREFIX%JOB_INSTANCE I" + (fromClause == null ? "" : ", " + fromClause); factory.setFromClause(this.getQuery(fromClause)); factory.setSelectClause(FIELDS); final Map<String, Order> sortKeys = new HashMap<>(); sortKeys.put("JOB_EXECUTION_ID", Order.DESCENDING); factory.setSortKeys(sortKeys); whereClause = "%s E.JOB_INSTANCE_ID=I.JOB_INSTANCE_ID" + (whereClause == null ? "" : whereClause); if (withJobName) { whereClause = String.format(whereClause, " I.JOB_NAME=? AND "); } else { whereClause = String.format(whereClause, ""); } factory.setWhereClause(whereClause); return factory.getObject(); }
/** * @return a {@link PagingQueryProvider} with a where clause to narrow the * query * @throws Exception */ private PagingQueryProvider getPagingQueryProvider(String fromClause, String whereClause) throws Exception { final SqlPagingQueryProviderFactoryBean factory = new SqlPagingQueryProviderFactoryBean(); factory.setDataSource(this.dataSource); fromClause = "%PREFIX%JOB_EXECUTION E, %PREFIX%JOB_INSTANCE I" + (fromClause == null ? "" : ", " + fromClause); factory.setFromClause(this.getQuery(fromClause)); factory.setSelectClause(FIELDS); final Map<String, Order> sortKeys = new HashMap<>(); sortKeys.put("JOB_EXECUTION_ID", Order.DESCENDING); factory.setSortKeys(sortKeys); whereClause = "E.JOB_INSTANCE_ID=I.JOB_INSTANCE_ID" + (whereClause == null ? "" : " and " + whereClause); factory.setWhereClause(whereClause); return factory.getObject(); }
/** * @return a {@link PagingQueryProvider} with a where clause to narrow the * query * @throws Exception if page provider is not created. */ private PagingQueryProvider getPagingQueryProvider(String fields, String fromClause, String whereClause) throws Exception { SqlPagingQueryProviderFactoryBean factory = new SqlPagingQueryProviderFactoryBean(); factory.setDataSource(dataSource); fromClause = "%PREFIX%JOB_EXECUTION E, %PREFIX%JOB_INSTANCE I" + (fromClause == null ? "" : ", " + fromClause); factory.setFromClause(getQuery(fromClause)); if(fields == null) { fields = FIELDS; } factory.setSelectClause(getQuery(fields)); Map<String, Order> sortKeys = new HashMap<String, Order>(); sortKeys.put("JOB_EXECUTION_ID", Order.DESCENDING); factory.setSortKeys(sortKeys); whereClause = "E.JOB_INSTANCE_ID=I.JOB_INSTANCE_ID" + (whereClause == null ? "" : " and " + whereClause); factory.setWhereClause(whereClause); return factory.getObject(); }
/** * @return a {@link PagingQueryProvider} with a where clause to narrow the * query * @throws Exception */ private PagingQueryProvider getPagingQueryProvider(String whereClause) { SqlPagingQueryProviderFactoryBean factory = new SqlPagingQueryProviderFactoryBean(); factory.setDataSource(dataSource); factory.setFromClause(getQuery("%PREFIX%STEP_EXECUTION S, %PREFIX%JOB_EXECUTION J, %PREFIX%JOB_INSTANCE I")); factory.setSelectClause(FIELDS); Map<String, Order> sortKeys = new HashMap<String, Order>(); sortKeys.put("STEP_EXECUTION_ID", Order.DESCENDING); factory.setSortKeys(sortKeys); if (whereClause != null) { factory.setWhereClause(whereClause + " AND S.JOB_EXECUTION_ID = J.JOB_EXECUTION_ID AND J.JOB_INSTANCE_ID = I.JOB_INSTANCE_ID"); } try { return (PagingQueryProvider) factory.getObject(); } catch (Exception e) { throw new IllegalStateException("Unexpected exception creating paging query provide", e); } }
/** * @return a {@link PagingQueryProvider} with a where clause to narrow the * query * @throws Exception */ private PagingQueryProvider getPagingQueryProvider(String whereClause) { SqlPagingQueryProviderFactoryBean factory = new SqlPagingQueryProviderFactoryBean(); factory.setDataSource(dataSource); factory.setFromClause(getQuery("%PREFIX%STEP_EXECUTION S, %PREFIX%JOB_EXECUTION J, %PREFIX%JOB_INSTANCE I")); factory.setSelectClause(FIELDS); Map<String, Order> sortKeys = new HashMap<String, Order>(); sortKeys.put("STEP_EXECUTION_ID", Order.DESCENDING); factory.setSortKeys(sortKeys); if (whereClause != null) { factory.setWhereClause(whereClause + " AND S.JOB_EXECUTION_ID = J.JOB_EXECUTION_ID AND J.JOB_INSTANCE_ID = I.JOB_INSTANCE_ID"); } try { return (PagingQueryProvider) factory.getObject(); } catch (Exception e) { throw new IllegalStateException("Unexpected exception creating paging query provide", e); } }