Skip to content

Commit ed49820

Browse files
committed
[bq] use generic spring-javaformat
Signed-off-by: Dgray16 <[email protected]>
1 parent 66d5bc3 commit ed49820

File tree

54 files changed

+3493
-3292
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+3493
-3292
lines changed

spring-batch-bigquery/pom.xml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@
137137
</execution>
138138
</executions>
139139
</plugin>
140+
140141
<!-- Run tests -->
141142
<plugin>
142143
<groupId>org.apache.maven.plugins</groupId>
@@ -149,6 +150,7 @@
149150
</includes>
150151
</configuration>
151152
</plugin>
153+
152154
<!-- Generates a flattened version of the pom.xml, used instead of the original -->
153155
<plugin>
154156
<groupId>org.codehaus.mojo</groupId>
@@ -177,6 +179,21 @@
177179
</execution>
178180
</executions>
179181
</plugin>
182+
183+
<!-- Formatting -->
184+
<plugin>
185+
<groupId>io.spring.javaformat</groupId>
186+
<artifactId>spring-javaformat-maven-plugin</artifactId>
187+
<executions>
188+
<execution>
189+
<phase>validate</phase>
190+
<inherited>true</inherited>
191+
<goals>
192+
<goal>validate</goal>
193+
</goals>
194+
</execution>
195+
</executions>
196+
</plugin>
180197
</plugins>
181198
</build>
182199
</project>

spring-batch-bigquery/src/main/java/org/springframework/batch/extensions/bigquery/reader/BigQueryQueryItemReader.java

