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;
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<String> rs_source_columns = new ArrayList<String>();
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";
@ -2161,7 +2157,6 @@ public class CompareTwoTables {
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,12 +2166,17 @@ 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")){
@ -2184,6 +2184,8 @@ public class CompareTwoTables {
String status = migrateBasedOnMergeColumnsRule(map);
System.out.println(status);
updateRuleStatus(mainMap.get("ID"),status);
}
else if(rule.equals("Scalar")){
@ -2191,12 +2193,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);
}
else if(rule.equals("DefaultCase")){
@ -2204,9 +2210,23 @@ 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);
}
}
@ -2243,4 +2263,68 @@ 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<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;
}
}