Search in sources :

Example 26 with LineReader

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);
        }
    }
}
Also used : EndOfFileException(org.jline.reader.EndOfFileException) LineReaderBuilder(org.jline.reader.LineReaderBuilder) LineReader(org.jline.reader.LineReader) DefaultHistory(org.jline.reader.impl.history.DefaultHistory) UserInterruptException(org.jline.reader.UserInterruptException) Terminal(org.jline.terminal.Terminal) File(java.io.File) ScriptException(javax.script.ScriptException) EndOfFileException(org.jline.reader.EndOfFileException) CompilationFailedException(org.codehaus.groovy.control.CompilationFailedException) SQLException(java.sql.SQLException) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException) UserInterruptException(org.jline.reader.UserInterruptException) ParseException(org.apache.commons.cli.ParseException) MetadataStorageManagerException(herddb.metadata.MetadataStorageManagerException)

Example 27 with LineReader

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);
}
Also used : AccumuloClient(org.apache.accumulo.core.client.AccumuloClient) CommandLine(org.apache.commons.cli.CommandLine) Shell(org.apache.accumulo.shell.Shell) TableOperations(org.apache.accumulo.core.client.admin.TableOperations) IteratorSetting(org.apache.accumulo.core.client.IteratorSetting) LineReader(org.jline.reader.LineReader) SortedKeyValueIterator(org.apache.accumulo.core.iterators.SortedKeyValueIterator) PrintWriter(java.io.PrintWriter) Test(org.junit.Test)

Aggregations

LineReader (org.jline.reader.LineReader)27 Terminal (org.jline.terminal.Terminal)15 EndOfFileException (org.jline.reader.EndOfFileException)10 UserInterruptException (org.jline.reader.UserInterruptException)10 IOException (java.io.IOException)7 AccumuloClient (org.apache.accumulo.core.client.AccumuloClient)5 Shell (org.apache.accumulo.shell.Shell)5 PrintWriter (java.io.PrintWriter)4 ArrayList (java.util.ArrayList)4 SecurityOperations (org.apache.accumulo.core.client.admin.SecurityOperations)4 CommandLine (org.apache.commons.cli.CommandLine)4 ParsedLine (org.jline.reader.ParsedLine)4 Test (org.junit.Test)4 PrintStream (java.io.PrintStream)3 Authorizations (org.apache.accumulo.core.security.Authorizations)3 Candidate (org.jline.reader.Candidate)3 File (java.io.File)2 FileInputStream (java.io.FileInputStream)2 InputStream (java.io.InputStream)2 InputStreamReader (java.io.InputStreamReader)2