implemented migration status

This commit is contained in:
srikanth 2020-09-10 16:51:35 +05:30
parent 30e75b7200
commit 95a90d5496
2 changed files with 104 additions and 14 deletions

View File

@ -328,6 +328,12 @@ public class MainController {
} }
@RequestMapping("/getRulesStatus")
public List<Map<String, String>> getRulesStatus() throws Exception {
return service.getRulesStatus();
}
} }

View File

@ -1,8 +1,6 @@
package com.demo.service; package com.demo.service;
import java.sql.Connection; import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.ResultSetMetaData; import java.sql.ResultSetMetaData;
@ -19,13 +17,10 @@ import java.util.stream.Collectors;
import javax.sql.DataSource; import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Repository;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import com.demo.DataSourceDbUtil; import com.demo.DataSourceDbUtil;
@Service @Repository
public class CompareTwoTables { public class CompareTwoTables {
@Autowired @Autowired
@ -979,7 +974,7 @@ public class CompareTwoTables {
// int i = stmt.executeUpdate(sql); // int i = stmt.executeUpdate(sql);
PreparedStatement ps = con.prepareStatement( 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(1, map.get("srcTbl"));
ps.setObject(2, map.get("destTbl")); ps.setObject(2, map.get("destTbl"));
@ -993,6 +988,7 @@ public class CompareTwoTables {
ps.setObject(10, map.get("SRC_COLUMNS")); ps.setObject(10, map.get("SRC_COLUMNS"));
ps.setObject(11, map.get("DEST_COLUMNS")); ps.setObject(11, map.get("DEST_COLUMNS"));
ps.setObject(12, map.get("ruleValue4")); ps.setObject(12, map.get("ruleValue4"));
ps.setString(13, "PENDING");
int i = ps.executeUpdate(); int i = ps.executeUpdate();
@ -1166,7 +1162,7 @@ public class CompareTwoTables {
Statement stmt = con.createStatement(); Statement stmt = con.createStatement();
// step4 execute query // step4 execute query
ResultSet rs_source = stmt.executeQuery("select * from rules"); ResultSet rs_source = stmt.executeQuery("select * from rules where STATUS='PENDING'");
ArrayList<String> rs_source_columns = new ArrayList<String>(); ArrayList<String> rs_source_columns = new ArrayList<String>();
ResultSetMetaData metadata = rs_source.getMetaData(); ResultSetMetaData metadata = rs_source.getMetaData();
@ -2064,7 +2060,7 @@ public class CompareTwoTables {
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return "Migration fail"; return "Migration fail "+e;
} }
return "Migration success"; return "Migration success";
@ -2160,8 +2156,7 @@ public class CompareTwoTables {
map.put("SRC_COLUMNS", mainMap.get("SRC_COLUMNS")); map.put("SRC_COLUMNS", mainMap.get("SRC_COLUMNS"));
map.put("DEST_COLUMNS", mainMap.get("DEST_COLUMNS")); map.put("DEST_COLUMNS", mainMap.get("DEST_COLUMNS"));
map.put("value4", mainMap.get("VALUE4")); map.put("value4", mainMap.get("VALUE4"));
String rule = (String) map.get("ruleName"); String rule = (String) map.get("ruleName");
System.out.println("-->"+rule); System.out.println("-->"+rule);
@ -2171,18 +2166,25 @@ public class CompareTwoTables {
String status = migrateBasedOnIgnoreColumnRule(map); String status = migrateBasedOnIgnoreColumnRule(map);
System.out.println(status); System.out.println(status);
updateRuleStatus(mainMap.get("ID"),status);
} }
else if(rule.equals("SplitColumns")){ else if(rule.equals("SplitColumns")){
String status = migrateBasedOnSplitRule(map); String status = migrateBasedOnSplitRule(map);
System.out.println(status); System.out.println(status);
updateRuleStatus(mainMap.get("ID"),status);
} }
else if(rule.equals("MergeColumns")){ else if(rule.equals("MergeColumns")){
String status = migrateBasedOnMergeColumnsRule(map); String status = migrateBasedOnMergeColumnsRule(map);
System.out.println(status); System.out.println(status);
updateRuleStatus(mainMap.get("ID"),status);
} }
@ -2190,12 +2192,16 @@ public class CompareTwoTables {
String status = migrateBasedOnScalarColumnsRule(map); String status = migrateBasedOnScalarColumnsRule(map);
System.out.println(status); System.out.println(status);
updateRuleStatus(mainMap.get("ID"),status);
} }
else if(rule.equals("AggregateColumns")){ else if(rule.equals("AggregateColumns")){
String status = migrateBasedOnAggregateColumnsRule(map); String status = migrateBasedOnAggregateColumnsRule(map);
System.out.println(status); System.out.println(status);
updateRuleStatus(mainMap.get("ID"),status);
} }
@ -2203,10 +2209,24 @@ public class CompareTwoTables {
String status = migrateBasedOnDefaultCaseRule(map); String status = migrateBasedOnDefaultCaseRule(map);
System.out.println(status); 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; 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<Map<String, String>> getRulesStatus() {
List<Map<String, String>> 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<String> rs_source_columns = new ArrayList<String>();
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<String, String> 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;
}
} }