Backward compatibility with CodeLookUp

This commit is contained in:
Jose Hernandez
2022-04-26 19:09:05 +02:00
committed by Arnold Gálovics
parent 6d4e731ff9
commit e3e4dbeb8a
2 changed files with 8 additions and 62 deletions
@@ -75,6 +75,9 @@ public final class ResultsetColumnHeaderData implements Serializable {
if (isString()) { if (isString()) {
displayType = "STRING"; displayType = "STRING";
} else if (isAnyInteger()) { } else if (isAnyInteger()) {
if (isInteger()) {
this.columnType = this.columnType.toUpperCase();
}
displayType = "INTEGER"; displayType = "INTEGER";
} else if (isDate()) { } else if (isDate()) {
displayType = "DATE"; displayType = "DATE";
@@ -92,7 +95,7 @@ public final class ResultsetColumnHeaderData implements Serializable {
} }
} else { } else {
if (isInt()) { if (isInt() || isInteger()) {
displayType = "CODELOOKUP"; displayType = "CODELOOKUP";
} else if (isVarchar()) { } else if (isVarchar()) {
displayType = "CODEVALUE"; displayType = "CODEVALUE";
@@ -27,8 +27,6 @@ import javax.sql.DataSource;
import org.apache.fineract.infrastructure.core.exception.PlatformDataIntegrityException; import org.apache.fineract.infrastructure.core.exception.PlatformDataIntegrityException;
import org.apache.fineract.infrastructure.core.service.RoutingDataSource; import org.apache.fineract.infrastructure.core.service.RoutingDataSource;
import org.apache.fineract.infrastructure.core.service.database.DatabaseIndependentQueryService; import org.apache.fineract.infrastructure.core.service.database.DatabaseIndependentQueryService;
import org.apache.fineract.infrastructure.core.service.database.DatabaseSpecificSQLGenerator;
import org.apache.fineract.infrastructure.core.service.database.DatabaseTypeResolver;
import org.apache.fineract.infrastructure.dataqueries.data.GenericResultsetData; import org.apache.fineract.infrastructure.dataqueries.data.GenericResultsetData;
import org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeaderData; import org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeaderData;
import org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnValueData; import org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnValueData;
@@ -48,18 +46,13 @@ public class GenericDataServiceImpl implements GenericDataService {
private final JdbcTemplate jdbcTemplate; private final JdbcTemplate jdbcTemplate;
private final DataSource dataSource; private final DataSource dataSource;
private final DatabaseSpecificSQLGenerator sqlGenerator;
private final DatabaseTypeResolver databaseTypeResolver;
private final DatabaseIndependentQueryService databaseIndependentQueryService; private final DatabaseIndependentQueryService databaseIndependentQueryService;
private static final Logger LOG = LoggerFactory.getLogger(GenericDataServiceImpl.class); private static final Logger LOG = LoggerFactory.getLogger(GenericDataServiceImpl.class);
@Autowired @Autowired
public GenericDataServiceImpl(final RoutingDataSource dataSource, final JdbcTemplate jdbcTemplate, public GenericDataServiceImpl(final RoutingDataSource dataSource, final JdbcTemplate jdbcTemplate,
DatabaseSpecificSQLGenerator sqlGenerator, DatabaseTypeResolver databaseTypeResolver,
DatabaseIndependentQueryService databaseIndependentQueryService) { DatabaseIndependentQueryService databaseIndependentQueryService) {
this.dataSource = dataSource; this.dataSource = dataSource;
this.sqlGenerator = sqlGenerator;
this.databaseTypeResolver = databaseTypeResolver;
this.databaseIndependentQueryService = databaseIndependentQueryService; this.databaseIndependentQueryService = databaseIndependentQueryService;
this.jdbcTemplate = new JdbcTemplate(this.dataSource); this.jdbcTemplate = new JdbcTemplate(this.dataSource);
} }
@@ -206,9 +199,6 @@ public class GenericDataServiceImpl implements GenericDataService {
@Override @Override
public List<ResultsetColumnHeaderData> fillResultsetColumnHeaders(final String datatable) { public List<ResultsetColumnHeaderData> fillResultsetColumnHeaders(final String datatable) {
LOG.debug("::3 Was inside the fill ResultSetColumnHeader");
final SqlRowSet columnDefinitions = getDatatableMetaData(datatable); final SqlRowSet columnDefinitions = getDatatableMetaData(datatable);
final List<ResultsetColumnHeaderData> columnHeaders = new ArrayList<>(); final List<ResultsetColumnHeaderData> columnHeaders = new ArrayList<>();
@@ -226,38 +216,16 @@ public class GenericDataServiceImpl implements GenericDataService {
List<ResultsetColumnValueData> columnValues = new ArrayList<>(); List<ResultsetColumnValueData> columnValues = new ArrayList<>();
String codeName = null; String codeName = null;
if ("varchar".equalsIgnoreCase(columnType)) { final int codePosition = columnName.indexOf("_cd");
if ("varchar".equalsIgnoreCase(columnType) || "int".equalsIgnoreCase(columnType) || "integer".equalsIgnoreCase(columnType)) {
final int codePosition = columnName.indexOf("_cv");
if (codePosition > 0) {
codeName = columnName.substring(0, codePosition);
columnValues = retreiveColumnValues(codeName);
}
} else if ("int".equalsIgnoreCase(columnType)) {
final int codePosition = columnName.indexOf("_cd");
if (codePosition > 0) { if (codePosition > 0) {
codeName = columnName.substring(0, codePosition); codeName = columnName.substring(0, codePosition);
columnValues = retreiveColumnValues(codeName); columnValues = retreiveColumnValues(codeName);
} }
} }
if (codeName == null) {
final SqlRowSet rsValues = getDatatableCodeData(datatable, columnName);
Integer codeId = null;
while (rsValues.next()) {
codeId = rsValues.getInt("id");
codeName = rsValues.getString("code_name");
}
columnValues = retreiveColumnValues(codeId);
} columnHeaders.add(ResultsetColumnHeaderData.detailed(columnName, columnType, columnLength, columnNullable, columnIsPrimaryKey,
columnValues, codeName));
final ResultsetColumnHeaderData rsch = ResultsetColumnHeaderData.detailed(columnName, columnType, columnLength, columnNullable,
columnIsPrimaryKey, columnValues, codeName);
columnHeaders.add(rsch);
} }
return columnHeaders; return columnHeaders;
@@ -286,23 +254,6 @@ public class GenericDataServiceImpl implements GenericDataService {
return columnValues; return columnValues;
} }
private List<ResultsetColumnValueData> retreiveColumnValues(final Integer codeId) {
final List<ResultsetColumnValueData> columnValues = new ArrayList<>();
if (codeId != null) {
final String sql = "select v.id, v.code_value from m_code_value v where v.code_id = ? order by v.order_position, v.id";
final SqlRowSet rsValues = this.jdbcTemplate.queryForRowSet(sql, new Object[] { codeId }); // NOSONAR
rsValues.beforeFirst();
while (rsValues.next()) {
final Integer id = rsValues.getInt("id");
final String codeValue = rsValues.getString("code_value");
columnValues.add(new ResultsetColumnValueData(id, codeValue));
}
}
return columnValues;
}
@SuppressWarnings("AvoidHidingCauseException") @SuppressWarnings("AvoidHidingCauseException")
private SqlRowSet getDatatableMetaData(final String datatable) { private SqlRowSet getDatatableMetaData(final String datatable) {
try { try {
@@ -311,12 +262,4 @@ public class GenericDataServiceImpl implements GenericDataService {
throw new DatatableNotFoundException(datatable); throw new DatatableNotFoundException(datatable);
} }
} }
private SqlRowSet getDatatableCodeData(final String datatable, final String columnName) {
final String dataTableColumnName = datatable.toLowerCase().replaceAll("\\s", "_") + "_" + columnName + "'";
final String sql = "select mc.id,mc.code_name from m_code mc join x_table_column_code_mappings xcc on xcc.code_id = mc.id where xcc.column_alias_name= ?";
final SqlRowSet rsValues = this.jdbcTemplate.queryForRowSet(sql, new Object[] { dataTableColumnName }); // NOSONAR
return rsValues;
}
} }