From a08c71926feff26f260f9341409cf3aba72091da Mon Sep 17 00:00:00 2001 From: Zoran Zaric Date: Mon, 30 Oct 2017 13:36:54 +0100 Subject: [PATCH] Add execution modes and format --- .../java/at/compax/tools/sql/main/Main.java | 276 +++++++++--------- 1 file changed, 144 insertions(+), 132 deletions(-) diff --git a/src/main/java/at/compax/tools/sql/main/Main.java b/src/main/java/at/compax/tools/sql/main/Main.java index 5390484..47e2ff5 100644 --- a/src/main/java/at/compax/tools/sql/main/Main.java +++ b/src/main/java/at/compax/tools/sql/main/Main.java @@ -17,144 +17,156 @@ import com.fasterxml.jackson.databind.ObjectMapper; import at.compax.tools.sql.SqlExecutionException; import at.compax.tools.sql.SqlExecutor; -import at.compax.tools.sql.model.QueryParameter; import at.compax.tools.sql.model.QueryResult; import at.compax.tools.sql.model.Result; import at.compax.tools.sql.model.UserError; import lombok.Cleanup; +import lombok.Getter; +import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j; @Log4j public class Main { - - private static Connection getConnection(String dbIp, long port, String sid, String username, String password) { - log.debug("Establishing conneciton..."); - Connection conn = null; - - String jdbcConnection = String.format("jdbc:oracle:thin:@%s:%d:%s", dbIp, port, sid); - - try { - conn = DriverManager.getConnection(jdbcConnection, username, password); - conn.setAutoCommit(false); - } catch (SQLException e) { - throw new RuntimeException("Couldn't connect to database", e); - } - - log.debug("Established conneciton!"); - return conn; - } - - private static QueryResult executeExampleQueryWithException(Connection conn) - throws SQLException, JsonProcessingException { - String sql = "SELECT id, version, workspac FROM s_settings"; - return SqlExecutor.executeQuery(conn, sql); - } - - private static QueryResult executeExampleQueryWithoutParameter(Connection conn) - throws SQLException, JsonProcessingException { - String sql = "SELECT id, version, workspace FROM s_settings"; - return SqlExecutor.executeQuery(conn, sql); - } - - private static QueryResult executeExampleQueryWithParameter(Connection conn) - throws SQLException, JsonProcessingException { - String sql = "select client from k_clients where id = ?"; - return SqlExecutor.executeQuery(conn, sql, 1L); - } - - private static Result compileExampleSpec(Connection conn) throws SQLException, JsonProcessingException { - String specSql = "CREATE OR REPLACE PACKAGE aax2_wedel\n" + "AS\n" - + " PROCEDURE create_cli_migration_workflow(p_customer d_customers.id%type, p_migration_date date);\n" - + "END aax2_wedel;"; - - return SqlExecutor.execute(conn, specSql); - } - - private static Result compileExampleSpecWithErrors(Connection conn) throws SQLException, JsonProcessingException { - String specSql = "CREATE OR REPLACE PACKAGE aax2_wedel\n" + "AS\n" - + " PROCEDURE create_cli_migration_workflow(p_customer d_customers.id%typ, p_migration_date date);\n" - + "END aax2_wedel;"; - - return SqlExecutor.execute(conn, specSql); - } - - private static void handleSqlExecutionException(SqlExecutionException e) throws JsonProcessingException { - for (UserError userError : e.getUserErrors()) { - log.debug(userError.toString()); - ObjectMapper mapper = new ObjectMapper(); - System.out.println(mapper.writeValueAsString(userError)); - } - } - - private static String readFromStdIn() throws IOException { - BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - String line; - StringBuilder sb = new StringBuilder(); - while ((line = br.readLine()) != null) { - sb.append(line); - } - return sb.toString(); - } - - public static void runTests() { - try { - // String stdInSql = readFromStdIn(); - - @Cleanup - Connection conn = getConnection("172.19.13.66", 1521L, "aax2qc", "aax2qc", "aax2qc"); - - ObjectMapper mapper = new ObjectMapper(); - - System.out.println(mapper.writeValueAsString(compileExampleSpec(conn))); - System.out.println(mapper.writeValueAsString(compileExampleSpecWithErrors(conn))); - System.out.println(mapper.writeValueAsString(executeExampleQueryWithException(conn))); - System.out.println(mapper.writeValueAsString(executeExampleQueryWithoutParameter(conn))); - System.out.println(mapper.writeValueAsString(executeExampleQueryWithParameter(conn))); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static void main(String[] args) throws Exception { - BasicConfigurator.configure(); - LogManager.getLogger("at.compax.tools.sql.main").setLevel(Level.OFF); - LogManager.getLogger("at.compax.tools.sql").setLevel(Level.OFF); - ObjectMapper mapper = new ObjectMapper(); - - if (args.length == 0) { - runTests(); - } else { - if (args.length < 4) - throw new IllegalArgumentException("Arguments: Host Port sid username password"); - - String host = args[0]; - long port = Long.parseLong(args[1]); - String sid = args[2]; - String username = args[3]; - String password = args[4]; - - @Cleanup - Connection conn = getConnection(host, port, sid, username, password); - log.info("Waiting for input..."); - - BufferedReader br = new BufferedReader(new InputStreamReader(System.in, Charset.forName("UTF-8"))); - String line; - StringBuffer commandBuffer = new StringBuffer(); - - while ((line = br.readLine()) != null) { - if (!"--- END ---".equals(line)) { - commandBuffer.append(line); - } else { - String query = commandBuffer.toString().trim(); - if (query.toLowerCase().startsWith("select")) { - System.out.println(mapper.writeValueAsString(SqlExecutor.executeQuery(conn, query.replaceAll(";$", "").trim()))); - } else { - System.out.println(mapper.writeValueAsString(SqlExecutor.execute(conn, query))); - } - commandBuffer.setLength(0); - } - } - - } - } + @Getter + @RequiredArgsConstructor + public static enum ExecutionMode { + PLUGIN_BACKEND(Level.OFF), + TERMINAL(Level.ALL); + + private final Level loggingLevel; + } + + private static ExecutionMode executionMode = ExecutionMode.PLUGIN_BACKEND; + + private static Connection getConnection(String dbIp, long port, String sid, String username, String password) { + log.debug("Establishing conneciton..."); + Connection conn = null; + + String jdbcConnection = String.format("jdbc:oracle:thin:@%s:%d:%s", dbIp, port, sid); + + try { + conn = DriverManager.getConnection(jdbcConnection, username, password); + conn.setAutoCommit(false); + } catch (SQLException e) { + throw new RuntimeException("Couldn't connect to database", e); + } + + log.debug("Established conneciton!"); + return conn; + } + + private static QueryResult executeExampleQueryWithException(Connection conn) throws SQLException, JsonProcessingException { + String sql = "SELECT id, version, workspac FROM s_settings"; + return SqlExecutor.executeQuery(conn, sql); + } + + private static QueryResult executeExampleQueryWithoutParameter(Connection conn) throws SQLException, JsonProcessingException { + String sql = "SELECT id, version, workspace FROM s_settings"; + return SqlExecutor.executeQuery(conn, sql); + } + + private static QueryResult executeExampleQueryWithParameter(Connection conn) throws SQLException, JsonProcessingException { + String sql = "select client from k_clients where id = ?"; + return SqlExecutor.executeQuery(conn, sql, 1L); + } + + private static Result compileExampleSpec(Connection conn) throws SQLException, JsonProcessingException { + String specSql = "CREATE OR REPLACE PACKAGE aax2_wedel\n" + "AS\n" + " PROCEDURE create_cli_migration_workflow(p_customer d_customers.id%type, p_migration_date date);\n" + "END aax2_wedel;"; + + return SqlExecutor.execute(conn, specSql); + } + + private static Result compileExampleSpecWithErrors(Connection conn) throws SQLException, JsonProcessingException { + String specSql = "CREATE OR REPLACE PACKAGE aax2_wedel\n" + "AS\n" + " PROCEDURE create_cli_migration_workflow(p_customer d_customers.id%typ, p_migration_date date);\n" + "END aax2_wedel;"; + + return SqlExecutor.execute(conn, specSql); + } + + private static void handleSqlExecutionException(SqlExecutionException e) throws JsonProcessingException { + for (UserError userError : e.getUserErrors()) { + log.debug(userError.toString()); + ObjectMapper mapper = new ObjectMapper(); + System.out.println(mapper.writeValueAsString(userError)); + } + } + + private static String readFromStdIn() throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + String line; + StringBuilder sb = new StringBuilder(); + while ((line = br.readLine()) != null) { + sb.append(line); + } + return sb.toString(); + } + + public static void runTests() { + try { + // String stdInSql = readFromStdIn(); + + @Cleanup + Connection conn = getConnection("172.19.13.66", 1521L, "aax2qc", "aax2qc", "aax2qc"); + + ObjectMapper mapper = new ObjectMapper(); + + System.out.println(mapper.writeValueAsString(compileExampleSpec(conn))); + System.out.println(mapper.writeValueAsString(compileExampleSpecWithErrors(conn))); + System.out.println(mapper.writeValueAsString(executeExampleQueryWithException(conn))); + System.out.println(mapper.writeValueAsString(executeExampleQueryWithoutParameter(conn))); + System.out.println(mapper.writeValueAsString(executeExampleQueryWithParameter(conn))); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) throws Exception { + BasicConfigurator.configure(); + LogManager.getLogger("at.compax.tools.sql.main").setLevel(executionMode.getLoggingLevel()); + LogManager.getLogger("at.compax.tools.sql").setLevel(executionMode.getLoggingLevel()); + ObjectMapper mapper = new ObjectMapper(); + + if (args.length == 0) { + runTests(); + } else { + if (args.length < 4) + throw new IllegalArgumentException("Arguments: Host Port sid username password"); + + String host = args[0]; + long port = Long.parseLong(args[1]); + String sid = args[2]; + String username = args[3]; + String password = args[4]; + + @Cleanup + Connection conn = getConnection(host, port, sid, username, password); + log.info("Waiting for input..."); + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in, Charset.forName("UTF-8"))); + String line; + StringBuffer commandBuffer = new StringBuffer(); + + while ((line = br.readLine()) != null) { + if (!"--- END ---".equals(line)) { + commandBuffer.append(line); + } else { + String query = commandBuffer.toString().trim(); + if (query.toLowerCase().startsWith("select")) { + if (executionMode == ExecutionMode.TERMINAL) { + System.out.println(mapper // + .writerWithDefaultPrettyPrinter() // + .writeValueAsString(SqlExecutor.executeQuery(conn, // + query.replaceAll(";$", "").trim())) // + ); + } else { + System.out.println(mapper.writeValueAsString(SqlExecutor.executeQuery(conn, query.replaceAll(";$", "").trim()))); + } + } else { + System.out.println(mapper.writeValueAsString(SqlExecutor.execute(conn, query))); + } + commandBuffer.setLength(0); + } + } + + } + } }