Add SpecificationBuilder to avoid duplicate code

Signed-off-by: SirWayne <dennis.melzer@bosch-si.com>
This commit is contained in:
SirWayne
2016-02-08 08:47:12 +01:00
parent be45209598
commit 4574c78908
3 changed files with 135 additions and 115 deletions

View File

@@ -16,6 +16,7 @@ import javax.validation.constraints.NotNull;
import org.eclipse.hawkbit.im.authentication.SpPermission.SpringEvalExpressions;
import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException;
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
import org.eclipse.hawkbit.repository.specifications.SpecificationsBuilder;
import org.eclipse.hawkbit.repository.specifications.TargetFilterQuerySpecification;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
@@ -33,7 +34,7 @@ import com.google.common.base.Strings;
/**
* Business service facade for managing {@link TargetFilterQuery}s.
*
*
*
*
*/
@@ -47,7 +48,7 @@ public class TargetFilterQueryManagement {
/**
* creating new {@link TargetFilterQuery}.
*
*
* @param customTargetFilter
* @return the created {@link TargetFilterQuery}
*/
@@ -57,16 +58,15 @@ public class TargetFilterQueryManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_CREATE_TARGET)
public TargetFilterQuery createTargetFilterQuery(@NotNull final TargetFilterQuery customTargetFilter) {
if (targetFilterQueryRepository.findByName(customTargetFilter.getName()) != null) {
if (this.targetFilterQueryRepository.findByName(customTargetFilter.getName()) != null) {
throw new EntityAlreadyExistsException(customTargetFilter.getName());
}
final TargetFilterQuery filter = targetFilterQueryRepository.save(customTargetFilter);
return filter;
return this.targetFilterQueryRepository.save(customTargetFilter);
}
/**
* Delete target filter query.
*
*
* @param targetFilterQueryId
* IDs of target filter query to be deleted
*/
@@ -74,26 +74,26 @@ public class TargetFilterQueryManagement {
@Transactional
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_DELETE_TARGET)
public void deleteTargetFilterQuery(@NotNull final Long targetFilterQueryId) {
targetFilterQueryRepository.delete(targetFilterQueryId);
this.targetFilterQueryRepository.delete(targetFilterQueryId);
}
/**
*
*
* Retrieves all target filter query{@link TargetFilterQuery}.
*
*
* @param pageable
* pagination parameter
* @return the found {@link TargetFilterQuery}s
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Page<TargetFilterQuery> findAllTargetFilterQuery(@NotNull final Pageable pageable) {
return targetFilterQueryRepository.findAll(pageable);
return this.targetFilterQueryRepository.findAll(pageable);
}
/**
* Retrieves all target filter query which {@link TargetFilterQuery}.
*
*
*
*
* @param pageable
* pagination parameter
* @param name
@@ -102,7 +102,7 @@ public class TargetFilterQueryManagement {
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Page<TargetFilterQuery> findTargetFilterQueryByFilters(@NotNull final Pageable pageable, final String name) {
final List<Specification<TargetFilterQuery>> specList = new ArrayList<Specification<TargetFilterQuery>>();
final List<Specification<TargetFilterQuery>> specList = new ArrayList<>();
if (!Strings.isNullOrEmpty(name)) {
specList.add(TargetFilterQuerySpecification.likeName(name));
}
@@ -110,7 +110,7 @@ public class TargetFilterQueryManagement {
}
/**
*
*
* @param pageable
* pagination parameter
* @param specList
@@ -119,51 +119,43 @@ public class TargetFilterQueryManagement {
*/
private Page<TargetFilterQuery> findTargetFilterQueryByCriteriaAPI(@NotNull final Pageable pageable,
final List<Specification<TargetFilterQuery>> specList) {
Specifications<TargetFilterQuery> specs = null;
if (!specList.isEmpty()) {
specs = Specifications.where(specList.get(0));
}
if (specList.size() > 1) {
for (final Specification<TargetFilterQuery> s : specList.subList(1, specList.size())) {
specs = specs.and(s);
}
}
if (specs == null) {
return targetFilterQueryRepository.findAll(pageable);
} else {
return targetFilterQueryRepository.findAll(specs, pageable);
if (specList == null || specList.isEmpty()) {
return this.targetFilterQueryRepository.findAll(pageable);
}
final Specifications<TargetFilterQuery> specs = SpecificationsBuilder.combineWithAnd(specList);
return this.targetFilterQueryRepository.findAll(specs, pageable);
}
/**
* Find target filter query by name.
*
*
* @param targetFilterQueryName
* Target filter query name
* @return the found {@link TargetFilterQuery}
*
*
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public TargetFilterQuery findTargetFilterQueryByName(@NotNull final String targetFilterQueryName) {
return targetFilterQueryRepository.findByName(targetFilterQueryName);
return this.targetFilterQueryRepository.findByName(targetFilterQueryName);
}
/**
* Find target filter query by id.
*
*
* @param targetFilterQueryId
* Target filter query id
* @return the found {@link TargetFilterQuery}
*
*
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public TargetFilterQuery findTargetFilterQueryById(@NotNull final Long targetFilterQueryId) {
return targetFilterQueryRepository.findOne(targetFilterQueryId);
return this.targetFilterQueryRepository.findOne(targetFilterQueryId);
}
/**
* updates the {@link TargetFilterQuery}.
*
*
* @param targetFilterQuery
* to be updated
* @return the updated {@link TargetFilterQuery}
@@ -174,7 +166,7 @@ public class TargetFilterQueryManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_TARGET)
public TargetFilterQuery updateTargetFilterQuery(@NotNull final TargetFilterQuery targetFilterQuery) {
Assert.notNull(targetFilterQuery.getId());
return targetFilterQueryRepository.save(targetFilterQuery);
return this.targetFilterQueryRepository.save(targetFilterQuery);
}
}

View File

@@ -47,6 +47,7 @@ import org.eclipse.hawkbit.repository.model.TargetTagAssigmentResult;
import org.eclipse.hawkbit.repository.model.TargetUpdateStatus;
import org.eclipse.hawkbit.repository.model.Target_;
import org.eclipse.hawkbit.repository.rsql.RSQLUtility;
import org.eclipse.hawkbit.repository.specifications.SpecificationsBuilder;
import org.eclipse.hawkbit.repository.specifications.TargetSpecifications;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.beans.factory.annotation.Autowired;
@@ -59,7 +60,6 @@ import org.springframework.data.domain.SliceImpl;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.domain.Specifications;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Service;
@@ -114,7 +114,7 @@ public class TargetManagement {
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Target findTargetByControllerID(@NotEmpty final String controllerId) {
return targetRepository.findByControllerId(controllerId);
return this.targetRepository.findByControllerId(controllerId);
}
/**
@@ -131,7 +131,7 @@ public class TargetManagement {
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Target findTargetByControllerIDWithDetails(@NotEmpty final String controllerId) {
final Target result = targetRepository.findByControllerId(controllerId);
final Target result = this.targetRepository.findByControllerId(controllerId);
// load lazy relations
if (result != null) {
result.getTargetInfo().getControllerAttributes().size();
@@ -158,7 +158,8 @@ public class TargetManagement {
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public List<Target> findTargetsByControllerID(@NotEmpty final Collection<String> controllerIDs) {
return targetRepository.findAll(TargetSpecifications.byControllerIdWithStatusAndAssignedInJoin(controllerIDs));
return this.targetRepository
.findAll(TargetSpecifications.byControllerIdWithStatusAndAssignedInJoin(controllerIDs));
}
/**
@@ -168,7 +169,7 @@ public class TargetManagement {
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Long countTargetsAll() {
return targetRepository.count();
return this.targetRepository.count();
}
/**
@@ -190,7 +191,7 @@ public class TargetManagement {
}
return cb.conjunction();
};
return criteriaNoCountDao.findAll(spec, pageable, Target.class);
return this.criteriaNoCountDao.findAll(spec, pageable, Target.class);
}
/**
@@ -233,7 +234,7 @@ public class TargetManagement {
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Page<Target> findTargetsAll(@NotNull final Specification<Target> spec, @NotNull final Pageable pageable) {
return targetRepository.findAll(spec, pageable);
return this.targetRepository.findAll(spec, pageable);
}
/**
@@ -251,7 +252,8 @@ public class TargetManagement {
public List<Target> findTargetsByControllerIDsWithTags(@NotNull final List<String> controllerIDs) {
final List<List<String>> partition = Lists.partition(controllerIDs, Constants.MAX_ENTRIES_IN_STATEMENT);
return partition.stream()
.map(ids -> targetRepository.findAll(TargetSpecifications.byControllerIdWithStatusAndTagsInJoin(ids)))
.map(ids -> this.targetRepository
.findAll(TargetSpecifications.byControllerIdWithStatusAndTagsInJoin(ids)))
.flatMap(t -> t.stream()).collect(Collectors.toList());
}
@@ -270,7 +272,7 @@ public class TargetManagement {
public Target updateTarget(@NotNull final Target target) {
Assert.notNull(target.getId());
target.setNew(false);
return targetRepository.save(target);
return this.targetRepository.save(target);
}
/**
@@ -287,7 +289,7 @@ public class TargetManagement {
+ SpringEvalExpressions.IS_CONTROLLER)
public List<Target> updateTargets(@NotNull final List<Target> targets) {
targets.forEach(target -> target.setNew(false));
return targetRepository.save(targets);
return this.targetRepository.save(targets);
}
/**
@@ -305,11 +307,11 @@ public class TargetManagement {
// tenant! Delete statement are not automatically enhanced with the
// @FilterDef of the
// hibernate session.
final List<Long> targetsForCurrentTenant = targetRepository.findAll(Lists.newArrayList(targetIDs)).stream()
final List<Long> targetsForCurrentTenant = this.targetRepository.findAll(Lists.newArrayList(targetIDs)).stream()
.map(Target::getId).collect(Collectors.toList());
if (!targetsForCurrentTenant.isEmpty()) {
targetInfoRepository.deleteByTargetIdIn(targetsForCurrentTenant);
targetRepository.deleteByIdIn(targetsForCurrentTenant);
this.targetInfoRepository.deleteByTargetIdIn(targetsForCurrentTenant);
this.targetRepository.deleteByIdIn(targetsForCurrentTenant);
}
}
@@ -329,7 +331,7 @@ public class TargetManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY_AND_READ_TARGET)
public Page<Target> findTargetByAssignedDistributionSet(@NotNull final Long distributionSetID,
@NotNull final Pageable pageReq) {
return targetRepository.findByAssignedDistributionSetId(pageReq, distributionSetID);
return this.targetRepository.findByAssignedDistributionSetId(pageReq, distributionSetID);
}
/**
@@ -350,7 +352,7 @@ public class TargetManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY_AND_READ_TARGET)
public Page<Target> findTargetByAssignedDistributionSet(@NotNull final Long distributionSetID,
final Specification<Target> spec, @NotNull final Pageable pageReq) {
return targetRepository.findAll((Specification<Target>) (root, query, cb) -> cb.and(
return this.targetRepository.findAll((Specification<Target>) (root, query, cb) -> cb.and(
TargetSpecifications.hasAssignedDistributionSet(distributionSetID).toPredicate(root, query, cb),
spec.toPredicate(root, query, cb)), pageReq);
}
@@ -370,7 +372,7 @@ public class TargetManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY_AND_READ_TARGET)
public Page<Target> findTargetByInstalledDistributionSet(@NotNull final Long distributionSetID,
@NotNull final Pageable pageReq) {
return targetRepository.findByTargetInfoInstalledDistributionSetId(pageReq, distributionSetID);
return this.targetRepository.findByTargetInfoInstalledDistributionSetId(pageReq, distributionSetID);
}
/**
@@ -389,7 +391,7 @@ public class TargetManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY_AND_READ_TARGET)
public Page<Target> findTargetByInstalledDistributionSet(final Long distributionSetId,
final Specification<Target> spec, final Pageable pageable) {
return targetRepository.findAll((Specification<Target>) (root, query, cb) -> cb.and(
return this.targetRepository.findAll((Specification<Target>) (root, query, cb) -> cb.and(
TargetSpecifications.hasInstalledDistributionSet(distributionSetId).toPredicate(root, query, cb),
spec.toPredicate(root, query, cb)), pageable);
}
@@ -409,7 +411,7 @@ public class TargetManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Page<Target> findTargetByUpdateStatus(@NotNull final Pageable pageable,
@NotNull final TargetUpdateStatus status) {
return targetRepository.findByTargetInfoUpdateStatus(pageable, status);
return this.targetRepository.findByTargetInfoUpdateStatus(pageable, status);
}
/**
@@ -508,39 +510,18 @@ public class TargetManagement {
* @return the page with the found {@link Target}
*/
private Slice<Target> findByCriteriaAPI(final Pageable pageable, final List<Specification<Target>> specList) {
final Specifications<Target> specs = creatingTargetSpecifications(specList);
if (specs == null) {
return criteriaNoCountDao.findAll(pageable, Target.class);
} else {
return criteriaNoCountDao.findAll(specs, pageable, Target.class);
if (specList == null || specList.isEmpty()) {
return this.criteriaNoCountDao.findAll(pageable, Target.class);
}
return this.criteriaNoCountDao.findAll(SpecificationsBuilder.combineWithAnd(specList), pageable, Target.class);
}
private Long countByCriteriaAPI(final List<Specification<Target>> specList) {
final Specifications<Target> specs = creatingTargetSpecifications(specList);
if (specs == null) {
return targetRepository.count();
} else {
return targetRepository.count(specs);
if (specList == null || specList.isEmpty()) {
return this.targetRepository.count();
}
}
private static Specifications<Target> creatingTargetSpecifications(final List<Specification<Target>> specList) {
Specifications<Target> specs = null;
if (!specList.isEmpty()) {
specs = Specifications.where(specList.get(0));
}
if (specList.size() > 1) {
specList.remove(0);
for (final Specification<Target> s : specList) {
specs = specs.and(s);
}
}
return specs;
return this.targetRepository.count(SpecificationsBuilder.combineWithAnd(specList));
}
/**
@@ -581,9 +562,10 @@ public class TargetManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_TARGET)
public TargetTagAssigmentResult toggleTagAssignment(@NotEmpty final Collection<String> targetIds,
@NotNull final String tagName) {
final TargetTag tag = targetTagRepository.findByNameEquals(tagName);
final List<Target> alreadyAssignedTargets = targetRepository.findByTagNameAndControllerIdIn(tagName, targetIds);
final List<Target> allTargets = targetRepository
final TargetTag tag = this.targetTagRepository.findByNameEquals(tagName);
final List<Target> alreadyAssignedTargets = this.targetRepository.findByTagNameAndControllerIdIn(tagName,
targetIds);
final List<Target> allTargets = this.targetRepository
.findAll(TargetSpecifications.byControllerIdWithStatusAndTagsInJoin(targetIds));
// all are already assigned -> unassign
@@ -592,7 +574,7 @@ public class TargetManagement {
final TargetTagAssigmentResult result = new TargetTagAssigmentResult(0, 0, alreadyAssignedTargets.size(),
Collections.emptyList(), alreadyAssignedTargets, tag);
afterCommit.afterCommit(() -> eventBus.post(new TargetTagAssigmentResultEvent(result)));
this.afterCommit.afterCommit(() -> this.eventBus.post(new TargetTagAssigmentResultEvent(result)));
return result;
}
@@ -600,12 +582,12 @@ public class TargetManagement {
// some or none are assigned -> assign
allTargets.forEach(target -> target.getTags().add(tag));
final TargetTagAssigmentResult result = new TargetTagAssigmentResult(alreadyAssignedTargets.size(),
allTargets.size(), 0, targetRepository.save(allTargets), Collections.emptyList(), tag);
allTargets.size(), 0, this.targetRepository.save(allTargets), Collections.emptyList(), tag);
afterCommit.afterCommit(() -> eventBus.post(new TargetTagAssigmentResultEvent(result)));
this.afterCommit.afterCommit(() -> this.eventBus.post(new TargetTagAssigmentResultEvent(result)));
// no reason to persist the tag
entityManager.detach(tag);
this.entityManager.detach(tag);
return result;
}
@@ -623,16 +605,16 @@ public class TargetManagement {
@NotNull
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_TARGET)
public List<Target> assignTag(@NotEmpty final Collection<String> targetIds, @NotNull final TargetTag tag) {
final List<Target> allTargets = targetRepository
final List<Target> allTargets = this.targetRepository
.findAll(TargetSpecifications.byControllerIdWithStatusAndTagsInJoin(targetIds));
allTargets.forEach(target -> target.getTags().add(tag));
final List<Target> save = targetRepository.save(allTargets);
final List<Target> save = this.targetRepository.save(allTargets);
afterCommit.afterCommit(() -> {
this.afterCommit.afterCommit(() -> {
final TargetTagAssigmentResult assigmentResult = new TargetTagAssigmentResult(0, save.size(), 0, save,
Collections.emptyList(), tag);
eventBus.post(new TargetTagAssigmentResultEvent(assigmentResult));
this.eventBus.post(new TargetTagAssigmentResultEvent(assigmentResult));
});
return save;
@@ -641,11 +623,11 @@ public class TargetManagement {
private List<Target> unAssignTag(@NotEmpty final Collection<Target> targets, @NotNull final TargetTag tag) {
targets.forEach(target -> target.getTags().remove(tag));
final List<Target> save = targetRepository.save(targets);
afterCommit.afterCommit(() -> {
final List<Target> save = this.targetRepository.save(targets);
this.afterCommit.afterCommit(() -> {
final TargetTagAssigmentResult assigmentResult = new TargetTagAssigmentResult(0, 0, save.size(),
Collections.emptyList(), save, tag);
eventBus.post(new TargetTagAssigmentResultEvent(assigmentResult));
this.eventBus.post(new TargetTagAssigmentResultEvent(assigmentResult));
});
return save;
}
@@ -678,7 +660,7 @@ public class TargetManagement {
@Transactional
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_TARGET)
public Target unAssignTag(@NotNull final String controllerID, @NotNull final TargetTag targetTag) {
final List<Target> allTargets = targetRepository
final List<Target> allTargets = this.targetRepository
.findAll(TargetSpecifications.byControllerIdWithStatusAndTagsInJoin(Arrays.asList(controllerID)));
final List<Target> unAssignTag = unAssignTag(allTargets, targetTag);
return unAssignTag.isEmpty() ? null : unAssignTag.get(0);
@@ -729,7 +711,7 @@ public class TargetManagement {
@NotNull final Long orderByDistributionId, final Long filterByDistributionId,
final Collection<TargetUpdateStatus> filterByStatus, final String filterBySearchText,
final Boolean selectTargetWithNoTag, final String... filterByTagNames) {
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
final CriteriaBuilder cb = this.entityManager.getCriteriaBuilder();
final CriteriaQuery<Target> query = cb.createQuery(Target.class);
final Root<Target> targetRoot = query.from(Target.class);
@@ -771,7 +753,7 @@ public class TargetManagement {
// multiselect order) of the array and
// the 2nd contains the selectCase int value.
final int pageSize = pageable.getPageSize();
final List<Target> resultList = entityManager.createQuery(query).setFirstResult(pageable.getOffset())
final List<Target> resultList = this.entityManager.createQuery(query).setFirstResult(pageable.getOffset())
.setMaxResults(pageSize + 1).getResultList();
final boolean hasNext = resultList.size() > pageSize;
return new SliceImpl<>(resultList, pageable, hasNext);
@@ -800,7 +782,7 @@ public class TargetManagement {
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Long countTargetByAssignedDistributionSet(final Long distId) {
return targetRepository.countByAssignedDistributionSetId(distId);
return this.targetRepository.countByAssignedDistributionSetId(distId);
}
/**
@@ -813,7 +795,7 @@ public class TargetManagement {
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Long countTargetByInstalledDistributionSet(final Long distId) {
return targetRepository.countByTargetInfoInstalledDistributionSetId(distId);
return this.targetRepository.countByTargetInfoInstalledDistributionSetId(distId);
}
/**
@@ -824,10 +806,10 @@ public class TargetManagement {
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public List<TargetIdName> findAllTargetIds() {
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
final CriteriaBuilder cb = this.entityManager.getCriteriaBuilder();
final CriteriaQuery<TargetIdName> query = cb.createQuery(TargetIdName.class);
final Root<Target> targetRoot = query.from(Target.class);
return entityManager.createQuery(query.multiselect(targetRoot.get(Target_.id),
return this.entityManager.createQuery(query.multiselect(targetRoot.get(Target_.id),
targetRoot.get(Target_.controllerId), targetRoot.get(Target_.name))).getResultList();
}
@@ -860,7 +842,7 @@ public class TargetManagement {
public List<TargetIdName> findAllTargetIdsByFilters(final PageRequest pageRequest,
final Long filterByDistributionId, final Collection<TargetUpdateStatus> filterByStatus,
final String filterBySearchText, final Boolean selectTargetWithNoTag, final String... filterByTagNames) {
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
final CriteriaBuilder cb = this.entityManager.getCriteriaBuilder();
final CriteriaQuery<Object[]> query = cb.createQuery(Object[].class);
final Root<Target> targetRoot = query.from(Target.class);
List<Object[]> resultList;
@@ -897,7 +879,7 @@ public class TargetManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public List<TargetIdName> findAllTargetIdsByTargetFilterQuery(final PageRequest pageRequest,
@NotNull final TargetFilterQuery targetFilterQuery) {
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
final CriteriaBuilder cb = this.entityManager.getCriteriaBuilder();
final CriteriaQuery<Object[]> query = cb.createQuery(Object[].class);
final Root<Target> targetRoot = query.from(Target.class);
final CriteriaQuery<Object[]> multiselect = query.multiselect(targetRoot.get(Target_.id),
@@ -923,7 +905,7 @@ public class TargetManagement {
@PreDestroy
void destroy() {
eventBus.unregister(this);
this.eventBus.unregister(this);
}
/**
@@ -952,12 +934,12 @@ public class TargetManagement {
public Target createTarget(@NotNull final Target target, @NotNull final TargetUpdateStatus status,
final Long lastTargetQuery, final URI address) {
if (targetRepository.findByControllerId(target.getControllerId()) != null) {
if (this.targetRepository.findByControllerId(target.getControllerId()) != null) {
throw new EntityAlreadyExistsException(target.getControllerId());
}
target.setNew(true);
final Target savedTarget = targetRepository.save(target);
final Target savedTarget = this.targetRepository.save(target);
final TargetInfo targetInfo = savedTarget.getTargetInfo();
targetInfo.setUpdateStatus(status);
if (lastTargetQuery != null) {
@@ -967,7 +949,7 @@ public class TargetManagement {
targetInfo.setAddress(address.toString());
}
targetInfo.setNew(true);
final Target targetToReturn = targetInfoRepository.save(targetInfo).getTarget();
final Target targetToReturn = this.targetInfoRepository.save(targetInfo).getTarget();
targetInfo.setNew(false);
return targetToReturn;
@@ -1010,7 +992,7 @@ public class TargetManagement {
@NotNull
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_CREATE_TARGET)
public List<Target> createTargets(@NotNull final List<Target> targets) {
if (!targets.isEmpty() && targetRepository.countByControllerIdIn(
if (!targets.isEmpty() && this.targetRepository.countByControllerIdIn(
targets.stream().map(target -> target.getControllerId()).collect(Collectors.toList())) > 0) {
throw new EntityAlreadyExistsException();
}
@@ -1043,7 +1025,7 @@ public class TargetManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_CREATE_TARGET)
public List<Target> createTargets(@NotNull final Collection<Target> targets,
@NotNull final TargetUpdateStatus status, final long lastTargetQuery, final URI address) {
if (targetRepository.countByControllerIdIn(
if (this.targetRepository.countByControllerIdIn(
targets.stream().map(target -> target.getControllerId()).collect(Collectors.toList())) > 0) {
throw new EntityAlreadyExistsException();
}
@@ -1065,8 +1047,8 @@ public class TargetManagement {
@NotNull
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public List<Target> findTargetsByTag(@NotNull final String tagName) {
final TargetTag tag = targetTagRepository.findByNameEquals(tagName);
return targetRepository.findByTag(tag);
final TargetTag tag = this.targetTagRepository.findByNameEquals(tagName);
return this.targetRepository.findByTag(tag);
}
/**
@@ -1079,7 +1061,7 @@ public class TargetManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Long countTargetByTargetFilterQuery(@NotNull final TargetFilterQuery targetFilterQuery) {
final Specification<Target> specs = RSQLUtility.parse(targetFilterQuery.getQuery(), TargetFields.class);
return targetRepository.count(specs);
return this.targetRepository.count(specs);
}
/**
@@ -1092,7 +1074,7 @@ public class TargetManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Long countTargetByTargetFilterQuery(@NotNull final String targetFilterQuery) {
final Specification<Target> specs = RSQLUtility.parse(targetFilterQuery, TargetFields.class);
return targetRepository.count(specs);
return this.targetRepository.count(specs);
}
private List<Object[]> getTargetIdNameResultSet(final PageRequest pageRequest, final CriteriaBuilder cb,
@@ -1109,10 +1091,10 @@ public class TargetManagement {
}
}
multiselect.orderBy(orders);
resultList = entityManager.createQuery(multiselect).setFirstResult(pageRequest.getOffset())
resultList = this.entityManager.createQuery(multiselect).setFirstResult(pageRequest.getOffset())
.setMaxResults(pageRequest.getPageSize()).getResultList();
} else {
resultList = entityManager.createQuery(multiselect).getResultList();
resultList = this.entityManager.createQuery(multiselect).getResultList();
}
return resultList;
}

View File

@@ -0,0 +1,46 @@
/**
* Copyright (c) 2015 Bosch Software Innovations GmbH and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.eclipse.hawkbit.repository.specifications;
import java.util.List;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.domain.Specifications;
/**
* Helper class to easily combine {@link Specification} instances.
*
*/
public final class SpecificationsBuilder {
private SpecificationsBuilder() {
}
/**
* Combine all given specification with and. The first specification is the
* where clause.
*
* @param specList
* all specification wich will combine
* @return <null> if the given specification list is empty
*/
public static <T> Specifications<T> combineWithAnd(final List<Specification<T>> specList) {
if (specList.isEmpty()) {
return null;
}
Specifications<T> specs = Specifications.where(specList.get(0));
specList.remove(0);
for (final Specification<T> specification : specList) {
specs = specs.and(specification);
}
return specs;
}
}