From 95a90d549643f2f1e1d01d154d5f57d82fdc8d8b Mon Sep 17 00:00:00 2001 From: srikanth Date: Thu, 10 Sep 2020 16:51:35 +0530 Subject: [PATCH] implemented migration status --- .../com/demo/controller/MainController.java | 6 + .../com/demo/service/CompareTwoTables.java | 112 +++++++++++++++--- 2 files changed, 104 insertions(+), 14 deletions(-) diff --git a/CompareTables/src/main/java/com/demo/controller/MainController.java b/CompareTables/src/main/java/com/demo/controller/MainController.java index 79c818f..7ef3f45 100644 --- a/CompareTables/src/main/java/com/demo/controller/MainController.java +++ b/CompareTables/src/main/java/com/demo/controller/MainController.java @@ -328,6 +328,12 @@ public class MainController { } + @RequestMapping("/getRulesStatus") + public List> getRulesStatus() throws Exception { + + return service.getRulesStatus(); + + } } diff --git a/CompareTables/src/main/java/com/demo/service/CompareTwoTables.java b/CompareTables/src/main/java/com/demo/service/CompareTwoTables.java index aa37ad5..c9e1045 100644 --- a/CompareTables/src/main/java/com/demo/service/CompareTwoTables.java +++ b/CompareTables/src/main/java/com/demo/service/CompareTwoTables.java @@ -1,8 +1,6 @@ package com.demo.service; import java.sql.Connection; -import java.sql.DatabaseMetaData; -import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; @@ -19,13 +17,10 @@ import java.util.stream.Collectors; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.PropertySource; -import org.springframework.core.env.Environment; -import org.springframework.stereotype.Service; - +import org.springframework.stereotype.Repository; import com.demo.DataSourceDbUtil; -@Service +@Repository public class CompareTwoTables { @Autowired @@ -979,7 +974,7 @@ public class CompareTwoTables { // int i = stmt.executeUpdate(sql); PreparedStatement ps = con.prepareStatement( - "INSERT INTO RULES (SRCTBL, DESTTBL, SRC_KEY, DEST_KEY, RULE_NAME, VALUE1, VALUE2, VALUE3, FILTER_CONDITION,SRC_COLUMNS,DEST_COLUMNS,VALUE4) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"); + "INSERT INTO RULES (SRCTBL, DESTTBL, SRC_KEY, DEST_KEY, RULE_NAME, VALUE1, VALUE2, VALUE3, FILTER_CONDITION,SRC_COLUMNS,DEST_COLUMNS,VALUE4,STATUS) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)"); ps.setObject(1, map.get("srcTbl")); ps.setObject(2, map.get("destTbl")); @@ -993,6 +988,7 @@ public class CompareTwoTables { ps.setObject(10, map.get("SRC_COLUMNS")); ps.setObject(11, map.get("DEST_COLUMNS")); ps.setObject(12, map.get("ruleValue4")); + ps.setString(13, "PENDING"); int i = ps.executeUpdate(); @@ -1166,7 +1162,7 @@ public class CompareTwoTables { Statement stmt = con.createStatement(); // step4 execute query - ResultSet rs_source = stmt.executeQuery("select * from rules"); + ResultSet rs_source = stmt.executeQuery("select * from rules where STATUS='PENDING'"); ArrayList rs_source_columns = new ArrayList(); ResultSetMetaData metadata = rs_source.getMetaData(); @@ -2064,7 +2060,7 @@ public class CompareTwoTables { } catch (Exception e) { e.printStackTrace(); - return "Migration fail"; + return "Migration fail "+e; } return "Migration success"; @@ -2160,8 +2156,7 @@ public class CompareTwoTables { map.put("SRC_COLUMNS", mainMap.get("SRC_COLUMNS")); map.put("DEST_COLUMNS", mainMap.get("DEST_COLUMNS")); map.put("value4", mainMap.get("VALUE4")); - - + String rule = (String) map.get("ruleName"); System.out.println("-->"+rule); @@ -2171,18 +2166,25 @@ public class CompareTwoTables { String status = migrateBasedOnIgnoreColumnRule(map); System.out.println(status); + + updateRuleStatus(mainMap.get("ID"),status); + } else if(rule.equals("SplitColumns")){ String status = migrateBasedOnSplitRule(map); System.out.println(status); + + updateRuleStatus(mainMap.get("ID"),status); } else if(rule.equals("MergeColumns")){ String status = migrateBasedOnMergeColumnsRule(map); System.out.println(status); + + updateRuleStatus(mainMap.get("ID"),status); } @@ -2190,12 +2192,16 @@ public class CompareTwoTables { String status = migrateBasedOnScalarColumnsRule(map); System.out.println(status); + + updateRuleStatus(mainMap.get("ID"),status); } else if(rule.equals("AggregateColumns")){ String status = migrateBasedOnAggregateColumnsRule(map); System.out.println(status); + + updateRuleStatus(mainMap.get("ID"),status); } @@ -2203,10 +2209,24 @@ public class CompareTwoTables { String status = migrateBasedOnDefaultCaseRule(map); System.out.println(status); + + updateRuleStatus(mainMap.get("ID"),status); + + } + else if(rule.equals("Mapping")){ + + String condition = ""; + + if(map.get("whereCondition")!=null) { + condition = map.get("whereCondition"); + } + + String status = dataMigration(map.get("sourceTable"), map.get("destTable"), map.get("SRC_COLUMNS"), map.get("DEST_COLUMNS"), map.get("srcKey"), map.get("destKey"), condition); + System.out.println(status); + + updateRuleStatus(mainMap.get("ID"),status); } - - } @@ -2242,5 +2262,69 @@ public class CompareTwoTables { return null; } + + public String updateRuleStatus(String id, String status) { + + try { + DataSource ds = dataSource.appDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + + PreparedStatement ps = con.prepareStatement("UPDATE RULES SET STATUS =? WHERE ID=?"); + + ps.setString(1, status); + ps.setString(1, id); + + int i = ps.executeUpdate(); + + System.out.println("i ===> " + i); + con.close(); + } catch (Exception e) { + e.printStackTrace(); + return "Fail"; + } + return "Success"; + + } + + public List> getRulesStatus() { + + List> rules = new LinkedList<>(); + + try { + + DataSource ds = dataSource.appDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + // step4 execute query + ResultSet rs_source = stmt.executeQuery("select * from rules where STATUS !='PENDING'"); + + ArrayList rs_source_columns = new ArrayList(); + ResultSetMetaData metadata = rs_source.getMetaData(); + int columnCount = metadata.getColumnCount(); + for (int i = 1; i <= columnCount; i++) { + rs_source_columns.add(metadata.getColumnName(i)); + } + + while (rs_source.next()) { + HashMap map = new HashMap<>(); + for (String colName : rs_source_columns) { + + map.put(colName, rs_source.getString(colName)); + } + rules.add(map); + + } + con.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + return rules; + } }