Refactoring of query and tests

Signed-off-by: Jonathan Philip Knoblauch <JonathanPhilip.Knoblauch@bosch-si.com>
This commit is contained in:
Jonathan Philip Knoblauch
2016-10-28 11:17:23 +02:00
committed by Kai Zimmermann
parent 812e613438
commit 979c2a21d6
4 changed files with 63 additions and 71 deletions

View File

@@ -206,14 +206,13 @@ public class JpaRolloutGroupManagement implements RolloutGroupManagement {
}
@Override
public Long countTargetsOfRolloutsGroup(@NotNull final RolloutGroup rolloutGroup) {
public Long countTargetsOfRolloutsGroup(@NotNull final Long rolloutGroupId) {
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
final CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
final Root<RolloutTargetGroup> countQueryFrom = countQuery.from(RolloutTargetGroup.class);
countQuery.select(cb.count(countQueryFrom))
.where(cb.equal(countQueryFrom.get(RolloutTargetGroup_.rolloutGroup), rolloutGroup));
countQuery.select(cb.count(countQueryFrom)).where(cb
.equal(countQueryFrom.get(RolloutTargetGroup_.rolloutGroup).get(JpaRolloutGroup_.id), rolloutGroupId));
return entityManager.createQuery(countQuery).getSingleResult();
}
}

View File

@@ -464,7 +464,7 @@ public class JpaRolloutManagement implements RolloutManagement {
private void executeRolloutGroups(final JpaRollout rollout, final List<JpaRolloutGroup> rolloutGroups) {
for (final JpaRolloutGroup rolloutGroup : rolloutGroups) {
checkIfTargetsOfRolloutGroupDeleted(rolloutGroup);
checkIfTargetsWhereDeleted(rolloutGroup);
// error state check, do we need to stop the whole
// rollout because of error?
@@ -486,23 +486,27 @@ public class JpaRolloutManagement implements RolloutManagement {
}
}
private void checkIfTargetsOfRolloutGroupDeleted(final JpaRolloutGroup rolloutGroup) {
private void checkIfTargetsWhereDeleted(final JpaRolloutGroup rolloutGroup) {
final long countTargetsOfRolloutGroup = rolloutGroupManagement.countTargetsOfRolloutsGroup(rolloutGroup);
if (rolloutGroup.getTotalTargets() != countTargetsOfRolloutGroup) {
// targets have been deleted and we have to update the
// total target count in the rollout and the rollout group
final JpaRollout jpaRollout = (JpaRollout) rolloutGroup.getRollout();
final long updatedTargetCount = jpaRollout.getTotalTargets()
- (rolloutGroup.getTotalTargets() - countTargetsOfRolloutGroup);
jpaRollout.setTotalTargets(updatedTargetCount);
final JpaRolloutGroup jpaRolloutGroup = rolloutGroup;
jpaRolloutGroup.setTotalTargets((int) countTargetsOfRolloutGroup);
rolloutRepository.save(jpaRollout);
rolloutGroupRepository.save(jpaRolloutGroup);
final long countTargetsOfRolloutGroup = rolloutGroupManagement
.countTargetsOfRolloutsGroup(rolloutGroup.getId());
if (rolloutGroup.getTotalTargets() == countTargetsOfRolloutGroup) {
return;
}
// else targets have been deleted and we have to update the
// total target count in the rollout and the rollout group
updateTargetCount(rolloutGroup, countTargetsOfRolloutGroup);
}
private void updateTargetCount(final JpaRolloutGroup rolloutGroup, final long countTargetsOfRolloutGroup) {
final JpaRollout jpaRollout = (JpaRollout) rolloutGroup.getRollout();
final long updatedTargetCount = jpaRollout.getTotalTargets()
- (rolloutGroup.getTotalTargets() - countTargetsOfRolloutGroup);
jpaRollout.setTotalTargets(updatedTargetCount);
final JpaRolloutGroup jpaRolloutGroup = rolloutGroup;
jpaRolloutGroup.setTotalTargets((int) countTargetsOfRolloutGroup);
rolloutRepository.save(jpaRollout);
rolloutGroupRepository.save(jpaRolloutGroup);
}
private void executeLatestRolloutGroup(final JpaRollout rollout) {