From 91146e538c4ed2eb9ff04d142df597f532742a6c Mon Sep 17 00:00:00 2001 From: asif Date: Sun, 11 May 2025 14:36:59 +0530 Subject: [PATCH] Cleaned up and formatted the project the project after decompilation. Also added the two servers for UCB and NABARD banks --- .gitignore | 2 + pom.xml | 69 ++ src/main/java/com/bean/DataBean.java | 175 ++++ src/main/java/com/main/ResponseMain.java | 13 + src/main/java/com/main/Scheduler.java | 98 +++ .../java/com/methods/RequestResponse.java | 745 ++++++++++++++++++ src/main/java/com/methods/Util.java | 43 + src/main/resources/Properties.properties | 15 + src/main/resources/log4j.properties | 12 + 9 files changed, 1172 insertions(+) create mode 100644 .gitignore create mode 100644 pom.xml create mode 100644 src/main/java/com/bean/DataBean.java create mode 100644 src/main/java/com/main/ResponseMain.java create mode 100644 src/main/java/com/main/Scheduler.java create mode 100644 src/main/java/com/methods/RequestResponse.java create mode 100644 src/main/java/com/methods/Util.java create mode 100644 src/main/resources/Properties.properties create mode 100644 src/main/resources/log4j.properties diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ca37d98 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +dependency-reduced-pom.xml +target/ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..97ac14d --- /dev/null +++ b/pom.xml @@ -0,0 +1,69 @@ + + + 4.0.0 + com.main + InwardRtgsInterface + 1.0 + jar + + UTF-8 + 1.8 + 1.8 + com.main.ResponseMain + + + + + org.json + json + 20180130 + + + log4j + log4j + 1.2.17 + + + com.oracle.database.jdbc + ojdbc8 + 23.5.0.24.07 + + + + + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + com.main.ResponseMain + + + + + + + + + + diff --git a/src/main/java/com/bean/DataBean.java b/src/main/java/com/bean/DataBean.java new file mode 100644 index 0000000..b770ae6 --- /dev/null +++ b/src/main/java/com/bean/DataBean.java @@ -0,0 +1,175 @@ +package com.bean; + +public class DataBean { + private String utr; + private String bankcode; + private String trnamt; + private String jrnl; + private String sender_ifsc; + private String reciever_ifsc; + private String remiteer_name; + private String remiteer_acct; + private String remiteer_addrs; + private String benf_name; + private String benf_acct_no; + private String remitter_info; + private String status; + private String reject_code; + private String benef_address; + private String msg_type; + private String creditor_amt; + private String trandate; + private String org_msg_id; + + public String getUtr() { + return this.utr; + } + + public void setUtr(String utr) { + this.utr = utr; + } + + public String getBankcode() { + return this.bankcode; + } + + public void setBankcode(String bankcode) { + this.bankcode = bankcode; + } + + public String getTrnamt() { + return this.trnamt; + } + + public void setTrnamt(String trnamt) { + this.trnamt = trnamt; + } + + public String getJrnl() { + return this.jrnl; + } + + public void setJrnl(String jrnl) { + this.jrnl = jrnl; + } + + public String getSender_ifsc() { + return this.sender_ifsc; + } + + public void setSender_ifsc(String sender_ifsc) { + this.sender_ifsc = sender_ifsc; + } + + public String getReciever_ifsc() { + return this.reciever_ifsc; + } + + public void setReciever_ifsc(String reciever_ifsc) { + this.reciever_ifsc = reciever_ifsc; + } + + public String getRemiteer_name() { + return this.remiteer_name; + } + + public void setRemiteer_name(String remiteer_name) { + this.remiteer_name = remiteer_name; + } + + public String getRemiteer_acct() { + return this.remiteer_acct; + } + + public void setRemiteer_acct(String remiteer_acct) { + this.remiteer_acct = remiteer_acct; + } + + public String getRemiteer_addrs() { + return this.remiteer_addrs; + } + + public void setRemiteer_addrs(String remiteer_addrs) { + this.remiteer_addrs = remiteer_addrs; + } + + public String getBenf_name() { + return this.benf_name; + } + + public void setBenf_name(String benf_name) { + this.benf_name = benf_name; + } + + public String getBenf_acct_no() { + return this.benf_acct_no; + } + + public void setBenf_acct_no(String benf_acct_no) { + this.benf_acct_no = benf_acct_no; + } + + public String getRemitter_info() { + return this.remitter_info; + } + + public void setRemitter_info(String remitter_info) { + this.remitter_info = remitter_info; + } + + public String getStatus() { + return this.status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getReject_code() { + return this.reject_code; + } + + public void setReject_code(String reject_code) { + this.reject_code = reject_code; + } + + public String getBenef_address() { + return this.benef_address; + } + + public void setBenef_address(String benef_address) { + this.benef_address = benef_address; + } + + public String getMsg_type() { + return this.msg_type; + } + + public void setMsg_type(String msg_type) { + this.msg_type = msg_type; + } + + public String getCreditor_amt() { + return this.creditor_amt; + } + + public void setCreditor_amt(String creditor_amt) { + this.creditor_amt = creditor_amt; + } + + public String getTrandate() { + return this.trandate; + } + + public void setTrandate(String trandate) { + this.trandate = trandate; + } + + public String getOrg_msg_id() { + return this.org_msg_id; + } + + public void setOrg_msg_id(String org_msg_id) { + this.org_msg_id = org_msg_id; + } +} \ No newline at end of file diff --git a/src/main/java/com/main/ResponseMain.java b/src/main/java/com/main/ResponseMain.java new file mode 100644 index 0000000..88419ba --- /dev/null +++ b/src/main/java/com/main/ResponseMain.java @@ -0,0 +1,13 @@ +package com.main; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +public class ResponseMain { + static ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor(); + + public static void main(String[] args) { + service.scheduleAtFixedRate(new Scheduler(), 0L, 30L, TimeUnit.MINUTES); + } +} \ No newline at end of file diff --git a/src/main/java/com/main/Scheduler.java b/src/main/java/com/main/Scheduler.java new file mode 100644 index 0000000..9b590f0 --- /dev/null +++ b/src/main/java/com/main/Scheduler.java @@ -0,0 +1,98 @@ +package com.main; + +import com.methods.RequestResponse; +import java.io.IOException; +import java.io.InputStream; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.Properties; +import org.apache.log4j.Logger; + +public class Scheduler implements Runnable { + static Logger log = Logger.getLogger(Scheduler.class.getName()); + public static Properties prop = new Properties(); + + public void run() { + InputStream input = null; + try { + input = Scheduler.class.getClass().getResourceAsStream("/Properties.properties"); + + prop.load(input); + } catch (IOException ex) { + + log.error(ex.getMessage()); + } finally { + if (input != null) { + try { + input.close(); + } catch (IOException e) { + log.error(e.getMessage()); + } + + } else { + + log.error( + "Either no properties file found or error in properties file path in Scheduler class"); + } + } + + Date date = new Date(); + + DateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + Calendar cal = Calendar.getInstance(); + + String dateToday = "20201206"; + + log.info("Inward Scheduled Run Begins...." + new Date()); + try { + ArrayList requestBodyList = RequestResponse.getRequestBody(); + for (int j = 0; j < requestBodyList.size(); j++) { + log.info("Iterating for Next Bank API"); + + RequestResponse.get_response(requestBodyList.get(j), dateToday); + } + + } catch (IOException e) { + + log.error(String.valueOf(e.getMessage()) + " error in line no 78 scheduler class"); + } + + log.info("End of Scheduled Run for that day"); + + log.info( + "Inward Scheduled Run Begins for previous day...." + + new Date((new Date()).getTime() - 86400000L)); + + DateFormat sdf1 = new SimpleDateFormat("yyyyMMdd"); + + Calendar cal1 = Calendar.getInstance(); + cal1.setTime(new Date()); + cal1.add(6, -1); + + String dateToPreviousday = sdf1.format(cal1.getTime()); + ArrayList requestBodyListforpreviousday = + RequestResponse.getRequestBodyForPreviousDay(); + log.info("requ body size" + requestBodyListforpreviousday.size()); + + for (int i = 0; i < requestBodyListforpreviousday.size(); i++) { + + log.info("Iterating for Next Bank API"); + + try { + RequestResponse.get_response(requestBodyListforpreviousday.get(i), dateToPreviousday); + } catch (IOException e) { + log.error( + String.valueOf(e.getMessage()) + + " error for " + + (String) requestBodyListforpreviousday.get(i) + + " and date" + + dateToPreviousday); + } + } + + log.info("End of Scheduled Run for previous day"); + } +} \ No newline at end of file diff --git a/src/main/java/com/methods/RequestResponse.java b/src/main/java/com/methods/RequestResponse.java new file mode 100644 index 0000000..9bcbdf5 --- /dev/null +++ b/src/main/java/com/methods/RequestResponse.java @@ -0,0 +1,745 @@ +package com.methods; + +import com.bean.DataBean; +import com.main.Scheduler; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.Iterator; +import java.util.Properties; +import org.apache.log4j.Logger; +import org.json.JSONArray; +import org.json.JSONObject; + +public class RequestResponse { + static Connection connection = null; + static ResultSet rs = null; + static Statement statement = null; + public static Properties prop = new Properties(); + static Logger log = Logger.getLogger(Scheduler.class.getName()); + + public static ArrayList get_response(String jsonInputString, String date) + throws IOException { + int responseCode = -1; + String reverseTrandate = ""; + InputStream input1 = null; + String apiURL = null; + try { + String bc = new JSONObject(jsonInputString).getString("bankcode"); + input1 = Scheduler.class.getClass().getResourceAsStream("/Properties.properties"); + + prop.load(input1); + if(bc.equals("0005") || bc.equals("0021")) { + apiURL = prop.getProperty("APIURL_NABARD"); + } else { + apiURL = prop.getProperty("APIURL_UCB"); + } + } catch (IOException ex) { + + log.error(String.valueOf(ex.getMessage()) + " error in request response class line no 67"); + } catch(Exception e) { + logger.error(e.getMessage()); + e.printStackTrace(); + } finally { + + if (input1 != null) { + try { + input1.close(); + } catch (IOException e) { + log.error(e.getMessage()); + } + + } else { + + log.error( + "Either no properties file found or error in properties file path in request response" + + " class"); + } + } + + log.info("Req MSG : " + jsonInputString); + + ArrayList data = new ArrayList<>(); + URL url = null; + + try { + url = new URL(apiURL); + } catch (MalformedURLException e1) { + + log.error(String.valueOf(e1.getMessage()) + " error in request response class on line no 96"); + } + HttpURLConnection con = null; + try { + con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("POST"); + con.setRequestProperty("Content-Type", "application/json; utf-8"); + con.setRequestProperty("Accept", "application/json"); + con.setDoOutput(true); + + } catch (IOException e2) { + + log.error( + String.valueOf(e2.getMessage()) + " error in request response class on line no 110"); + } + + Exception exception1 = null, exception2 = null; + try { + OutputStream os = con.getOutputStream(); + try { + byte[] input = jsonInputString.getBytes("utf-8"); + os.write(input, 0, input.length); + } finally { + if (os != null) os.close(); + } + } finally { + exception2 = null; + if (exception1 == null) { + exception1 = exception2; + } else if (exception1 != exception2) { + exception1.addSuppressed(exception2); + } + } + + log.info("Response Code : " + responseCode); + + BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); + + StringBuffer response = new StringBuffer(); + response.append("{\"result\":"); + try { + String inputLine; + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + } catch (IOException e1) { + + log.error( + String.valueOf(e1.getMessage()) + " error in request response class on line no 139"); + } + try { + in.close(); + } catch (IOException e1) { + + log.error( + String.valueOf(e1.getMessage()) + " error in request response class on line no 145"); + } + + try { + response.append("}"); + + if (response.toString().contains("No data found")) { + + JSONObject json = new JSONObject(response.toString()); + JSONObject errorobj = new JSONObject(json.get("result").toString()); + + String bankcode = errorobj.getString("bankcode"); + String reason = errorobj.getString("reason"); + String errordategetfromjson = errorobj.getString("trandate"); + SimpleDateFormat formatter1 = new SimpleDateFormat("yyyyMMdd"); + Date date2 = formatter1.parse(errordategetfromjson); + DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy"); + String errordate = dateFormat.format(date2); + + try { + ErrorStoreInDaatabaseIPKS(bankcode, reason, errordate, "CEDGE"); + } catch (Exception e) { + + log.info("Unable to add error log into ipks database"); + } + + try { + ErrorStoreInDaatabaseAPI(bankcode, reason, errordate, "CEDGE"); + } catch (Exception e) { + + log.info("Unable to add error log into API database"); + } + } else if (response.toString().contains("Unable to fetch data")) { + + JSONObject json = new JSONObject(response.toString()); + JSONObject errorobj = new JSONObject(json.get("result").toString()); + + String bankcode = errorobj.getString("bankcode"); + String reason = errorobj.getString("reason"); + String errordategetfromjson = errorobj.getString("trandate"); + SimpleDateFormat formatter1 = new SimpleDateFormat("yyyyMMdd"); + Date date2 = formatter1.parse(errordategetfromjson); + DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy"); + String errordate = dateFormat.format(date2); + + try { + ErrorStoreInDaatabaseIPKS(bankcode, reason, errordate, "CEDGE"); + } catch (Exception e) { + + log.info("Unable to add error log into ipks database"); + } + + try { + ErrorStoreInDaatabaseAPI(bankcode, reason, errordate, "CEDGE"); + } catch (Exception e) { + + log.info("Unable to add error log into API database"); + } + + } else if (response.toString().contains("SERVER UNAVAILABLE")) { + + JSONObject json = new JSONObject(response.toString()); + JSONObject errorobj = new JSONObject(json.get("result").toString()); + + String bankcode = errorobj.getString("bankcode"); + String reason = errorobj.getString("reason"); + String errordategetfromjson = errorobj.getString("trandate"); + SimpleDateFormat formatter1 = new SimpleDateFormat("yyyyMMdd"); + Date date2 = formatter1.parse(errordategetfromjson); + DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy"); + String errordate = dateFormat.format(date2); + + try { + ErrorStoreInDaatabaseIPKS(bankcode, reason, errordate, "CEDGE"); + } catch (Exception e) { + + log.info("Unable to add error log into ipks database"); + } + + try { + ErrorStoreInDaatabaseAPI(bankcode, reason, errordate, "CEDGE"); + } catch (Exception e) { + + log.info("Unable to add error log into API database"); + } + } else { + + System.out.println(response.toString()); + JSONObject json = new JSONObject(response.toString()); + JSONArray dataArray = new JSONArray(json.get("result").toString()); + + for (int i = 0; i < dataArray.length(); i++) { + String JSonData = dataArray.get(i).toString(); + DataBean databean = new DataBean(); + + JSONObject dataD = new JSONObject(JSonData); + + databean.setBankcode(dataD.get("bankcode").toString().trim()); + databean.setBenef_address(dataD.get("benef_address").toString().trim()); + databean.setMsg_type(dataD.get("msg_type").toString().trim()); + databean.setReciever_ifsc(dataD.get("reciever_ifsc").toString().trim()); + databean.setBenf_name(dataD.get("benf_name").toString().trim()); + databean.setBenf_acct_no(dataD.get("benf_acct_no").toString().trim()); + + databean.setReject_code(dataD.get("reject_code").toString().trim()); + + databean.setRemiteer_name(dataD.get("remiteer_name").toString().trim()); + databean.setRemiteer_acct(dataD.get("remiteer_acct").toString().trim()); + databean.setRemiteer_addrs(dataD.get("remiteer_addrs").toString().trim()); + databean.setRemitter_info(dataD.get("remitter_info").toString().trim()); + databean.setMsg_type(dataD.get("msg_type").toString().trim()); + databean.setCreditor_amt(dataD.get("creditor_amt").toString().trim()); + databean.setSender_ifsc(dataD.get("sender_ifsc").toString().trim()); + databean.setStatus(dataD.get("status").toString().trim()); + String Trandate = dataD.get("trandate").toString().trim(); + SimpleDateFormat formatter1 = new SimpleDateFormat("yyyyMMdd"); + Date date1 = formatter1.parse(Trandate); + DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy"); + reverseTrandate = dateFormat.format(date1); + + databean.setTrandate(reverseTrandate); + databean.setTrnamt(dataD.get("trnamt").toString().trim()); + databean.setUtr(dataD.get("utr").toString().trim()); + databean.setJrnl(dataD.getString("jrnl").toString().trim()); + + data.add(databean); + } + + try { + setDatainAPIDatabase(data, reverseTrandate); + } catch (Exception e) { + + String bankcode = "", reason = e.getMessage(); + DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy"); + String errordate = dateFormat.format(new Date()); + + try { + ErrorStoreInDaatabaseAPI(bankcode, reason, errordate, "API"); + } catch (Exception e2) { + + log.info("Unable to add error log into API database"); + } + } + + try { + setDatainDatabase(data, reverseTrandate); + } catch (Exception e) { + + String bankcode = ""; + String reason = e.getMessage(); + DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy"); + String errordate = dateFormat.format(new Date()); + + try { + ErrorStoreInDaatabaseIPKS(bankcode, reason, errordate, "IPKS"); + } catch (Exception e1) { + + log.info("Unable to add error log into ipks database"); + } + } + } + + } catch (Exception e3) { + + log.error( + String.valueOf(e3.getMessage()) + " error in request response class on line no 336"); + } + + return data; + } + + public static ArrayList getRequestBody() { + Date date = new Date(); + + DateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + + Calendar cal = Calendar.getInstance(); + String dateToday = sdf.format(cal.getTime()); + + log.info("Date :" + dateToday); + + String url = null; + String bankCode = null; + ArrayList finalUrl = new ArrayList<>(); + try { + connection = Util.getDBConnection(); + + statement = connection.createStatement(); + rs = + statement.executeQuery( + "select * from rupay_kcc_api_map where status='Y' and API_TYPE='TXN'"); + while (rs.next()) { + url = rs.getString(8); + bankCode = rs.getString(6); + String finUrl = url.replaceAll("dt", dateToday); + finUrl = finUrl.replaceAll("bcode", bankCode); + finUrl = finUrl.replaceAll("tnty", "inwardrtgs"); + System.out.println(finUrl); + finalUrl.add(finUrl); + } + + } catch (Exception ex) { + log.error( + String.valueOf(ex.getMessage()) + " error in request response class on line no 371"); + } finally { + + try { + if (connection != null) connection.close(); + } catch (SQLException e1) { + log.error( + String.valueOf(e1.getMessage()) + " error in request response class on line no 378"); + } + } + return finalUrl; + } + + public static ArrayList getRequestBodyForPreviousDay() { + DateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + + Calendar cal = Calendar.getInstance(); + cal.setTime(new Date()); + cal.add(6, -1); + + String dateToPreviousday = sdf.format(cal.getTime()); + + log.info("Date :" + dateToPreviousday); + + String url = null; + String bankCode = null; + ArrayList finalUrl = new ArrayList<>(); + try { + connection = Util.getDBConnection(); + + statement = connection.createStatement(); + rs = + statement.executeQuery( + "select * from rupay_kcc_api_map where status='Y' and API_TYPE='TXN'"); + while (rs.next()) { + url = rs.getString(8); + bankCode = rs.getString(6); + String finUrl = url.replaceAll("dt", dateToPreviousday); + finUrl = finUrl.replaceAll("bcode", bankCode); + finUrl = finUrl.replaceAll("tnty", "inwardrtgs"); + System.out.println(finUrl); + finalUrl.add(finUrl); + } + + } catch (Exception ex) { + log.error( + String.valueOf(ex.getMessage()) + " error in request response class on line no 411"); + } finally { + + try { + if (connection != null) connection.close(); + } catch (SQLException e1) { + log.error( + String.valueOf(e1.getMessage()) + " error in request response class on line no 418"); + } + } + return finalUrl; + } + + public static void setDatainDatabase(ArrayList data, String date) { + Connection connection = null; + ResultSet rs = null; + Statement st = null; + String query = null; + PreparedStatement statement = null; + ArrayList combination = new ArrayList<>(); + + try { + try { + connection = Util.getDBConnection(); + st = connection.createStatement(); + + rs = + st.executeQuery( + "select l.bankcode,l.jrnl_id,l.txn_date from inward_rtgs_api_log l where" + + " l.txn_date='" + + date + + "'"); + + while (rs.next()) { + String comb = + String.valueOf(rs.getString(1)) + "|" + rs.getString(2) + "|" + rs.getString(3); + + combination.add(comb); + } + } catch (Exception ex) { + log.error( + String.valueOf(ex.getMessage()) + " error in request response class on line no 450"); + } + + Iterator iter = data.iterator(); + Statement st2 = connection.createStatement(); + while (iter.hasNext()) { + DataBean d = iter.next(); + + if (combination.contains( + String.valueOf(d.getBankcode()) + "|" + d.getJrnl() + "|" + d.getTrandate()) + || d.getJrnl() == null + || d.getJrnl().equalsIgnoreCase("")) { + log.info( + "RECORD ALREADY PRESENT IPKS for " + + d.getBankcode() + + "|" + + d.getJrnl() + + "|" + + d.getTrandate()); + + continue; + } + query = + "insert into inward_rtgs_api_log(bankcode,jrnl_id,ref_no, txn_date, amount," + + " remmiter_name,remmiter_acct, remmiter_addrs, benf_name, benf_acct_no," + + " benf_addrs, sender_ifsc, reciever_ifsc,msg_typ, creditor_amt, remmiter_info," + + " reject_code, status) values ('" + + d.getBankcode() + + "','" + + d.getJrnl() + + "','" + + d.getUtr() + + "','" + + d.getTrandate() + + "',abs(" + + d.getTrnamt() + + "),'"; + query = + String.valueOf(query) + + d.getRemiteer_name() + + "','" + + d.getRemiteer_acct() + + "','" + + d.getRemiteer_addrs() + + "','" + + d.getBenf_name() + + "','" + + d.getBenf_acct_no() + + "','" + + d.getBenef_address() + + "','" + + d.getSender_ifsc() + + "','" + + d.getReciever_ifsc() + + "','" + + d.getMsg_type() + + "','" + + d.getCreditor_amt() + + "','" + + d.getRemitter_info() + + "','" + + d.getReject_code() + + "','" + + d.getStatus() + + "')"; + log.info("SQL Statement :" + query); + + st2.addBatch(query); + log.info("Added to DB Insert Batch"); + } + + st2.executeBatch(); + log.info("Insert to DB Completed"); + log.info("Posting Txns in IPKS"); + + CallableStatement cs = connection.prepareCall("{call rtgs_api_txn_post}"); + cs.execute(); + + log.info("Posting Completed, Check log."); + + } catch (Exception ex) { + log.error( + String.valueOf(ex.getMessage()) + " error in request response class on line no 443"); + } finally { + + try { + if (connection != null) connection.close(); + } catch (SQLException e1) { + log.error( + String.valueOf(e1.getMessage()) + " error in request response class on line no 450"); + } + } + } + + public static void ErrorStoreInDaatabaseIPKS( + String bankcode, String error_msg, String errordate, String Error_at) { + Connection connection = null; + + Statement st = null; + String query = null; + + try { + connection = Util.getDBConnection(); + st = connection.createStatement(); + + query = + "insert into neft_rtgs_dbtl_api_error_log" + + " (bank_code,proc_date,proc_time,api_type,error_msg,error_at) values('" + + bankcode + + "','" + + errordate + + "',to_date(to_char(SYSTIMESTAMP," + + " 'DD-MON-RRHH24:MI:SS'),'DD-MON-RRHH24:MI:SS'),'InwardRtgs','" + + error_msg + + "','" + + Error_at + + "')"; + + st = connection.createStatement(); + int updatecount = st.executeUpdate(query); + + try { + CallableStatement cs = connection.prepareCall("{call rtgs_api_txn_post}"); + cs.execute(); + + log.info("Posting Completed, Check log."); + + } catch (Exception e) { + log.error(String.valueOf(e.getMessage()) + " error in pocedure call"); + } + + } catch (Exception e) { + log.error(String.valueOf(e.getMessage()) + " error in request response class on line no 474"); + } finally { + + try { + if (connection != null) connection.close(); + } catch (SQLException e1) { + log.error( + String.valueOf(e1.getMessage()) + " error in request response class on line no 481 "); + } + } + } + + public static void ErrorStoreInDaatabaseAPI( + String bankcode, String error_msg, String errordate, String Error_at) { + Connection connection = null; + + Statement st = null; + String query = null; + + try { + connection = Util.getDBConnectionforAPI(); + st = connection.createStatement(); + + query = + "insert into neft_rtgs_dbtl_api_error_log" + + " (bank_code,proc_date,proc_time,api_type,error_msg,error_at) values('" + + bankcode + + "','" + + errordate + + "',to_date(to_char(SYSTIMESTAMP," + + " 'DD-MON-RRHH24:MI:SS'),'DD-MON-RRHH24:MI:SS'),'Dbtl','" + + error_msg + + "','" + + Error_at + + "')"; + + st = connection.createStatement(); + int updatecount = st.executeUpdate(query); + + try { + CallableStatement cs = connection.prepareCall("{call rtgs_api_txn_post}"); + cs.execute(); + + log.info("Posting Completed, Check log."); + + } catch (Exception e) { + log.error(String.valueOf(e.getMessage()) + " error in pocedure call"); + } + + } catch (Exception e) { + log.error(String.valueOf(e.getMessage()) + " error in request response class on line no 508"); + } finally { + + try { + if (connection != null) connection.close(); + } catch (SQLException e1) { + log.error( + String.valueOf(e1.getMessage()) + " error in request response class on line no 515 "); + } + } + } + + public static void setDatainAPIDatabase(ArrayList data, String date) { + Connection connection = null; + ResultSet rs = null; + Statement st = null; + String query = null; + PreparedStatement statement = null; + ArrayList combination1 = new ArrayList<>(); + + try { + try { + connection = Util.getDBConnectionforAPI(); + st = connection.createStatement(); + + rs = + st.executeQuery( + "select l.bankcode,l.jrnl_id,l.txn_date from inward_rtgs_api_log l where" + + " l.txn_date='" + + date + + "'"); + + while (rs.next()) { + String comb = + String.valueOf(rs.getString(1)) + "|" + rs.getString(2) + "|" + rs.getString(3); + + combination1.add(comb); + } + } catch (Exception ex) { + log.error( + String.valueOf(ex.getMessage()) + " error in request response class on line no 547"); + } + + Iterator iter = data.iterator(); + Statement st2 = connection.createStatement(); + while (iter.hasNext()) { + DataBean d = iter.next(); + + if (combination1.contains( + String.valueOf(d.getBankcode()) + "|" + d.getJrnl() + "|" + d.getTrandate()) + || d.getJrnl() == null + || d.getJrnl().equalsIgnoreCase("")) { + log.info( + "RECORD ALREADY PRESENT API for " + + d.getBankcode() + + "|" + + d.getJrnl() + + "|" + + d.getTrandate()); + + continue; + } + query = + "insert into inward_rtgs_api_log(bankcode,jrnl_id,ref_no, txn_date, amount," + + " remmiter_name,remmiter_acct, remmiter_addrs, benf_name, benf_acct_no," + + " benf_addrs, sender_ifsc, reciever_ifsc,msg_typ, creditor_amt, remmiter_info," + + " reject_code, status) values ('" + + d.getBankcode() + + "','" + + d.getJrnl() + + "','" + + d.getUtr() + + "','" + + d.getTrandate() + + "',abs(" + + d.getTrnamt() + + "),'"; + query = + String.valueOf(query) + + d.getRemiteer_name() + + "','" + + d.getRemiteer_acct() + + "','" + + d.getRemiteer_addrs() + + "','" + + d.getBenf_name() + + "','" + + d.getBenf_acct_no() + + "','" + + d.getBenef_address() + + "','" + + d.getSender_ifsc() + + "','" + + d.getReciever_ifsc() + + "','" + + d.getMsg_type() + + "','" + + d.getCreditor_amt() + + "','" + + d.getRemitter_info() + + "','" + + d.getReject_code() + + "','" + + d.getStatus() + + "')"; + log.info("SQL Statement :" + query); + + st2.addBatch(query); + log.info("Added to DB Insert Batch"); + } + + st2.executeBatch(); + log.info("Insert to DB Completed"); + log.info("Posting Txns in IPKS"); + + CallableStatement cs = connection.prepareCall("{call rtgs_api_txn_post}"); + cs.execute(); + + log.info("Posting Completed, Check log."); + + } catch (Exception ex) { + log.error( + String.valueOf(ex.getMessage()) + " error in request response class on line no 596"); + } finally { + + try { + if (connection != null) connection.close(); + } catch (SQLException e1) { + log.error( + String.valueOf(e1.getMessage()) + " error in request response class on line no 603"); + } + } + } +} diff --git a/src/main/java/com/methods/Util.java b/src/main/java/com/methods/Util.java new file mode 100644 index 0000000..52bad0f --- /dev/null +++ b/src/main/java/com/methods/Util.java @@ -0,0 +1,43 @@ +package com.methods; + +import com.main.Scheduler; +import java.sql.Connection; +import java.sql.DriverManager; +import org.apache.log4j.Logger; + +public class Util { + static Logger log = Logger.getLogger(Scheduler.class.getName()); + + public static Connection getDBConnection() { + Connection dbConnection = null; + + try { + Class.forName(Scheduler.prop.getProperty("DB_DRIVER")); + dbConnection = + DriverManager.getConnection( + Scheduler.prop.getProperty("DB_URL"), + Scheduler.prop.getProperty("DB_USER"), + Scheduler.prop.getProperty("DB_PWD")); + } catch (Exception e) { + log.error(String.valueOf(e.getMessage()) + " in Util class db connection error"); + } + return dbConnection; + } + + public static Connection getDBConnectionforAPI() { + Connection dbConnection = null; + + try { + Class.forName(Scheduler.prop.getProperty("DB_DRIVER")); + dbConnection = + DriverManager.getConnection( + Scheduler.prop.getProperty("DB_URL_API"), + Scheduler.prop.getProperty("DB_USER_API"), + Scheduler.prop.getProperty("DB_PWD_API")); + } catch (Exception e) { + log.error( + String.valueOf(e.getMessage()) + " in Util class db connection error for API database"); + } + return dbConnection; + } +} \ No newline at end of file diff --git a/src/main/resources/Properties.properties b/src/main/resources/Properties.properties new file mode 100644 index 0000000..3ccb620 --- /dev/null +++ b/src/main/resources/Properties.properties @@ -0,0 +1,15 @@ +DB_DRIVER=oracle.jdbc.OracleDriver + +# IPKS database credentials +DB_URL=jdbc:oracle:thin:@ipksprod3.c7q7defafeea.ap-south-1.rds.amazonaws.com:1521:ipks +DB_USER=pacs_db +DB_PWD=pacs_db + +# IPKS API service database credentials +DB_URL_API=jdbc:oracle:thin:@ipksapi.c7q7defafeea.ap-south-1.rds.amazonaws.com:1521:ipksapi +DB_USER_API=api_db +DB_PWD_API=api_db + +# New C-Edge APIs for UCB and NABARD banks +APIURL_UCB=https://UCBIPKS.cedgeapiservices.in/IPKSTRAN +APIURL_NABARD=https://NABARDIPKS.cedgeapiservices.in/IPKSTRAN diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties new file mode 100644 index 0000000..0e22675 --- /dev/null +++ b/src/main/resources/log4j.properties @@ -0,0 +1,12 @@ + + +# Define the root logger with appender file +#log =G:/log +log=/home/ec2-user/NEFT_RTGS_DBT_LOGS/INWARD_RTGS + +log4j.rootLogger=DEBUG, RollingAppender +log4j.appender.RollingAppender=org.apache.log4j.DailyRollingFileAppender +log4j.appender.RollingAppender.File=${log}/inwardrtgs.out +log4j.appender.RollingAppender.DatePattern='.'yyyy-MM-dd +log4j.appender.RollingAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.RollingAppender.layout.ConversionPattern=[%p] %d %c %M - %m%n \ No newline at end of file