Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public int downloadTransactionalData(int vanID, String ServerAuthorization, Stri
for (int i = 0; i < 5; i++) {
switch (i) {
case 0: {
obj = downloadDataFromCentral("db_iemr_sync", "t_indent", vanID, ServerAuthorization, token);
obj = downloadDataFromCentral("db_iemr", "t_indent", vanID, ServerAuthorization, token);
List<Long> ids = new ArrayList<Long>();
Indent[] indentArr = InputMapper.gson(1).fromJson(String.valueOf(obj.get("data")), Indent[].class, 1);
List<Indent> indentList = Arrays.asList(indentArr);
Expand Down Expand Up @@ -115,7 +115,7 @@ public int downloadTransactionalData(int vanID, String ServerAuthorization, Stri
break;
}
case 1: {
obj = downloadDataFromCentral("db_iemr_sync", "t_indentorder", vanID, ServerAuthorization, token);
obj = downloadDataFromCentral("db_iemr", "t_indentorder", vanID, ServerAuthorization, token);
List<Long> ids = new ArrayList<Long>();
IndentOrder[] indentOrderArr = InputMapper.gson(1).fromJson(String.valueOf(obj.get("data")),
IndentOrder[].class, 1);
Expand All @@ -141,7 +141,7 @@ public int downloadTransactionalData(int vanID, String ServerAuthorization, Stri
break;
}
case 2: {
obj = downloadDataFromCentral("db_iemr_sync", "t_indentissue", vanID, ServerAuthorization, token);
obj = downloadDataFromCentral("db_iemr", "t_indentissue", vanID, ServerAuthorization, token);
List<Long> ids = new ArrayList<Long>();
IndentIssue[] indentIssueArr = InputMapper.gson(1).fromJson(String.valueOf(obj.get("data")),
IndentIssue[].class, 1);
Expand Down Expand Up @@ -169,7 +169,7 @@ public int downloadTransactionalData(int vanID, String ServerAuthorization, Stri
break;
}
case 3: {
obj = downloadDataFromCentral("db_iemr_sync", "t_stocktransfer", vanID, ServerAuthorization, token);
obj = downloadDataFromCentral("db_iemr", "t_stocktransfer", vanID, ServerAuthorization, token);
List<Long> ids = new ArrayList<Long>();
T_StockTransfer[] stockTransferArr = InputMapper.gson(1).fromJson(String.valueOf(obj.get("data")),
T_StockTransfer[].class, 1);
Expand Down Expand Up @@ -197,7 +197,7 @@ public int downloadTransactionalData(int vanID, String ServerAuthorization, Stri
break;
}
case 4: {
obj = downloadDataFromCentral("db_iemr_sync", "t_itemstockentry", vanID, ServerAuthorization, token);
obj = downloadDataFromCentral("db_iemr", "t_itemstockentry", vanID, ServerAuthorization, token);
List<Long> ids = new ArrayList<Long>();
ItemStockEntry[] itemStockEntryArr = InputMapper.gson(1).fromJson(String.valueOf(obj.get("data")),
ItemStockEntry[].class, 1);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
/*
* AMRIT – Accessible Medical Records via Integrated Technology
* Integrated EHR (Electronic Health Records) Solution
*
* Copyright (C) "Piramal Swasthya Management and Research Institute"
*
* This file is part of AMRIT.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see https://www.gnu.org/licenses/.
*/
package com.iemr.mmu.service.dataSyncLayerCentral;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

/***
*
* @author NE298657
*
*/

@Service
public class DataSyncRepositoryCentralDownload {
@Autowired
private DataSource dataSource;

private JdbcTemplate jdbcTemplate;

private JdbcTemplate getJdbcTemplate() {
return new JdbcTemplate(dataSource);

}

private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName());

// Data Upload Repository
public int checkRecordIsAlreadyPresentOrNot(String schemaName, String tableName, String vanSerialNo, String vanID,
String vanAutoIncColumnName, int syncFacilityID) {
jdbcTemplate = getJdbcTemplate();

List<Object> params = new ArrayList<>();

StringBuilder queryBuilder = new StringBuilder("SELECT ");
queryBuilder.append(vanAutoIncColumnName);
queryBuilder.append(" FROM ");
queryBuilder.append(schemaName+"."+tableName);

//params.add(vanAutoIncColumnName);
//params.add(schemaName);
//params.add(tableName);

StringBuilder whereClause = new StringBuilder();
whereClause.append(" WHERE ");
whereClause.append("VanSerialNo = ?");
params.add(vanSerialNo);

if ((tableName.equalsIgnoreCase("t_patientissue") || tableName.equalsIgnoreCase("t_physicalstockentry")
|| tableName.equalsIgnoreCase("t_stockadjustment") || tableName.equalsIgnoreCase("t_saitemmapping")
|| tableName.equalsIgnoreCase("t_stocktransfer") || tableName.equalsIgnoreCase("t_patientreturn")
|| tableName.equalsIgnoreCase("t_facilityconsumption") || tableName.equalsIgnoreCase("t_indent")
|| tableName.equalsIgnoreCase("t_indentorder") || tableName.equalsIgnoreCase("t_indentissue")
|| tableName.equalsIgnoreCase("t_itemstockentry") || tableName.equalsIgnoreCase("t_itemstockexit"))
&& syncFacilityID > 0) {

whereClause.append(" AND ");
whereClause.append("SyncFacilityID = ?");
params.add(syncFacilityID);

}

else {

whereClause.append(" AND ");
whereClause.append("VanID = ?");
params.add(vanID);

}

queryBuilder.append(whereClause);
String query = queryBuilder.toString();
Object[] queryParams = params.toArray();
List<Map<String, Object>> resultSet = jdbcTemplate.queryForList(query, queryParams);
if (resultSet != null && resultSet.size() > 0)
return 1;
else
return 0;
}

// Method for synchronization of data to central DB
public int[] syncDataToCentralDB(String schema, String tableName, String serverColumns, String query,
List<Object[]> syncDataList) {
jdbcTemplate = getJdbcTemplate();
if (query.startsWith("INSERT")) {
for (int i = 0; i < syncDataList.size(); i++) {
Object[] array = syncDataList.get(i);// Arrey 1

if (query.startsWith("INSERT")) {
// array = new Object[] {serverColumns, array };
syncDataList.set(i, array);
}
}
} else {
for (int i = 0; i < syncDataList.size(); i++) {

Object[] array = syncDataList.get(i);// Arrey 1
String[] columnsArray = null;
if(null != serverColumns)
columnsArray = serverColumns.split(","); // arrey 2

List<Object> Newarray = new ArrayList<>();

int arrayIndex = 0;
int columnsArrayIndex = 0;
//Newarray.add(schema);
//Newarray.add(tableName);
//while (columnsArrayIndex < columnsArray.length || arrayIndex < array.length) {
if (null != columnsArray && columnsArrayIndex < columnsArray.length) {
Newarray.add(columnsArray[columnsArrayIndex]);
columnsArrayIndex++;
}

/*
* if (arrayIndex < array.length) { Newarray.add(array); arrayIndex++; }
*/
//}

// Convert Newarray back to an array
//Object[] resultArray = Newarray.toArray(new Object[0]);
syncDataList.set(i, array);

}
}
// start batch insert/update
int[] i = jdbcTemplate.batchUpdate(query, syncDataList);
return i;

}

// End of Data Upload Repository

public List<Map<String, Object>> getMasterDataFromTable(String schema, String table, String columnNames,
String masterType, Timestamp lastDownloadDate, Integer vanID, Integer psmID) throws Exception {
jdbcTemplate = getJdbcTemplate();
List<Map<String, Object>> resultSetList =new ArrayList<>();
String baseQuery = "";
if (masterType != null) {
if (lastDownloadDate != null) {
if (masterType.equalsIgnoreCase("A")) {
baseQuery += " SELECT " + columnNames + " FROM " + schema + "." + table
+ " WHERE LastModDate >= ? ";
resultSetList = jdbcTemplate.queryForList(baseQuery,lastDownloadDate);

}
else if (masterType.equalsIgnoreCase("V")) {
baseQuery += " SELECT " + columnNames + " FROM " + schema + "." + table
+ " WHERE LastModDate >= ? AND VanID = ? ";
resultSetList = jdbcTemplate.queryForList(baseQuery,lastDownloadDate,vanID);
}
else if (masterType.equalsIgnoreCase("P")) {
baseQuery += " SELECT " + columnNames + " FROM " + schema + "." + table
+ " WHERE LastModDate >= ? AND ProviderServiceMapID = ? ";
resultSetList = jdbcTemplate.queryForList(baseQuery,lastDownloadDate,psmID);
}
} else {
if (masterType.equalsIgnoreCase("A")) {
baseQuery += " SELECT " + columnNames + " FROM " + schema + "." + table;
resultSetList = jdbcTemplate.queryForList(baseQuery);
}
else if (masterType.equalsIgnoreCase("V")) {
baseQuery += " SELECT " + columnNames + " FROM " + schema + "." + table + " WHERE VanID = ? ";
resultSetList = jdbcTemplate.queryForList(baseQuery,vanID);
}
else if (masterType.equalsIgnoreCase("P")) {
baseQuery += " SELECT " + columnNames + " FROM " + schema + "." + table
+ " WHERE ProviderServiceMapID = ? ";
resultSetList = jdbcTemplate.queryForList(baseQuery,psmID);
}
}
}
logger.info("Select query central: " + baseQuery);
logger.info("Last Downloaded Date " + lastDownloadDate);
logger.info("Result set Details: " + resultSetList);
return resultSetList;
}

// End of Data Download Repository
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@
public class GetMasterDataFromCentralForVanImpl implements GetMasterDataFromCentralForVan {
@Autowired
private DataSyncRepositoryCentral dataSyncRepositoryCentral;

@Autowired
private DataSyncRepositoryCentralDownload dataSyncRepositoryCentralDownload;

private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName());

public String getMasterDataForVan(SyncDownloadMaster obj) throws Exception {
Expand All @@ -62,7 +66,7 @@ public String getMasterDataForVan(SyncDownloadMaster obj) throws Exception {
private List<Map<String, Object>> getMasterDataFromGivenTable(SyncDownloadMaster tableDetails) throws Exception {
logger.info("ger master data="+ tableDetails.getSchemaName());
List<Map<String, Object>> resultSetList = new ArrayList<>();
resultSetList = dataSyncRepositoryCentral.getMasterDataFromTable(tableDetails.getSchemaName(),
resultSetList = dataSyncRepositoryCentralDownload.getMasterDataFromTable(tableDetails.getSchemaName(),
tableDetails.getTableName(), tableDetails.getServerColumnName(), tableDetails.getMasterType(),
tableDetails.getLastDownloadDate(), tableDetails.getVanID(), tableDetails.getProviderServiceMapID());
return resultSetList;
Expand Down