Description
In method searchXTrxLogs of class \security-admin\src\main\java\org\apache\ranger\service\XTrxLogService.java,
there is some code can be improved:
1.When search type is SearchField.SEARCH_TYPE.PARTIAL, stringPredicate generated twice which first is redundant.
if(attr != null){ stringPredicate = criteriaBuilder.equal(rootEntityType.get(attr), paramValue); if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.PARTIAL)) { String val = "%" + paramValue + "%"; stringPredicate = criteriaBuilder.like(rootEntityType.get(attr), val); } predicate = criteriaBuilder.and(predicate, stringPredicate); }
2."datePredicate = criteriaBuilder.equal(...)" is repeated, the first is redundant and duplicated code.
if (searchField.getCustomCondition() == null) { datePredicate = criteriaBuilder.equal(rootEntityType.get(attr), fieldValue); if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.LESS_THAN)) { datePredicate = criteriaBuilder.lessThan(rootEntityType.get(attr), fieldValue); } else if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.LESS_EQUAL_THAN)) { datePredicate = criteriaBuilder.lessThanOrEqualTo(rootEntityType.get(attr), fieldValue); } else if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.GREATER_THAN)) { datePredicate = criteriaBuilder.greaterThan(rootEntityType.get(attr), fieldValue); } else if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.GREATER_EQUAL_THAN)) { datePredicate = criteriaBuilder.greaterThanOrEqualTo(rootEntityType.get(attr), fieldValue); } else { datePredicate = criteriaBuilder.equal(rootEntityType.get(attr), fieldValue); } predicate = criteriaBuilder.and(predicate, datePredicate); }
3.The following code is repated in Java method XTrxLogService.searchXTrxLogsCount, it can be refactored to a method.
for(String key : paramList.keySet()){...}
4.Do some other code improvement in Java method XTrxLogService.searchXTrxLogs and related code.
Such as equal usage and local variable, etc.
5.XTrxLogService.searchXTrxLogs is used in Audit Admin WebPage,
please refer screenshot AduitAdminSearch.jpg for more detail,
so it can be tested easily.