29
29
import org .joda .time .format .ISODateTimeFormat ;
30
30
31
31
import java .io .IOException ;
32
- import java .util .ArrayList ;
32
+ import java .util .Arrays ;
33
33
import java .util .Iterator ;
34
34
import java .util .List ;
35
35
import java .util .stream .Collectors ;
@@ -43,16 +43,32 @@ public class QueryParametersSample {
43
43
private static void printUsage () {
44
44
System .err .println ("Usage:" );
45
45
System .err .printf (
46
- "mvn exec:java -Dexec.mainClass=%s -Dexec.args=%s \n " ,
46
+ "\t mvn exec:java -Dexec.mainClass=%s -Dexec.args='%s' \n " ,
47
47
QueryParametersSample .class .getCanonicalName (),
48
- "sample" );
49
- System .err .println ("sample values: named|array|struct|timestamp" );
50
- System .err .println ("Usage for sample=named:" );
51
- System .err .println ("\t named corpus minWordCount" );
48
+ "${sample}" );
49
+ System .err .println ();
50
+ System .err .println ("${sample} can be one of: named, array, timestamp" );
51
+ System .err .println ();
52
+ System .err .println ("Usage for ${sample}=named:" );
53
+ System .err .printf (
54
+ "\t mvn exec:java -Dexec.mainClass=%s -Dexec.args='%s'\n " ,
55
+ QueryParametersSample .class .getCanonicalName (),
56
+ "named ${corpus} ${minWordCount}" );
57
+ System .err .println ();
52
58
System .err .println ("Usage for sample=array:" );
53
- System .err .println ("\t array gender states..." );
54
- System .err .println ("\t gender=M|F" );
55
- System .err .println ("\t states=Upper-case 2-letter code for U.S. state, e.g. CA." );
59
+ System .err .printf (
60
+ "\t mvn exec:java -Dexec.mainClass=%s -Dexec.args='%s'\n " ,
61
+ QueryParametersSample .class .getCanonicalName (),
62
+ "array ${gender} ${states...}" );
63
+ System .err .println ();
64
+ System .err .println ("\t where ${gender} can be on of: M, F" );
65
+ System .err .println (
66
+ "\t and ${states} is any upper-case 2-letter code for U.S. a state, e.g. CA." );
67
+ System .err .println ();
68
+ System .err .printf (
69
+ "\t \t mvn exec:java -Dexec.mainClass=%s -Dexec.args='%s'\n " ,
70
+ QueryParametersSample .class .getCanonicalName (),
71
+ "array F MD WA" );
56
72
}
57
73
58
74
/**
@@ -82,10 +98,7 @@ public static void main(final String[] args) throws IOException, InterruptedExce
82
98
System .exit (ERROR_CODE );
83
99
}
84
100
String gender = args [1 ];
85
- ArrayList <String > states = new ArrayList <>();
86
- for (int i = 2 ; i < args .length ; i ++) {
87
- states .add (args [i ]);
88
- }
101
+ String [] states = Arrays .copyOfRange (args , 2 , args .length );
89
102
runArray (gender , states );
90
103
break ;
91
104
case "timestamp" :
@@ -162,7 +175,7 @@ private static void runNamed(final String corpus, final long minWordCount)
162
175
* Query the baby names database to find the most popular names for a gender in a list of states.
163
176
*/
164
177
// [START bigquery_query_params_arrays]
165
- private static void runArray (String gender , List < String > states )
178
+ private static void runArray (String gender , String [] states )
166
179
throws InterruptedException {
167
180
BigQuery bigquery =
168
181
new BigQueryOptions .DefaultBigqueryFactory ().create (BigQueryOptions .getDefaultInstance ());
@@ -179,9 +192,7 @@ private static void runArray(String gender, List<String> states)
179
192
.addNamedParameter ("gender" , QueryParameterValue .string (gender ))
180
193
.addNamedParameter (
181
194
"states" ,
182
- QueryParameterValue .array (
183
- states .toArray (new String []{}),
184
- String .class ))
195
+ QueryParameterValue .array (states , String .class ))
185
196
// Standard SQL syntax is required for parameterized queries.
186
197
// See: https://cloud.google.com/bigquery/sql-reference/
187
198
.setUseLegacySql (false )
0 commit comments