private List<RequestEntity> applyUserActionsToRequests(List<RequestEntity> requests) { List<UserActionEntity> userActions = mUserActionsRetriever.getAllUserActions(); if (userActions.isEmpty() || requests.isEmpty()) return requests; Collections.sort(requests, mComparator); // sort in order to be able to use binary search List<RequestEntity> updatedRequests = new ArrayList<>(requests); RequestEntity updatedRequest; for (UserActionEntity userAction : userActions) { if (mUserActionsToRequestsApplier.isUserActionAffectingRequest(userAction)) { // find the request affected by user action, and if it is found - apply the action to it int affectedEntityPos = Collections.binarySearch( requests, RequestEntity.getBuilder().setId(userAction.getEntityId()).build(), mComparator); if (affectedEntityPos >= 0) { updatedRequest = mUserActionsToRequestsApplier.applyUserActionToRequest( userAction, requests.get(affectedEntityPos)); updatedRequests.set(affectedEntityPos, updatedRequest); } } } return updatedRequests; }
.setId(tempId) .setCreatedBy(createdBy) .setCreatedAt(IdcDateTimeUtils.getCurrentDateTimeLocalized())
@Test public void compare_returnsCorrectValues() throws Exception { // Arrange RequestEntity entity1 = RequestEntity.getBuilder().setId("10").build(); RequestEntity entity2 = RequestEntity.getBuilder().setId("20").build(); RequestEntity entity3 = RequestEntity.getBuilder().setId("30").build(); // Act int result1 = SUT.compare(entity1, entity2); int result2 = SUT.compare(entity2, entity3); int result3 = SUT.compare(entity3, entity1); int result4 = SUT.compare(entity1, entity1); // Assert assertTrue(result1 < 0); assertTrue(result2 < 0); assertTrue(result3 > 0); assertTrue(result4 == 0); } }