Lines changed: 71 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@
3131
/**
3232
* BigQuery {@link ItemReader} that accepts simple query as the input.
3333
* <p>
34-
* Internally BigQuery Java library creates a {@link com.google.cloud.bigquery.JobConfiguration.Type#QUERY} job.
34+
* Internally BigQuery Java library creates a
35+
* {@link com.google.cloud.bigquery.JobConfiguration.Type#QUERY} job.
36+
* <p>
3537
* Which means that result is coming asynchronously.
3638
* <p>
3739
* Also, worth mentioning that you should take into account concurrency limits.
@@ -41,71 +43,76 @@
4143
* @param <T> your DTO type
4244
* @author Volodymyr Perebykivskyi
4345
* @since 0.2.0
44-
* @see <a href="https://cloud.google.com/bigquery/docs/running-queries#queries">Interactive queries</a>
45-
* @see <a href="https://cloud.google.com/bigquery/docs/running-queries#batch">Batch queries</a>
46-
* @see <a href="https://cloud.google.com/bigquery/quotas#concurrent_rate_interactive_queries">Concurrency limits</a>
46+
* @see <a href=
47+
* "https://cloud.google.com/bigquery/docs/running-queries#queries">Interactive
48+
* queries</a>
49+
* @see <a href="https://cloud.google.com/bigquery/docs/running-queries#batch">Batch
50+
* queries</a>
51+
* @see <a href=
52+
* "https://cloud.google.com/bigquery/quotas#concurrent_rate_interactive_queries">Concurrency
53+
* limits</a>
4754
*/
4855
public class BigQueryQueryItemReader<T> implements ItemReader<T>, InitializingBean {
4956

50-
private final Log logger = LogFactory.getLog(getClass());
51-
52-
private BigQuery bigQuery;
53-
private Converter<FieldValueList, T> rowMapper;
54-
private QueryJobConfiguration jobConfiguration;
55-
private Iterator<FieldValueList> iterator;
56-
57-
/**
58-
* BigQuery service, responsible for API calls.
59-
*
60-
* @param bigQuery BigQuery service
61-
*/
62-
public void setBigQuery(BigQuery bigQuery) {
63-
this.bigQuery = bigQuery;
64-
}
65-
66-
/**
67-
* Row mapper which transforms single BigQuery row into a desired type.
68-
*
69-
* @param rowMapper your row mapper
70-
*/
71-
public void setRowMapper(Converter<FieldValueList, T> rowMapper) {
72-
this.rowMapper = rowMapper;
73-
}
74-
75-
/**
76-
* Specifies query to run, destination table, etc.
77-
*
78-
* @param jobConfiguration BigQuery job configuration
79-
*/
80-
public void setJobConfiguration(QueryJobConfiguration jobConfiguration) {
81-
this.jobConfiguration = jobConfiguration;
82-
}
83-
84-
@Override
85-
public T read() throws Exception {
86-
if (iterator == null) {
87-
doOpen();
88-
}
89-
90-
if (logger.isDebugEnabled()) {
91-
logger.debug("Reading next element");
92-
}
93-
94-
return iterator.hasNext() ? rowMapper.convert(iterator.next()) : null;
95-
}
96-
97-
private void doOpen() throws Exception {
98-
if (logger.isDebugEnabled()) {
99-
logger.debug("Executing query");
100-
}
101-
iterator = bigQuery.query(jobConfiguration).getValues().iterator();
102-
}
103-
104-
@Override
105-
public void afterPropertiesSet() {
106-
Assert.notNull(this.bigQuery, "BigQuery service must be provided");
107-
Assert.notNull(this.rowMapper, "Row mapper must be provided");
108-
Assert.notNull(this.jobConfiguration, "Job configuration must be provided");
109-
}
57+
private final Log logger = LogFactory.getLog(getClass());
58+
59+
private BigQuery bigQuery;
60+
61+
private Converter<FieldValueList, T> rowMapper;
62+
63+
private QueryJobConfiguration jobConfiguration;
64+
65+
private Iterator<FieldValueList> iterator;
66+
67+
/**
68+
* BigQuery service, responsible for API calls.
69+
* @param bigQuery BigQuery service
70+
*/
71+
public void setBigQuery(final BigQuery bigQuery) {
72+
this.bigQuery = bigQuery;
73+
}
74+
75+
/**
76+
* Row mapper which transforms single BigQuery row into a desired type.
77+
* @param rowMapper your row mapper
78+
*/
79+
public void setRowMapper(final Converter<FieldValueList, T> rowMapper) {
80+
this.rowMapper = rowMapper;
81+
}
82+
83+
/**
84+
* Specifies query to run, destination table, etc.
85+
* @param jobConfiguration BigQuery job configuration
86+
*/
87+
public void setJobConfiguration(final QueryJobConfiguration jobConfiguration) {
88+
this.jobConfiguration = jobConfiguration;
89+
}
90+
91+
@Override
92+
public T read() throws Exception {
93+
if (iterator == null) {
94+
doOpen();
95+
}
96+
97+
if (logger.isDebugEnabled()) {
98+
logger.debug("Reading next element");
99+
}
100+
101+
return iterator.hasNext() ? rowMapper.convert(iterator.next()) : null;
102+
}
103+
104+
private void doOpen() throws Exception {
105+
if (logger.isDebugEnabled()) {
106+
logger.debug("Executing query");
107+
}
108+
iterator = bigQuery.query(jobConfiguration).getValues().iterator();
109+
}
110+
111+
@Override
112+
public void afterPropertiesSet() {
113+
Assert.notNull(this.bigQuery, "BigQuery service must be provided");
114+
Assert.notNull(this.rowMapper, "Row mapper must be provided");
115+
Assert.notNull(this.jobConfiguration, "Job configuration must be provided");
116+
}
110117

111118
}

spring-batch-bigquery/src/main/java/org/springframework/batch/extensions/bigquery/reader/builder/BigQueryQueryItemReaderBuilder.java

