From 29e05b04d130d04793b9654de718c3292be9e624 Mon Sep 17 00:00:00 2001 From: Kevin Risden <risdenk@users.noreply.github.com> Date: Fri, 3 Feb 2017 10:09:36 -0500 Subject: [PATCH] [core] Fix checkstyle for CommandLine (#917) --- .../main/java/com/yahoo/ycsb/CommandLine.java | 728 ++++++++---------- 1 file changed, 333 insertions(+), 395 deletions(-) diff --git a/core/src/main/java/com/yahoo/ycsb/CommandLine.java b/core/src/main/java/com/yahoo/ycsb/CommandLine.java index 80c1fc18..9e95bd5a 100644 --- a/core/src/main/java/com/yahoo/ycsb/CommandLine.java +++ b/core/src/main/java/com/yahoo/ycsb/CommandLine.java @@ -1,411 +1,349 @@ -/** - * Copyright (c) 2010 Yahoo! Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you - * may not use this file except in compliance with the License. You - * may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - * implied. See the License for the specific language governing - * permissions and limitations under the License. See accompanying - * LICENSE file. +/** + * Copyright (c) 2010 Yahoo! Inc. All rights reserved. + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); you + * may not use this file except in compliance with the License. You + * may obtain a copy of the License at + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. See accompanying + * LICENSE file. */ package com.yahoo.ycsb; -import java.util.Properties; +import com.yahoo.ycsb.workloads.CoreWorkload; + +import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; -import java.util.Enumeration; -import java.io.BufferedReader; import java.io.InputStreamReader; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.HashSet; -import java.util.Vector; - -import com.yahoo.ycsb.Client; -import com.yahoo.ycsb.workloads.*; +import java.util.*; /** * A simple command line client to a database, using the appropriate com.yahoo.ycsb.DB implementation. */ -public class CommandLine -{ - public static final String DEFAULT_DB="com.yahoo.ycsb.BasicDB"; - - public static void usageMessage() - { - System.out.println("YCSB Command Line Client"); - System.out.println("Usage: java com.yahoo.ycsb.CommandLine [options]"); - System.out.println("Options:"); - System.out.println(" -P filename: Specify a property file"); - System.out.println(" -p name=value: Specify a property value"); - System.out.println(" -db classname: Use a specified DB class (can also set the \"db\" property)"); - System.out.println(" -table tablename: Use the table name instead of the default \""+CoreWorkload.TABLENAME_PROPERTY_DEFAULT+"\""); - System.out.println(); +public final class CommandLine { + private CommandLine() { + //not used + } + + public static final String DEFAULT_DB = "com.yahoo.ycsb.BasicDB"; + + public static void usageMessage() { + System.out.println("YCSB Command Line Client"); + System.out.println("Usage: java com.yahoo.ycsb.CommandLine [options]"); + System.out.println("Options:"); + System.out.println(" -P filename: Specify a property file"); + System.out.println(" -p name=value: Specify a property value"); + System.out.println(" -db classname: Use a specified DB class (can also set the \"db\" property)"); + System.out.println(" -table tablename: Use the table name instead of the default \"" + + CoreWorkload.TABLENAME_PROPERTY_DEFAULT + "\""); + System.out.println(); + } + + public static void help() { + System.out.println("Commands:"); + System.out.println(" read key [field1 field2 ...] - Read a record"); + System.out.println(" scan key recordcount [field1 field2 ...] - Scan starting at key"); + System.out.println(" insert key name1=value1 [name2=value2 ...] - Insert a new record"); + System.out.println(" update key name1=value1 [name2=value2 ...] - Update a record"); + System.out.println(" delete key - Delete a record"); + System.out.println(" table [tablename] - Get or [set] the name of the table"); + System.out.println(" quit - Quit"); + } + + public static void main(String[] args) { + + Properties props = new Properties(); + Properties fileprops = new Properties(); + + parseArguments(args, props, fileprops); + + for (Enumeration e = props.propertyNames(); e.hasMoreElements();) { + String prop = (String) e.nextElement(); + + fileprops.setProperty(prop, props.getProperty(prop)); + } + + props = fileprops; + + System.out.println("YCSB Command Line client"); + System.out.println("Type \"help\" for command line help"); + System.out.println("Start with \"-help\" for usage info"); + + String table = props.getProperty(CoreWorkload.TABLENAME_PROPERTY, CoreWorkload.TABLENAME_PROPERTY_DEFAULT); + + //create a DB + String dbname = props.getProperty(Client.DB_PROPERTY, DEFAULT_DB); + + ClassLoader classLoader = CommandLine.class.getClassLoader(); + + DB db = null; + + try { + Class dbclass = classLoader.loadClass(dbname); + db = (DB) dbclass.newInstance(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(0); + } + + db.setProperties(props); + try { + db.init(); + } catch (DBException e) { + e.printStackTrace(); + System.exit(0); + } + + System.out.println("Connected."); + + //main loop + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + for (;;) { + //get user input + System.out.print("> "); + + String input = null; + + try { + input = br.readLine(); + } catch (IOException e) { + e.printStackTrace(); + System.exit(1); + } + + if (input.compareTo("") == 0) { + continue; + } + + if (input.compareTo("help") == 0) { + help(); + continue; } - public static void help() - { - System.out.println("Commands:"); - System.out.println(" read key [field1 field2 ...] - Read a record"); - System.out.println(" scan key recordcount [field1 field2 ...] - Scan starting at key"); - System.out.println(" insert key name1=value1 [name2=value2 ...] - Insert a new record"); - System.out.println(" update key name1=value1 [name2=value2 ...] - Update a record"); - System.out.println(" delete key - Delete a record"); - System.out.println(" table [tablename] - Get or [set] the name of the table"); - System.out.println(" quit - Quit"); + if (input.compareTo("quit") == 0) { + break; } - - public static void main(String[] args) - { - int argindex=0; - - Properties props=new Properties(); - Properties fileprops=new Properties(); - String table=CoreWorkload.TABLENAME_PROPERTY_DEFAULT; - - while ( (argindex<args.length) && (args[argindex].startsWith("-")) ) - { - if ( (args[argindex].compareTo("-help")==0) || - (args[argindex].compareTo("--help")==0) || - (args[argindex].compareTo("-?")==0) || - (args[argindex].compareTo("--?")==0) ) - { - usageMessage(); - System.exit(0); - } - - if (args[argindex].compareTo("-db")==0) - { - argindex++; - if (argindex>=args.length) - { - usageMessage(); - System.exit(0); - } - props.setProperty(Client.DB_PROPERTY, args[argindex]); - argindex++; - } - else if (args[argindex].compareTo("-P")==0) - { - argindex++; - if (argindex>=args.length) - { - usageMessage(); - System.exit(0); - } - String propfile=args[argindex]; - argindex++; - - Properties myfileprops=new Properties(); - try - { - myfileprops.load(new FileInputStream(propfile)); - } - catch (IOException e) - { - System.out.println(e.getMessage()); - System.exit(0); - } - - for (Enumeration e=myfileprops.propertyNames(); e.hasMoreElements(); ) - { - String prop=(String)e.nextElement(); - - fileprops.setProperty(prop,myfileprops.getProperty(prop)); - } - - } - else if (args[argindex].compareTo("-p")==0) - { - argindex++; - if (argindex>=args.length) - { - usageMessage(); - System.exit(0); - } - int eq=args[argindex].indexOf('='); - if (eq<0) - { - usageMessage(); - System.exit(0); - } - - String name=args[argindex].substring(0,eq); - String value=args[argindex].substring(eq+1); - props.put(name,value); - //System.out.println("["+name+"]=["+value+"]"); - argindex++; - } - else if (args[argindex].compareTo("-table")==0) - { - argindex++; - if (argindex>=args.length) - { - usageMessage(); - System.exit(0); - } - table=args[argindex]; - argindex++; - } - else - { - System.out.println("Unknown option "+args[argindex]); - usageMessage(); - System.exit(0); - } - - if (argindex>=args.length) - { - break; - } - } - - if (argindex!=args.length) - { - usageMessage(); - System.exit(0); - } - - for (Enumeration e=props.propertyNames(); e.hasMoreElements(); ) - { - String prop=(String)e.nextElement(); - - fileprops.setProperty(prop,props.getProperty(prop)); - } - - props=fileprops; - - System.out.println("YCSB Command Line client"); - System.out.println("Type \"help\" for command line help"); - System.out.println("Start with \"-help\" for usage info"); - - //create a DB - String dbname=props.getProperty(Client.DB_PROPERTY, DEFAULT_DB); - - ClassLoader classLoader = CommandLine.class.getClassLoader(); - - DB db=null; - - try - { - Class dbclass = classLoader.loadClass(dbname); - db=(DB)dbclass.newInstance(); - } - catch (Exception e) - { - e.printStackTrace(); - System.exit(0); - } - - db.setProperties(props); - try - { - db.init(); - } - catch (DBException e) - { - e.printStackTrace(); - System.exit(0); - } - - System.out.println("Connected."); - - //main loop - BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - - for (;;) - { - //get user input - System.out.print("> "); - - String input=null; - - try - { - input=br.readLine(); - } - catch (IOException e) - { - e.printStackTrace(); - System.exit(1); - } - - if (input.compareTo("")==0) - { - continue; - } - - if (input.compareTo("help")==0) - { - help(); - continue; - } - - if (input.compareTo("quit")==0) - { - break; - } - - String[] tokens=input.split(" "); - - long st=System.currentTimeMillis(); - //handle commands - if (tokens[0].compareTo("table")==0) - { - if (tokens.length==1) - { - System.out.println("Using table \""+table+"\""); - } - else if (tokens.length==2) - { - table=tokens[1]; - System.out.println("Using table \""+table+"\""); - } - else - { - System.out.println("Error: syntax is \"table tablename\""); - } - } - else if (tokens[0].compareTo("read")==0) - { - if (tokens.length==1) - { - System.out.println("Error: syntax is \"read keyname [field1 field2 ...]\""); - } - else - { - Set<String> fields=null; - - if (tokens.length>2) - { - fields=new HashSet<String>(); - - for (int i=2; i<tokens.length; i++) - { - fields.add(tokens[i]); - } - } - - HashMap<String,ByteIterator> result=new HashMap<String,ByteIterator>(); - Status ret=db.read(table,tokens[1],fields,result); - System.out.println("Return code: "+ret.getName()); - for (Map.Entry<String,ByteIterator> ent : result.entrySet()) - { - System.out.println(ent.getKey()+"="+ent.getValue()); - } - } - } - else if (tokens[0].compareTo("scan")==0) - { - if (tokens.length<3) - { - System.out.println("Error: syntax is \"scan keyname scanlength [field1 field2 ...]\""); - } - else - { - Set<String> fields=null; - - if (tokens.length>3) - { - fields=new HashSet<String>(); - - for (int i=3; i<tokens.length; i++) - { - fields.add(tokens[i]); - } - } - - Vector<HashMap<String,ByteIterator>> results=new Vector<HashMap<String,ByteIterator>>(); - Status ret=db.scan(table,tokens[1],Integer.parseInt(tokens[2]),fields,results); - System.out.println("Result: "+ret.getName()); - int record=0; - if (results.isEmpty()) - { - System.out.println("0 records"); - } - else - { - System.out.println("--------------------------------"); - } - for (HashMap<String,ByteIterator> result : results) - { - System.out.println("Record "+(record++)); - for (Map.Entry<String,ByteIterator> ent : result.entrySet()) - { - System.out.println(ent.getKey()+"="+ent.getValue()); - } - System.out.println("--------------------------------"); - } - } - } - else if (tokens[0].compareTo("update")==0) - { - if (tokens.length<3) - { - System.out.println("Error: syntax is \"update keyname name1=value1 [name2=value2 ...]\""); - } - else - { - HashMap<String,ByteIterator> values=new HashMap<String,ByteIterator>(); - - for (int i=2; i<tokens.length; i++) - { - String[] nv=tokens[i].split("="); - values.put(nv[0],new StringByteIterator(nv[1])); - } - - Status ret=db.update(table,tokens[1],values); - System.out.println("Result: "+ret.getName()); - } - } - else if (tokens[0].compareTo("insert")==0) - { - if (tokens.length<3) - { - System.out.println("Error: syntax is \"insert keyname name1=value1 [name2=value2 ...]\""); - } - else - { - HashMap<String,ByteIterator> values=new HashMap<String,ByteIterator>(); - - for (int i=2; i<tokens.length; i++) - { - String[] nv=tokens[i].split("="); - values.put(nv[0],new StringByteIterator(nv[1])); - } - - Status ret=db.insert(table,tokens[1],values); - System.out.println("Result: "+ret.getName()); - } - } - else if (tokens[0].compareTo("delete")==0) - { - if (tokens.length!=2) - { - System.out.println("Error: syntax is \"delete keyname\""); - } - else - { - Status ret=db.delete(table,tokens[1]); - System.out.println("Return result: "+ret.getName()); - } - } - else - { - System.out.println("Error: unknown command \""+tokens[0]+"\""); - } - - System.out.println((System.currentTimeMillis()-st)+" ms"); - - } + + String[] tokens = input.split(" "); + + long st = System.currentTimeMillis(); + //handle commands + if (tokens[0].compareTo("table") == 0) { + handleTable(tokens, table); + } else if (tokens[0].compareTo("read") == 0) { + handleRead(tokens, table, db); + } else if (tokens[0].compareTo("scan") == 0) { + handleScan(tokens, table, db); + } else if (tokens[0].compareTo("update") == 0) { + handleUpdate(tokens, table, db); + } else if (tokens[0].compareTo("insert") == 0) { + handleInsert(tokens, table, db); + } else if (tokens[0].compareTo("delete") == 0) { + handleDelete(tokens, table, db); + } else { + System.out.println("Error: unknown command \"" + tokens[0] + "\""); } - + + System.out.println((System.currentTimeMillis() - st) + " ms"); + } + } + + private static void parseArguments(String[] args, Properties props, Properties fileprops) { + int argindex = 0; + while ((argindex < args.length) && (args[argindex].startsWith("-"))) { + if ((args[argindex].compareTo("-help") == 0) || + (args[argindex].compareTo("--help") == 0) || + (args[argindex].compareTo("-?") == 0) || + (args[argindex].compareTo("--?") == 0)) { + usageMessage(); + System.exit(0); + } + + if (args[argindex].compareTo("-db") == 0) { + argindex++; + if (argindex >= args.length) { + usageMessage(); + System.exit(0); + } + props.setProperty(Client.DB_PROPERTY, args[argindex]); + argindex++; + } else if (args[argindex].compareTo("-P") == 0) { + argindex++; + if (argindex >= args.length) { + usageMessage(); + System.exit(0); + } + String propfile = args[argindex]; + argindex++; + + Properties myfileprops = new Properties(); + try { + myfileprops.load(new FileInputStream(propfile)); + } catch (IOException e) { + System.out.println(e.getMessage()); + System.exit(0); + } + + for (Enumeration e = myfileprops.propertyNames(); e.hasMoreElements();) { + String prop = (String) e.nextElement(); + + fileprops.setProperty(prop, myfileprops.getProperty(prop)); + } + + } else if (args[argindex].compareTo("-p") == 0) { + argindex++; + if (argindex >= args.length) { + usageMessage(); + System.exit(0); + } + int eq = args[argindex].indexOf('='); + if (eq < 0) { + usageMessage(); + System.exit(0); + } + + String name = args[argindex].substring(0, eq); + String value = args[argindex].substring(eq + 1); + props.put(name, value); + argindex++; + } else if (args[argindex].compareTo("-table") == 0) { + argindex++; + if (argindex >= args.length) { + usageMessage(); + System.exit(0); + } + props.put(CoreWorkload.TABLENAME_PROPERTY, args[argindex]); + + argindex++; + } else { + System.out.println("Unknown option " + args[argindex]); + usageMessage(); + System.exit(0); + } + + if (argindex >= args.length) { + break; + } + } + + if (argindex != args.length) { + usageMessage(); + System.exit(0); + } + } + + private static void handleDelete(String[] tokens, String table, DB db) { + if (tokens.length != 2) { + System.out.println("Error: syntax is \"delete keyname\""); + } else { + Status ret = db.delete(table, tokens[1]); + System.out.println("Return result: " + ret.getName()); + } + } + + private static void handleInsert(String[] tokens, String table, DB db) { + if (tokens.length < 3) { + System.out.println("Error: syntax is \"insert keyname name1=value1 [name2=value2 ...]\""); + } else { + HashMap<String, ByteIterator> values = new HashMap<>(); + + for (int i = 2; i < tokens.length; i++) { + String[] nv = tokens[i].split("="); + values.put(nv[0], new StringByteIterator(nv[1])); + } + + Status ret = db.insert(table, tokens[1], values); + System.out.println("Result: " + ret.getName()); + } + } + + private static void handleUpdate(String[] tokens, String table, DB db) { + if (tokens.length < 3) { + System.out.println("Error: syntax is \"update keyname name1=value1 [name2=value2 ...]\""); + } else { + HashMap<String, ByteIterator> values = new HashMap<>(); + + for (int i = 2; i < tokens.length; i++) { + String[] nv = tokens[i].split("="); + values.put(nv[0], new StringByteIterator(nv[1])); + } + + Status ret = db.update(table, tokens[1], values); + System.out.println("Result: " + ret.getName()); + } + } + + private static void handleScan(String[] tokens, String table, DB db) { + if (tokens.length < 3) { + System.out.println("Error: syntax is \"scan keyname scanlength [field1 field2 ...]\""); + } else { + Set<String> fields = null; + + if (tokens.length > 3) { + fields = new HashSet<>(); + + fields.addAll(Arrays.asList(tokens).subList(3, tokens.length)); + } + + Vector<HashMap<String, ByteIterator>> results = new Vector<>(); + Status ret = db.scan(table, tokens[1], Integer.parseInt(tokens[2]), fields, results); + System.out.println("Result: " + ret.getName()); + int record = 0; + if (results.isEmpty()) { + System.out.println("0 records"); + } else { + System.out.println("--------------------------------"); + } + for (HashMap<String, ByteIterator> result : results) { + System.out.println("Record " + (record++)); + for (Map.Entry<String, ByteIterator> ent : result.entrySet()) { + System.out.println(ent.getKey() + "=" + ent.getValue()); + } + System.out.println("--------------------------------"); + } + } + } + + private static void handleRead(String[] tokens, String table, DB db) { + if (tokens.length == 1) { + System.out.println("Error: syntax is \"read keyname [field1 field2 ...]\""); + } else { + Set<String> fields = null; + + if (tokens.length > 2) { + fields = new HashSet<>(); + + fields.addAll(Arrays.asList(tokens).subList(2, tokens.length)); + } + + HashMap<String, ByteIterator> result = new HashMap<>(); + Status ret = db.read(table, tokens[1], fields, result); + System.out.println("Return code: " + ret.getName()); + for (Map.Entry<String, ByteIterator> ent : result.entrySet()) { + System.out.println(ent.getKey() + "=" + ent.getValue()); + } + } + } + + private static void handleTable(String[] tokens, String table) { + if (tokens.length == 1) { + System.out.println("Using table \"" + table + "\""); + } else if (tokens.length == 2) { + table = tokens[1]; + System.out.println("Using table \"" + table + "\""); + } else { + System.out.println("Error: syntax is \"table tablename\""); + } + } + + } -- GitLab