From c0238c2e3a55e40f17491c27b216667016ce2a9d Mon Sep 17 00:00:00 2001 From: srikanth Date: Wed, 5 Aug 2020 17:31:30 +0530 Subject: [PATCH] implemented masters apis and default case rule --- .../com/demo/controller/MainController.java | 20 +++ .../com/demo/service/CompareTwoTables.java | 144 +++++++++++++++++- 2 files changed, 160 insertions(+), 4 deletions(-) diff --git a/CompareTables/src/main/java/com/demo/controller/MainController.java b/CompareTables/src/main/java/com/demo/controller/MainController.java index 9098c53..ef2ebca 100644 --- a/CompareTables/src/main/java/com/demo/controller/MainController.java +++ b/CompareTables/src/main/java/com/demo/controller/MainController.java @@ -261,5 +261,25 @@ public class MainController { return service.getDBFunctions(); } + + @RequestMapping("/getMasterRules") + public List getMasterRules() throws SQLException{ + + return service.getMasterRules(); + + } + + @RequestMapping("/migrateBasedOnDefaultCaseRule") + public Map migrateBasedOnDefaultCaseRule(@RequestBody Map map) + throws ClassNotFoundException, SQLException { + + String status = service.migrateBasedOnDefaultCaseRule(map); + + Map res = new HashMap<>(); + + res.put("status", status); + + return res; + } } diff --git a/CompareTables/src/main/java/com/demo/service/CompareTwoTables.java b/CompareTables/src/main/java/com/demo/service/CompareTwoTables.java index ffd1dc9..af9465f 100644 --- a/CompareTables/src/main/java/com/demo/service/CompareTwoTables.java +++ b/CompareTables/src/main/java/com/demo/service/CompareTwoTables.java @@ -1769,7 +1769,7 @@ public class CompareTwoTables { destFinalScrCols = destFinalScrCols.replace("[", ""); destFinalScrCols = destFinalScrCols.replace("]", ""); - List> list = getSrcAggRuleData(srcTbl, srcCols, aggFunCol, groupBy); + List> list = getSrcAggRuleData(srcTbl, srcCols); for (Map map2 : list) { int i = instertDestSumRuleData(destTbl, destFinalScrCols, map2); @@ -1854,8 +1854,7 @@ public class CompareTwoTables { return rules; } - public List> getSrcAggRuleData(String srcTbl, String srcTblCols, String aggFunCol, - String groupBy) throws ClassNotFoundException, SQLException { + public List> getSrcAggRuleData(String srcTbl, String srcTblCols) throws ClassNotFoundException, SQLException { List> rules = new LinkedList<>(); DataSource ds = dataSource.sourceDataSource(); @@ -1976,7 +1975,7 @@ public class CompareTwoTables { Statement stmt = con.createStatement(); - String sql = "select * from DB_FUNCTIONS_MASTER"; + String sql = "select FUNCTION_NAME from DB_FUNCTIONS_MASTER"; System.out.println(sql); ResultSet rs_source = stmt.executeQuery(sql); @@ -1998,4 +1997,141 @@ public class CompareTwoTables { return functions; } + public List getMasterRules() throws SQLException { + + + List rules = new LinkedList<>(); + + DataSource ds = dataSource.appDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + try { + + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + String sql = "select RULE from RULE_MASTER"; + System.out.println(sql); + ResultSet rs_source = stmt.executeQuery(sql); + + + + + while (rs_source.next()) { + + rules.add(rs_source.getString(1)); + + } + con.close(); + } catch (Exception e) { + e.printStackTrace(); + con.close(); + } + con.close(); + System.out.println(rules); + return rules; + + } + + public String migrateBasedOnDefaultCaseRule(Map map) { + + String srcTbl = map.get("sourceTable"); + + String srcCols = map.get("SRC_COLUMNS"); + + String defaultCase = map.get("value1"); + + + String destTbl = map.get("destTable"); + + String destCols = map.get("DEST_COLUMNS"); + + try { + + List> list = getSrcAggRuleData(srcTbl, srcCols); + + for (Map map2 : list) { + int i = instertDestDefaultRuleData(destTbl, destCols, map2,defaultCase); + } + + + + + } catch (Exception e) { + e.printStackTrace(); + + return "Migration fail"; + } + + return "Migration success"; + } + + public int instertDestDefaultRuleData(String destTbl, String destTblCols, Map map, String defaultCase) + throws ClassNotFoundException, SQLException { + + System.out.println("--------------instertDestSumRuleData start------------------"); + DataSource ds = dataSource.destinationDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + String tempDestColsArray[] = destTblCols.split(","); + + String sql1 = "INSERT INTO " + destTbl + " ( " + destTblCols + ") VALUES ("; + + String sql2 = ""; + + for (String col : tempDestColsArray) { + sql2 = sql2 + "?,"; + } + + StringBuilder sb = new StringBuilder(sql2); + sb.deleteCharAt(sb.length() - 1); + sb.append(")"); + sql2 = sb.toString(); + + String finalsql = sql1 + sql2; + + System.out.println(finalsql); + + tempDestColsArray = destTblCols.split(","); + try { + + PreparedStatement ps = con.prepareStatement(finalsql); + + int i = 1; + + for (String col : tempDestColsArray) { + String temp = col.trim(); + try { + if(map.get(temp).equals(null)) { + ps.setObject(i, defaultCase); + } + else + ps.setObject(i, map.get(temp)); + }catch (Exception e) { + ps.setObject(i, defaultCase); + } + + i++; + + } + int j = ps.executeUpdate(); + + } catch (Exception e) { + e.printStackTrace(); + con.close(); + return 0; + } + + System.out.println("--------------instertDestSumRuleData end------------------"); + con.close(); + return 1; + } + }