Lines changed: 101 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -31,107 +31,109 @@
3131
* @param <T> your DTO type
3232
* @author Volodymyr Perebykivskyi
3333
* @since 0.2.0
34-
* @see <a href="https://github.com/spring-projects/spring-batch-extensions/tree/main/spring-batch-bigquery/src/test/java/org/springframework/batch/extensions/bigquery/unit/reader/builder/BigQueryInteractiveQueryItemReaderBuilderTests.java">Examples</a>
35-
* @see <a href="https://github.com/spring-projects/spring-batch-extensions/tree/main/spring-batch-bigquery/src/test/java/org/springframework/batch/extensions/bigquery/unit/reader/builder/BigQueryBatchQueryItemReaderBuilderTests.java">Examples</a>
34+
* @see <a href=
35+
* "https://github.com/spring-projects/spring-batch-extensions/tree/main/spring-batch-bigquery/src/test/java/org/springframework/batch/extensions/bigquery/unit/reader/builder/BigQueryInteractiveQueryItemReaderBuilderTests.java">Examples</a>
36+
* @see <a href=
37+
* "https://github.com/spring-projects/spring-batch-extensions/tree/main/spring-batch-bigquery/src/test/java/org/springframework/batch/extensions/bigquery/unit/reader/builder/BigQueryBatchQueryItemReaderBuilderTests.java">Examples</a>
3638
*/
3739
public class BigQueryQueryItemReaderBuilder<T> {
3840

39-
private BigQuery bigQuery;
40-
private String query;
41-
private Converter<FieldValueList, T> rowMapper;
42-
private QueryJobConfiguration jobConfiguration;
43-
private Class<T> targetType;
44-
45-
/**
46-
* BigQuery service, responsible for API calls.
47-
*
48-
* @param bigQuery BigQuery service
49-
* @return {@link BigQueryQueryItemReaderBuilder}
50-
* @see BigQueryQueryItemReader#setBigQuery(BigQuery)
51-
*/
52-
public BigQueryQueryItemReaderBuilder<T> bigQuery(final BigQuery bigQuery) {
53-
this.bigQuery = bigQuery;
54-
return this;
55-
}
56-
57-
/**
58-
* Schema of the query: {@code SELECT <column> FROM <dataset>.<table>}.
59-
* <p>
60-
* It is really recommended to use {@code LIMIT n}
61-
* because BigQuery charges you for the amount of data that is being processed.
62-
*
63-
* @param query your query to run
64-
* @return {@link BigQueryQueryItemReaderBuilder}
65-
* @see BigQueryQueryItemReader#setJobConfiguration(QueryJobConfiguration)
66-
*/
67-
public BigQueryQueryItemReaderBuilder<T> query(final String query) {
68-
this.query = query;
69-
return this;
70-
}
71-
72-
/**
73-
* Row mapper which transforms single BigQuery row into a desired type.
74-
*
75-
* @param rowMapper your row mapper
76-
* @return {@link BigQueryQueryItemReaderBuilder}
77-
* @see BigQueryQueryItemReader#setRowMapper(Converter)
78-
*/
79-
public BigQueryQueryItemReaderBuilder<T> rowMapper(final Converter<FieldValueList, T> rowMapper) {
80-
this.rowMapper = rowMapper;
81-
return this;
82-
}
83-
84-
/**
85-
* Specifies query to run, destination table, etc.
86-
*
87-
* @param jobConfiguration BigQuery job configuration
88-
* @return {@link BigQueryQueryItemReaderBuilder}
89-
* @see BigQueryQueryItemReader#setJobConfiguration(QueryJobConfiguration)
90-
*/
91-
public BigQueryQueryItemReaderBuilder<T> jobConfiguration(final QueryJobConfiguration jobConfiguration) {
92-
this.jobConfiguration = jobConfiguration;
93-
return this;
94-
}
95-
96-
/**
97-
* Specifies a target type which will be used as a result.
98-
* Only needed when {@link BigQueryQueryItemReaderBuilder#rowMapper} is not provided.
99-
* Take into account that only {@link Class#isRecord()} supported.
100-
*
101-
* @param targetType a {@link Class} that represent desired type
102-
* @return {@link BigQueryQueryItemReaderBuilder}
103-
*/
104-
public BigQueryQueryItemReaderBuilder<T> targetType(final Class<T> targetType) {
105-
this.targetType = targetType;
106-
return this;
107-
}
108-
109-
/**
110-
* Please remember about {@link BigQueryQueryItemReader#afterPropertiesSet()}.
111-
*
112-
* @return {@link BigQueryQueryItemReader}
113-
*/
114-
public BigQueryQueryItemReader<T> build() {
115-
final BigQueryQueryItemReader<T> reader = new BigQueryQueryItemReader<>();
116-
117-
reader.setBigQuery(this.bigQuery == null ? BigQueryOptions.getDefaultInstance().getService() : this.bigQuery);
118-
119-
if (this.rowMapper == null) {
120-
Assert.notNull(this.targetType, "No target type provided");
121-
Assert.isTrue(this.targetType.isRecord(), "Only Java record supported");
122-
reader.setRowMapper(new RecordMapper<T>().generateMapper(this.targetType));
123-
} else {
124-
reader.setRowMapper(this.rowMapper);
125-
}
126-
127-
if (this.jobConfiguration == null) {
128-
Assert.isTrue(StringUtils.hasText(this.query), "No query provided");
129-
reader.setJobConfiguration(QueryJobConfiguration.newBuilder(this.query).build());
130-
} else {
131-
reader.setJobConfiguration(this.jobConfiguration);
132-
}
133-
134-
return reader;
135-
}
41+
private BigQuery bigQuery;
42+
43+
private String query;
44+
45+
private Converter<FieldValueList, T> rowMapper;
46+
47+
private QueryJobConfiguration jobConfiguration;
48+
49+
private Class<T> targetType;
50+
51+
/**
52+
* BigQuery service, responsible for API calls.
53+
* @param bigQuery BigQuery service
54+
* @return {@link BigQueryQueryItemReaderBuilder}
55+
* @see BigQueryQueryItemReader#setBigQuery(BigQuery)
56+
*/
57+
public BigQueryQueryItemReaderBuilder<T> bigQuery(final BigQuery bigQuery) {
58+
this.bigQuery = bigQuery;
59+
return this;
60+
}
61+
62+
/**
63+
* Schema of the query: {@code SELECT column FROM dataset.table}.
64+
* <p>
65+
* It is really recommended to use {@code LIMIT n} because BigQuery charges you for
66+
* the amount of data that is being processed.
67+
* @param query your query to run
68+
* @return {@link BigQueryQueryItemReaderBuilder}
69+
* @see BigQueryQueryItemReader#setJobConfiguration(QueryJobConfiguration)
70+
*/
71+
public BigQueryQueryItemReaderBuilder<T> query(final String query) {
72+
this.query = query;
73+
return this;
74+
}
75+
76+
/**
77+
* Row mapper which transforms single BigQuery row into a desired type.
78+
* @param rowMapper your row mapper
79+
* @return {@link BigQueryQueryItemReaderBuilder}
80+
* @see BigQueryQueryItemReader#setRowMapper(Converter)
81+
*/
82+
public BigQueryQueryItemReaderBuilder<T> rowMapper(final Converter<FieldValueList, T> rowMapper) {
83+
this.rowMapper = rowMapper;
84+
return this;
85+
}
86+
87+
/**
88+
* Specifies query to run, destination table, etc.
89+
* @param jobConfiguration BigQuery job configuration
90+
* @return {@link BigQueryQueryItemReaderBuilder}
91+
* @see BigQueryQueryItemReader#setJobConfiguration(QueryJobConfiguration)
92+
*/
93+
public BigQueryQueryItemReaderBuilder<T> jobConfiguration(final QueryJobConfiguration jobConfiguration) {
94+
this.jobConfiguration = jobConfiguration;
95+
return this;
96+
}
97+
98+
/**
99+
* Specifies a target type which will be used as a result. Only needed when
100+
* {@link BigQueryQueryItemReaderBuilder#rowMapper} is not provided. Take into account
101+
* that only {@link Class#isRecord()} supported.
102+
* @param targetType a {@link Class} that represent desired type
103+
* @return {@link BigQueryQueryItemReaderBuilder}
104+
*/
105+
public BigQueryQueryItemReaderBuilder<T> targetType(final Class<T> targetType) {
106+
this.targetType = targetType;
107+
return this;
108+
}
109+
110+
/**
111+
* Please remember about {@link BigQueryQueryItemReader#afterPropertiesSet()}.
112+
* @return {@link BigQueryQueryItemReader}
113+
*/
114+
public BigQueryQueryItemReader<T> build() {
115+
final BigQueryQueryItemReader<T> reader = new BigQueryQueryItemReader<>();
116+
117+
reader.setBigQuery(this.bigQuery == null ? BigQueryOptions.getDefaultInstance().getService() : this.bigQuery);
118+
119+
if (this.rowMapper == null) {
120+
Assert.notNull(this.targetType, "No target type provided");
121+
Assert.isTrue(this.targetType.isRecord(), "Only Java record supported");
122+
reader.setRowMapper(new RecordMapper<T>().generateMapper(this.targetType));
123+
}
124+
else {
125+
reader.setRowMapper(this.rowMapper);
126+
}
127+
128+
if (this.jobConfiguration == null) {
129+
Assert.isTrue(StringUtils.hasText(this.query), "No query provided");
130+
reader.setJobConfiguration(QueryJobConfiguration.newBuilder(this.query).build());
131+
}
132+
else {
133+
reader.setJobConfiguration(this.jobConfiguration);
134+
}
135+
136+
return reader;
137+
}
136138

137139
}

0 commit comments

Comments
 (0)