use of org.jline.reader.LineReader in project herddb by diennea.
the class HerdDBCLI method runSqlConsole.
private static void runSqlConsole(Statement statement, boolean pretty, boolean verbose, boolean persistHistory) throws IOException, SQLException {
Terminal terminal = TerminalBuilder.builder().system(true).build();
LineReaderBuilder readerBuilder = LineReaderBuilder.builder().history(new DefaultHistory()).terminal(terminal);
if (persistHistory) {
String historyDirectory = System.getProperty("user.home", ".");
File historyFile = new File(historyDirectory, ".herddb.cli.history");
if (verbose) {
System.out.println("Storing SQL Console History to " + historyFile.getAbsolutePath());
}
readerBuilder = readerBuilder.variable(LineReader.HISTORY_FILE, historyFile);
readerBuilder = readerBuilder.variable(LineReader.HISTORY_FILE_SIZE, 100);
}
LineReader reader = readerBuilder.build();
String prompt = "herddb(" + statement.getConnection().getSchema() + "): ";
while (true) {
String line;
try {
line = reader.readLine(prompt);
if (line == null) {
return;
}
executeStatement(verbose, true, false, false, line, statement, null, false, pretty);
prompt = "herddb(" + statement.getConnection().getSchema() + "): ";
} catch (UserInterruptException | EndOfFileException e) {
return;
} catch (Exception e) {
prettyPrintException(verbose, e);
}
}
}
use of org.jline.reader.LineReader in project accumulo by apache.
the class SetIterCommandTest method addColumnAgeOffFilter.
@Test
public void addColumnAgeOffFilter() throws Exception {
AccumuloClient client = EasyMock.createMock(AccumuloClient.class);
CommandLine cli = EasyMock.createMock(CommandLine.class);
Shell shellState = EasyMock.createMock(Shell.class);
LineReader reader = EasyMock.createMock(LineReader.class);
PrintWriter pw = EasyMock.createMock(PrintWriter.class);
TableOperations tableOperations = EasyMock.createMock(TableOperations.class);
// Command line parsing
EasyMock.expect(cli.hasOption("all")).andReturn(true);
EasyMock.expect(cli.hasOption("all")).andReturn(true);
EasyMock.expect(cli.hasOption("all")).andReturn(true);
EasyMock.expect(cli.hasOption("t")).andReturn(true);
EasyMock.expect(cli.hasOption("t")).andReturn(true);
EasyMock.expect(cli.getOptionValue("t")).andReturn("foo");
EasyMock.expect(cli.hasOption("ns")).andReturn(false);
EasyMock.expect(cli.getOptionValue("p")).andReturn("21");
EasyMock.expect(cli.getOptionValue("class")).andReturn("org.apache.accumulo.core.iterators.user.ColumnAgeOffFilter");
EasyMock.expect(cli.hasOption("ageoff")).andReturn(false);
EasyMock.expect(cli.hasOption("regex")).andReturn(false);
EasyMock.expect(cli.hasOption("reqvis")).andReturn(false);
EasyMock.expect(cli.hasOption("vers")).andReturn(false);
EasyMock.expect(cli.getOptionValue("n", null)).andReturn(null);
// Loading the class
EasyMock.expect(shellState.getClassLoader(cli, shellState)).andReturn(ClassLoaderUtil.getClassLoader(null));
// Parsing iterator options
pw.flush();
EasyMock.expectLastCall().times(3);
pw.println(EasyMock.anyObject(String.class));
EasyMock.expectLastCall().times(2);
EasyMock.expect(shellState.getReader()).andReturn(reader);
EasyMock.expect(shellState.getWriter()).andReturn(pw);
// Shell asking for negate option, we pass in an empty string to pickup the default value of
// 'false'
EasyMock.expect(reader.readLine(EasyMock.anyObject(String.class))).andReturn("");
// Shell asking for the unnamed option for the column (a:a) and the TTL (1)
EasyMock.expect(reader.readLine(EasyMock.anyObject(String.class))).andReturn("a:a 1");
// Shell asking for another unnamed option; we pass in an empty string to signal that we are
// done adding options
EasyMock.expect(reader.readLine(EasyMock.anyObject(String.class))).andReturn("");
EasyMock.expect(shellState.getAccumuloClient()).andReturn(client);
// Table exists
EasyMock.expect(client.tableOperations()).andReturn(tableOperations);
EasyMock.expect(tableOperations.exists("foo")).andReturn(true);
// Testing class load
EasyMock.expect(shellState.getAccumuloClient()).andReturn(client);
EasyMock.expect(client.tableOperations()).andReturn(tableOperations);
EasyMock.expect(tableOperations.testClassLoad("foo", "org.apache.accumulo.core.iterators.user.ColumnAgeOffFilter", SortedKeyValueIterator.class.getName())).andReturn(true);
// Attach iterator
EasyMock.expect(shellState.getAccumuloClient()).andReturn(client);
EasyMock.expect(client.tableOperations()).andReturn(tableOperations);
tableOperations.attachIterator(EasyMock.eq("foo"), EasyMock.anyObject(IteratorSetting.class), EasyMock.eq(EnumSet.allOf(IteratorScope.class)));
EasyMock.expectLastCall().once();
EasyMock.expect(shellState.getTableName()).andReturn("foo").anyTimes();
EasyMock.replay(client, cli, shellState, reader, tableOperations, pw);
cmd.execute("setiter -all -p 21 -t foo" + " -class org.apache.accumulo.core.iterators.user.ColumnAgeOffFilter", cli, shellState);
EasyMock.verify(client, cli, shellState, reader, tableOperations, pw);
}
Aggregations