Uploaded image for project: 'Ranger'
  1. Ranger
  2. RANGER-1419

Do some code improvement in Java method XTrxLogService.searchXTrxLogs

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • None
    • 1.0.0
    • admin
    • Patch

    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.

      Attachments

        Activity

          People

            zhangqiang2 Qiang Zhang
            zhangqiang2 Qiang Zhang
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - 0.2h
                0.2h
                Remaining:
                Remaining Estimate - 0.2h
                0.2h
                Logged:
                Time Spent - Not Specified
                Not Specified