2929import org .joda .time .format .ISODateTimeFormat ;
3030
3131import java .io .IOException ;
32- import java .util .ArrayList ;
32+ import java .util .Arrays ;
3333import java .util .Iterator ;
3434import java .util .List ;
3535import java .util .stream .Collectors ;
@@ -43,16 +43,32 @@ public class QueryParametersSample {
4343 private static void printUsage () {
4444 System .err .println ("Usage:" );
4545 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 " ,
4747 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 ();
5258 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" );
5672 }
5773
5874 /**
@@ -82,10 +98,7 @@ public static void main(final String[] args) throws IOException, InterruptedExce
8298 System .exit (ERROR_CODE );
8399 }
84100 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 );
89102 runArray (gender , states );
90103 break ;
91104 case "timestamp" :
@@ -162,7 +175,7 @@ private static void runNamed(final String corpus, final long minWordCount)
162175 * Query the baby names database to find the most popular names for a gender in a list of states.
163176 */
164177 // [START bigquery_query_params_arrays]
165- private static void runArray (String gender , List < String > states )
178+ private static void runArray (String gender , String [] states )
166179 throws InterruptedException {
167180 BigQuery bigquery =
168181 new BigQueryOptions .DefaultBigqueryFactory ().create (BigQueryOptions .getDefaultInstance ());
@@ -179,9 +192,7 @@ private static void runArray(String gender, List<String> states)
179192 .addNamedParameter ("gender" , QueryParameterValue .string (gender ))
180193 .addNamedParameter (
181194 "states" ,
182- QueryParameterValue .array (
183- states .toArray (new String []{}),
184- String .class ))
195+ QueryParameterValue .array (states , String .class ))
185196 // Standard SQL syntax is required for parameterized queries.
186197 // See: https://cloud.google.com/bigquery/sql-reference/
187198 .setUseLegacySql (false )
0 commit comments