blob: f81d04054a635124516b382015c82fcdfc8f4cb4 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
package org.apache.flink.table.client.cli;
import org.apache.flink.table.client.cli.SqlCommandParser.SqlCommand;
import org.jline.utils.AttributedString;
import org.jline.utils.AttributedStringBuilder;
import org.jline.utils.AttributedStyle;
/**
* Utility class that contains all strings for CLI commands and messages.
*/
public final class CliStrings {
private CliStrings() {
// private
}
public static final String CLI_NAME = "Flink SQL CLI Client";
public static final String DEFAULT_MARGIN = " ";
public static final String NULL_COLUMN = "(NULL)";
// --------------------------------------------------------------------------------------------
public static final AttributedString MESSAGE_HELP = new AttributedStringBuilder()
.append("The following commands are available:\n\n")
.append(formatCommand(SqlCommand.QUIT, "Quits the SQL CLI client."))
.append(formatCommand(SqlCommand.CLEAR, "Clears the current terminal."))
.append(formatCommand(SqlCommand.HELP, "Prints the available commands."))
.append(formatCommand(SqlCommand.CREATE_TABLE, "Creates a table with SQL DDL. Syntax: 'CREATE TABLE <name> (<field_name, field_type>) with (<key>=<value>)"))
.append(formatCommand(SqlCommand.SHOW_TABLES, "Shows all registered tables."))
.append(formatCommand(SqlCommand.SHOW_FUNCTIONS, "Shows all registered user-defined functions."))
.append(formatCommand(SqlCommand.DESCRIBE, "Describes the schema of a table with the given name."))
.append(formatCommand(SqlCommand.EXPLAIN, "Describes the execution plan of a query or table with the given name."))
.append(formatCommand(SqlCommand.SELECT, "Executes a SQL SELECT query on the Flink cluster."))
.append(formatCommand(SqlCommand.INSERT_INTO, "Inserts the results of a SQL SELECT query into a declared table sink."))
.append(formatCommand(SqlCommand.CREATE_VIEW, "Creates a virtual table from a SQL query. Syntax: 'CREATE VIEW <name> AS <query>;'"))
//.append(formatCommand(SqlCommand.DROP_VIEW, "Deletes a previously created virtual table. Syntax: 'DROP VIEW <name>;'"))
.append(formatCommand(SqlCommand.SOURCE, "Reads a SQL SELECT query from a file and executes it on the Flink cluster."))
.append(formatCommand(SqlCommand.CREATE_FUNCTION, "Creates a UDX with SQL DDL. Syntax: 'CREATE FUNCTION <name> AS <QualifiedFunctionDef>"))
.append(formatCommand(SqlCommand.SET, "Sets a session configuration property. Syntax: 'SET <key>=<value>;'. Use 'SET;' for listing all properties."))
.append(formatCommand(SqlCommand.RESET, "Resets all session configuration properties."))
.style(AttributedStyle.DEFAULT.underline())
.append("\nHint")
.style(AttributedStyle.DEFAULT)
.append(": Make sure that a statement ends with ';' for finalizing (multi-line) statements.")
.toAttributedString();
public static final String MESSAGE_WELCOME;
// make findbugs happy
static {
MESSAGE_WELCOME = " \u2592\u2593\u2588\u2588\u2593\u2588\u2588\u2592\n" +
" \u2593\u2588\u2588\u2588\u2588\u2592\u2592\u2588\u2593\u2592\u2593\u2588\u2588\u2588\u2593\u2592\n" +
" \u2593\u2588\u2588\u2588\u2593\u2591\u2591 \u2592\u2592\u2592\u2593\u2588\u2588\u2592 \u2592\n" +
" \u2591\u2588\u2588\u2592 \u2592\u2592\u2593\u2593\u2588\u2593\u2593\u2592\u2591 \u2592\u2588\u2588\u2588\u2588\n" +
" \u2588\u2588\u2592 \u2591\u2592\u2593\u2588\u2588\u2588\u2592 \u2592\u2588\u2592\u2588\u2592\n" +
" \u2591\u2593\u2588 \u2588\u2588\u2588 \u2593\u2591\u2592\u2588\u2588\n" +
" \u2593\u2588 \u2592\u2592\u2592\u2592\u2592\u2593\u2588\u2588\u2593\u2591\u2592\u2591\u2593\u2593\u2588\n" +
" \u2588\u2591 \u2588 \u2592\u2592\u2591 \u2588\u2588\u2588\u2593\u2593\u2588 \u2592\u2588\u2592\u2592\u2592\n" +
" \u2588\u2588\u2588\u2588\u2591 \u2592\u2593\u2588\u2593 \u2588\u2588\u2592\u2592\u2592 \u2593\u2588\u2588\u2588\u2592\n" +
" \u2591\u2592\u2588\u2593\u2593\u2588\u2588 \u2593\u2588\u2592 \u2593\u2588\u2592\u2593\u2588\u2588\u2593 \u2591\u2588\u2591\n" +
" \u2593\u2591\u2592\u2593\u2588\u2588\u2588\u2588\u2592 \u2588\u2588 \u2592\u2588 \u2588\u2593\u2591\u2592\u2588\u2592\u2591\u2592\u2588\u2592\n" +
" \u2588\u2588\u2588\u2593\u2591\u2588\u2588\u2593 \u2593\u2588 \u2588 \u2588\u2593 \u2592\u2593\u2588\u2593\u2593\u2588\u2592\n" +
" \u2591\u2588\u2588\u2593 \u2591\u2588\u2591 \u2588 \u2588\u2592 \u2592\u2588\u2588\u2588\u2588\u2588\u2593\u2592 \u2588\u2588\u2593\u2591\u2592\n" +
" \u2588\u2588\u2588\u2591 \u2591 \u2588\u2591 \u2593 \u2591\u2588 \u2588\u2588\u2588\u2588\u2588\u2592\u2591\u2591 \u2591\u2588\u2591\u2593 \u2593\u2591\n" +
" \u2588\u2588\u2593\u2588 \u2592\u2592\u2593\u2592 \u2593\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2593\u2591 \u2592\u2588\u2592 \u2592\u2593 \u2593\u2588\u2588\u2593\n" +
" \u2592\u2588\u2588\u2593 \u2593\u2588 \u2588\u2593\u2588 \u2591\u2592\u2588\u2588\u2588\u2588\u2588\u2593\u2593\u2592\u2591 \u2588\u2588\u2592\u2592 \u2588 \u2592 \u2593\u2588\u2592\n" +
" \u2593\u2588\u2593 \u2593\u2588 \u2588\u2588\u2593 \u2591\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2592 \u2592\u2588\u2588\u2593 \u2591\u2588\u2592\n" +
" \u2593\u2588 \u2588 \u2593\u2588\u2588\u2588\u2593\u2592\u2591 \u2591\u2593\u2593\u2593\u2588\u2588\u2588\u2593 \u2591\u2592\u2591 \u2593\u2588\n" +
" \u2588\u2588\u2593 \u2588\u2588\u2592 \u2591\u2592\u2593\u2593\u2588\u2588\u2588\u2593\u2593\u2593\u2593\u2593\u2588\u2588\u2588\u2588\u2588\u2588\u2593\u2592 \u2593\u2588\u2588\u2588 \u2588\n" +
" \u2593\u2588\u2588\u2588\u2592 \u2588\u2588\u2588 \u2591\u2593\u2593\u2592\u2591\u2591 \u2591\u2593\u2588\u2588\u2588\u2588\u2593\u2591 \u2591\u2592\u2593\u2592 \u2588\u2593\n" +
" \u2588\u2593\u2592\u2592\u2593\u2593\u2588\u2588 \u2591\u2592\u2592\u2591\u2591\u2591\u2592\u2592\u2592\u2592\u2593\u2588\u2588\u2593\u2591 \u2588\u2593\n" +
" \u2588\u2588 \u2593\u2591\u2592\u2588 \u2593\u2593\u2593\u2593\u2592\u2591\u2591 \u2592\u2588\u2593 \u2592\u2593\u2593\u2588\u2588\u2593 \u2593\u2592 \u2592\u2592\u2593\n" +
" \u2593\u2588\u2593 \u2593\u2592\u2588 \u2588\u2593\u2591 \u2591\u2592\u2593\u2593\u2588\u2588\u2592 \u2591\u2593\u2588\u2592 \u2592\u2592\u2592\u2591\u2592\u2592\u2593\u2588\u2588\u2588\u2588\u2588\u2592\n" +
" \u2588\u2588\u2591 \u2593\u2588\u2592\u2588\u2592 \u2592\u2593\u2593\u2592 \u2593\u2588 \u2588\u2591 \u2591\u2591\u2591\u2591 \u2591\u2588\u2592\n" +
" \u2593\u2588 \u2592\u2588\u2593 \u2591 \u2588\u2591 \u2592\u2588 \u2588\u2593\n" +
" \u2588\u2593 \u2588\u2588 \u2588\u2591 \u2593\u2593 \u2592\u2588\u2593\u2593\u2593\u2592\u2588\u2591\n" +
" \u2588\u2593 \u2591\u2593\u2588\u2588\u2591 \u2593\u2592 \u2593\u2588\u2593\u2592\u2591\u2591\u2591\u2592\u2593\u2588\u2591 \u2592\u2588\n" +
" \u2588\u2588 \u2593\u2588\u2593\u2591 \u2592 \u2591\u2592\u2588\u2592\u2588\u2588\u2592 \u2593\u2593\n" +
" \u2593\u2588\u2592 \u2592\u2588\u2593\u2592\u2591 \u2592\u2592 \u2588\u2592\u2588\u2593\u2592\u2592\u2591\u2591\u2592\u2588\u2588\n" +
" \u2591\u2588\u2588\u2592 \u2592\u2593\u2593\u2592 \u2593\u2588\u2588\u2593\u2592\u2588\u2592 \u2591\u2593\u2593\u2593\u2593\u2592\u2588\u2593\n" +
" \u2591\u2593\u2588\u2588\u2592 \u2593\u2591 \u2592\u2588\u2593\u2588 \u2591\u2591\u2592\u2592\u2592\n" +
" \u2592\u2593\u2593\u2593\u2593\u2593\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2591\u2591\u2593\u2593 \u2593\u2591\u2592\u2588\u2591\n" +
" \n" +
" ______ _ _ _ _____ ____ _ _____ _ _ _ BETA \n" +
" | ____| (_) | | / ____|/ __ \\| | / ____| (_) | | \n" +
" | |__ | |_ _ __ | | __ | (___ | | | | | | | | |_ ___ _ __ | |_ \n" +
" | __| | | | '_ \\| |/ / \\___ \\| | | | | | | | | |/ _ \\ '_ \\| __|\n" +
" | | | | | | | | < ____) | |__| | |____ | |____| | | __/ | | | |_ \n" +
" |_| |_|_|_| |_|_|\\_\\ |_____/ \\___\\_\\______| \\_____|_|_|\\___|_| |_|\\__|\n" +
" \n" +
" Welcome! Enter 'HELP;' to list all available commands. 'QUIT;' to exit.\n\n";
}
public static final String MESSAGE_QUIT = "Exiting " + CliStrings.CLI_NAME + "...";
public static final String MESSAGE_SQL_EXECUTION_ERROR = "Could not execute SQL statement.";
public static final String MESSAGE_RESET = "All session properties have been set to their default values.";
public static final String MESSAGE_SET = "Session property has been set.";
public static final String MESSAGE_EMPTY = "Result was empty.";
public static final String MESSAGE_UNKNOWN_SQL = "Unknown or invalid SQL statement.";
public static final String MESSAGE_UNKNOWN_TABLE = "Unknown table.";
public static final String MESSAGE_RESULT_SNAPSHOT_ERROR = "Could not create a snapshot of the dynamic table.";
public static final String MESSAGE_RESULT_QUIT = "Result retrieval cancelled.";
public static final String MESSAGE_SUBMITTING_STATEMENT = "Submitting SQL update statement to the cluster...";
public static final String MESSAGE_STATEMENT_SUBMITTED = "Table update statement has been successfully submitted to the cluster:";
public static final String MESSAGE_MAX_SIZE_EXCEEDED = "The given file exceeds the maximum number of characters.";
public static final String MESSAGE_WILL_EXECUTE = "Executing the following statement:";
public static final String MESSAGE_UNSUPPORTED_SQL = "Unsupported SQL statement.";
public static final String MESSAGE_VIEW_CREATED = "View has been created.";
public static final String MESSAGE_VIEW_REMOVED = "View has been removed.";
public static final String MESSAGE_TABLE_CREATE = "Table has been created.";
public static final String MESSAGE_FUNCTION_CREATE = "Function has been created.";
public static final String MESSAGE_VIEW_ALREADY_EXISTS = "A view with this name has already been defined in the current CLI session.";
public static final String MESSAGE_VIEW_NOT_FOUND = "The given view does not exist in the current CLI session. " +
"Only views created with a CREATE VIEW statement can be accessed.";
public static final String MESSAGE_VIEW_NOT_REMOVED = "The given view cannot be removed without affecting other views.";
// --------------------------------------------------------------------------------------------
public static final String RESULT_TITLE = "SQL Query Result";
public static final String RESULT_REFRESH_INTERVAL = "Refresh:";
public static final String RESULT_PAGE = "Page:";
public static final String RESULT_PAGE_OF = " of ";
public static final String RESULT_LAST_REFRESH = "Updated:";
public static final String RESULT_LAST_PAGE = "Last";
public static final String RESULT_QUIT = "Quit";
public static final String RESULT_REFRESH = "Refresh";
public static final String RESULT_GOTO = "Goto Page";
public static final String RESULT_NEXT = "Next Page";
public static final String RESULT_PREV = "Prev Page";
public static final String RESULT_LAST = "Last Page";
public static final String RESULT_FIRST = "First Page";
public static final String RESULT_SEARCH = "Search";
public static final String RESULT_INC_REFRESH = "Inc Refresh"; // implementation assumes max length of 11
public static final String RESULT_DEC_REFRESH = "Dec Refresh";
public static final String RESULT_OPEN = "Open Row";
public static final String RESULT_CHANGELOG = "Changelog";
public static final String RESULT_TABLE = "Table";
public static final String RESULT_STOPPED = "Table program finished.";
public static final String RESULT_REFRESH_UNKNOWN = "Unknown";
// --------------------------------------------------------------------------------------------
public static final String INPUT_TITLE = "Input Dialog";
public static final AttributedString INPUT_HELP = new AttributedStringBuilder()
.append("Press ")
.style(AttributedStyle.DEFAULT.inverse())
.append("Enter")
.style(AttributedStyle.DEFAULT)
.append(" to submit. Press ")
.style(AttributedStyle.DEFAULT.inverse())
.append("ESC")
.style(AttributedStyle.DEFAULT)
.append(" or submit an empty string to cancel.")
.toAttributedString();
public static final String INPUT_ENTER_PAGE = "Enter page number:";
public static final String INPUT_ERROR = "The input is invalid please check it again.";
// --------------------------------------------------------------------------------------------
public static final AttributedString ROW_QUIT = new AttributedStringBuilder()
.append("Press ")
.style(AttributedStyle.DEFAULT.inverse())
.append("Q")
.style(AttributedStyle.DEFAULT)
.append(" to go back.")
.toAttributedString();
public static final String ROW_HEADER = "Row Summary";
// --------------------------------------------------------------------------------------------
public static AttributedString messageInfo(String message) {
return new AttributedStringBuilder()
.style(AttributedStyle.DEFAULT.bold().foreground(AttributedStyle.BLUE))
.append("[INFO] ")
.append(message)
.toAttributedString();
}
public static AttributedString messageError(String message, Throwable t) {
while (t.getCause() != null && t.getCause().getMessage() != null && !t.getCause().getMessage().isEmpty()) {
t = t.getCause();
}
return messageError(message, t.getClass().getName() + ": " + t.getMessage());
// return messageError(message, ExceptionUtils.stringifyException(t));
}
public static AttributedString messageError(String message) {
return messageError(message, (String) null);
}
public static AttributedString messageError(String message, String s) {
final AttributedStringBuilder builder = new AttributedStringBuilder()
.style(AttributedStyle.DEFAULT.bold().foreground(AttributedStyle.RED))
.append("[ERROR] ")
.append(message);
if (s != null) {
builder
.append(" Reason:\n")
.append(s);
}
return builder.toAttributedString();
}
private static AttributedString formatCommand(SqlCommand cmd, String description) {
return new AttributedStringBuilder()
.style(AttributedStyle.DEFAULT.bold())
.append(cmd.toString())
.append("\t\t")
.style(AttributedStyle.DEFAULT)
.append(description)
.append('\n')
.toAttributedString();
}
}