Used lambdas to reduce boilerplate code.

Signed-off-by: Kai Zimmermann <kai.zimmermann@bosch-si.com>
This commit is contained in:
Kai Zimmermann
2016-03-27 10:36:55 +02:00
parent 0cc7284f6f
commit c9566e61ce
6 changed files with 112 additions and 342 deletions

View File

@@ -43,7 +43,7 @@ import org.eclipse.hawkbit.repository.model.TargetIdName;
import org.eclipse.hawkbit.repository.model.TargetInfo;
import org.eclipse.hawkbit.repository.model.TargetInfo_;
import org.eclipse.hawkbit.repository.model.TargetTag;
import org.eclipse.hawkbit.repository.model.TargetTagAssigmentResult;
import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult;
import org.eclipse.hawkbit.repository.model.TargetUpdateStatus;
import org.eclipse.hawkbit.repository.model.Target_;
import org.eclipse.hawkbit.repository.rsql.RSQLUtility;
@@ -534,7 +534,7 @@ public class TargetManagement {
@Transactional
@NotNull
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_TARGET)
public TargetTagAssigmentResult toggleTagAssignment(@NotEmpty final List<Target> targets,
public TargetTagAssignmentResult toggleTagAssignment(@NotEmpty final List<Target> targets,
@NotNull final TargetTag tag) {
return toggleTagAssignment(
targets.stream().map(target -> target.getControllerId()).collect(Collectors.toList()), tag.getName());
@@ -556,7 +556,7 @@ public class TargetManagement {
@Transactional
@NotNull
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_TARGET)
public TargetTagAssigmentResult toggleTagAssignment(@NotEmpty final Collection<String> targetIds,
public TargetTagAssignmentResult toggleTagAssignment(@NotEmpty final Collection<String> targetIds,
@NotNull final String tagName) {
final TargetTag tag = targetTagRepository.findByNameEquals(tagName);
final List<Target> alreadyAssignedTargets = targetRepository.findByTagNameAndControllerIdIn(tagName, targetIds);
@@ -566,7 +566,7 @@ public class TargetManagement {
// all are already assigned -> unassign
if (alreadyAssignedTargets.size() == allTargets.size()) {
alreadyAssignedTargets.forEach(target -> target.getTags().remove(tag));
final TargetTagAssigmentResult result = new TargetTagAssigmentResult(0, 0, alreadyAssignedTargets.size(),
final TargetTagAssignmentResult result = new TargetTagAssignmentResult(0, 0, alreadyAssignedTargets.size(),
Collections.emptyList(), alreadyAssignedTargets, tag);
afterCommit.afterCommit(() -> eventBus.post(new TargetTagAssigmentResultEvent(result)));
@@ -576,7 +576,7 @@ public class TargetManagement {
allTargets.removeAll(alreadyAssignedTargets);
// some or none are assigned -> assign
allTargets.forEach(target -> target.getTags().add(tag));
final TargetTagAssigmentResult result = new TargetTagAssigmentResult(alreadyAssignedTargets.size(),
final TargetTagAssignmentResult result = new TargetTagAssignmentResult(alreadyAssignedTargets.size(),
allTargets.size(), 0, targetRepository.save(allTargets), Collections.emptyList(), tag);
afterCommit.afterCommit(() -> eventBus.post(new TargetTagAssigmentResultEvent(result)));
@@ -607,7 +607,7 @@ public class TargetManagement {
final List<Target> save = targetRepository.save(allTargets);
afterCommit.afterCommit(() -> {
final TargetTagAssigmentResult assigmentResult = new TargetTagAssigmentResult(0, save.size(), 0, save,
final TargetTagAssignmentResult assigmentResult = new TargetTagAssignmentResult(0, save.size(), 0, save,
Collections.emptyList(), tag);
eventBus.post(new TargetTagAssigmentResultEvent(assigmentResult));
});
@@ -620,7 +620,7 @@ public class TargetManagement {
final List<Target> save = targetRepository.save(targets);
afterCommit.afterCommit(() -> {
final TargetTagAssigmentResult assigmentResult = new TargetTagAssigmentResult(0, 0, save.size(),
final TargetTagAssignmentResult assigmentResult = new TargetTagAssignmentResult(0, 0, save.size(),
Collections.emptyList(), save, tag);
eventBus.post(new TargetTagAssigmentResultEvent(assigmentResult));
});

View File

@@ -11,13 +11,11 @@ package org.eclipse.hawkbit.repository.specifications;
import java.util.Collection;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Join;
import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.ListJoin;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.persistence.criteria.SetJoin;
import org.eclipse.hawkbit.repository.model.DistributionSet;
@@ -33,9 +31,7 @@ import org.springframework.data.jpa.domain.Specification;
/**
* Specifications class for {@link DistributionSet}s. The class provides Spring
* Data JPQL Specifications
*
*
* Data JPQL Specifications.
*
*/
public final class DistributionSetSpecification {
@@ -53,16 +49,8 @@ public final class DistributionSetSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification<DistributionSet> isDeleted(final Boolean isDeleted) {
final Specification<DistributionSet> spec = new Specification<DistributionSet>() {
@Override
public Predicate toPredicate(final Root<DistributionSet> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = cb.equal(targetRoot.<Boolean> get(DistributionSet_.deleted), isDeleted);
return predicate;
}
};
return (targetRoot, query, cb) -> cb.equal(targetRoot.<Boolean> get(DistributionSet_.deleted), isDeleted);
return spec;
}
/**
@@ -75,16 +63,8 @@ public final class DistributionSetSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification<DistributionSet> isCompleted(final Boolean isCompleted) {
final Specification<DistributionSet> spec = new Specification<DistributionSet>() {
@Override
public Predicate toPredicate(final Root<DistributionSet> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = cb.equal(targetRoot.<Boolean> get(DistributionSet_.complete), isCompleted);
return predicate;
}
};
return (targetRoot, query, cb) -> cb.equal(targetRoot.<Boolean> get(DistributionSet_.complete), isCompleted);
return spec;
}
/**
@@ -96,21 +76,15 @@ public final class DistributionSetSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification<DistributionSet> byId(final Long distid) {
final Specification<DistributionSet> spec = new Specification<DistributionSet>() {
@Override
public Predicate toPredicate(final Root<DistributionSet> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
return (targetRoot, query, cb) -> {
final Predicate predicate = cb.equal(targetRoot.<Long> get(DistributionSet_.id), distid);
targetRoot.fetch(DistributionSet_.modules, JoinType.LEFT);
targetRoot.fetch(DistributionSet_.tags, JoinType.LEFT);
targetRoot.fetch(DistributionSet_.type, JoinType.LEFT);
query.distinct(true);
final Predicate predicate = cb.equal(targetRoot.<Long> get(DistributionSet_.id), distid);
targetRoot.fetch(DistributionSet_.modules, JoinType.LEFT);
targetRoot.fetch(DistributionSet_.tags, JoinType.LEFT);
targetRoot.fetch(DistributionSet_.type, JoinType.LEFT);
query.distinct(true);
return predicate;
}
return predicate;
};
return spec;
}
/**
@@ -122,20 +96,14 @@ public final class DistributionSetSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification<DistributionSet> byIds(final Collection<Long> distids) {
final Specification<DistributionSet> spec = new Specification<DistributionSet>() {
@Override
public Predicate toPredicate(final Root<DistributionSet> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = targetRoot.<Long> get(DistributionSet_.id).in(distids);
targetRoot.fetch(DistributionSet_.modules, JoinType.LEFT);
targetRoot.fetch(DistributionSet_.tags, JoinType.LEFT);
targetRoot.fetch(DistributionSet_.type, JoinType.LEFT);
query.distinct(true);
return predicate;
}
return (targetRoot, query, cb) -> {
final Predicate predicate = targetRoot.<Long> get(DistributionSet_.id).in(distids);
targetRoot.fetch(DistributionSet_.modules, JoinType.LEFT);
targetRoot.fetch(DistributionSet_.tags, JoinType.LEFT);
targetRoot.fetch(DistributionSet_.type, JoinType.LEFT);
query.distinct(true);
return predicate;
};
return spec;
}
/**
@@ -147,21 +115,10 @@ public final class DistributionSetSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification<DistributionSet> likeNameOrDescriptionOrVersion(final String subString) {
final Specification<DistributionSet> spec = new Specification<DistributionSet>() {
@Override
public Predicate toPredicate(final Root<DistributionSet> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = cb
.or(cb.like(cb.lower(targetRoot.<String> get(DistributionSet_.name)), subString.toLowerCase()),
cb.like(cb.lower(targetRoot.<String> get(DistributionSet_.version)),
subString.toLowerCase()),
cb.like(cb.lower(targetRoot.<String> get(DistributionSet_.description)),
subString.toLowerCase()));
return predicate;
}
};
return spec;
return (targetRoot, query, cb) -> cb.or(
cb.like(cb.lower(targetRoot.<String> get(DistributionSet_.name)), subString.toLowerCase()),
cb.like(cb.lower(targetRoot.<String> get(DistributionSet_.version)), subString.toLowerCase()),
cb.like(cb.lower(targetRoot.<String> get(DistributionSet_.description)), subString.toLowerCase()));
}
/**
@@ -176,19 +133,13 @@ public final class DistributionSetSpecification {
*/
public static Specification<DistributionSet> hasTags(final Collection<String> tagNames,
final Boolean selectDSWithNoTag) {
final Specification<DistributionSet> spec = new Specification<DistributionSet>() {
@Override
public Predicate toPredicate(final Root<DistributionSet> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final SetJoin<DistributionSet, DistributionSetTag> tags = targetRoot.join(DistributionSet_.tags,
JoinType.LEFT);
final Predicate predicate = getPredicate(tags, tagNames, selectDSWithNoTag, cb);
query.distinct(true);
return predicate;
}
return (targetRoot, query, cb) -> {
final SetJoin<DistributionSet, DistributionSetTag> tags = targetRoot.join(DistributionSet_.tags,
JoinType.LEFT);
final Predicate predicate = getPredicate(tags, tagNames, selectDSWithNoTag, cb);
query.distinct(true);
return predicate;
};
return spec;
}
private static Predicate getPredicate(final SetJoin<DistributionSet, DistributionSetTag> tags,
@@ -218,20 +169,10 @@ public final class DistributionSetSpecification {
*/
public static Specification<DistributionSet> equalsNameAndVersionIgnoreCase(final String name,
final String version) {
final Specification<DistributionSet> spec = new Specification<DistributionSet>() {
@Override
public Predicate toPredicate(final Root<DistributionSet> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = cb.and(
// formatter:off
cb.equal(cb.lower(targetRoot.<String> get(DistributionSet_.name)), name.toLowerCase()),
cb.equal(cb.lower(targetRoot.<String> get(DistributionSet_.version)), version.toLowerCase()));
// formatter:on
return predicate;
}
};
return (targetRoot, query, cb) -> cb.and(
cb.equal(cb.lower(targetRoot.<String> get(DistributionSet_.name)), name.toLowerCase()),
cb.equal(cb.lower(targetRoot.<String> get(DistributionSet_.version)), version.toLowerCase()));
return spec;
}
/**
@@ -243,16 +184,8 @@ public final class DistributionSetSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification<DistributionSet> byType(final DistributionSetType type) {
final Specification<DistributionSet> spec = new Specification<DistributionSet>() {
@Override
public Predicate toPredicate(final Root<DistributionSet> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = cb.equal(targetRoot.<DistributionSetType> get(DistributionSet_.type), type);
return predicate;
}
};
return (targetRoot, query, cb) -> cb.equal(targetRoot.<DistributionSetType> get(DistributionSet_.type), type);
return spec;
}
/**
@@ -263,18 +196,12 @@ public final class DistributionSetSpecification {
* installed to the given targetId
*/
public static Specification<DistributionSet> installedTarget(final String installedTargetId) {
final Specification<DistributionSet> spec = new Specification<DistributionSet>() {
@Override
public Predicate toPredicate(final Root<DistributionSet> dsRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final ListJoin<DistributionSet, TargetInfo> installedTargetJoin = dsRoot
.join(DistributionSet_.installedAtTargets, JoinType.INNER);
final Join<TargetInfo, Target> targetJoin = installedTargetJoin.join(TargetInfo_.target);
return cb.equal(targetJoin.get(Target_.controllerId), installedTargetId);
}
return (dsRoot, query, cb) -> {
final ListJoin<DistributionSet, TargetInfo> installedTargetJoin = dsRoot
.join(DistributionSet_.installedAtTargets, JoinType.INNER);
final Join<TargetInfo, Target> targetJoin = installedTargetJoin.join(TargetInfo_.target);
return cb.equal(targetJoin.get(Target_.controllerId), installedTargetId);
};
return spec;
}
/**
@@ -285,16 +212,11 @@ public final class DistributionSetSpecification {
* assigned to the given targetId
*/
public static Specification<DistributionSet> assignedTarget(final String assignedTargetId) {
final Specification<DistributionSet> spec = new Specification<DistributionSet>() {
@Override
public Predicate toPredicate(final Root<DistributionSet> dsRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final ListJoin<DistributionSet, Target> assignedTargetJoin = dsRoot
.join(DistributionSet_.assignedToTargets, JoinType.INNER);
return cb.equal(assignedTargetJoin.get(Target_.controllerId), assignedTargetId);
}
return (dsRoot, query, cb) -> {
final ListJoin<DistributionSet, Target> assignedTargetJoin = dsRoot.join(DistributionSet_.assignedToTargets,
JoinType.INNER);
return cb.equal(assignedTargetJoin.get(Target_.controllerId), assignedTargetId);
};
return spec;
}
}

View File

@@ -8,22 +8,14 @@
*/
package org.eclipse.hawkbit.repository.specifications;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.DistributionSetType;
import org.eclipse.hawkbit.repository.model.DistributionSetType_;
import org.springframework.data.jpa.domain.Specification;
/**
*
*
*
*
*
* Specifications class for {@link DistributionSetType}s. The class provides
* Spring Data JPQL Specifications.
*/
public final class DistributionSetTypeSpecification {
private DistributionSetTypeSpecification() {
@@ -40,16 +32,7 @@ public final class DistributionSetTypeSpecification {
* @return the {@link DistributionSetType} {@link Specification}
*/
public static Specification<DistributionSetType> isDeleted(final Boolean isDeleted) {
final Specification<DistributionSetType> spec = new Specification<DistributionSetType>() {
@Override
public Predicate toPredicate(final Root<DistributionSetType> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = cb.equal(targetRoot.<Boolean> get(DistributionSetType_.deleted), isDeleted);
return predicate;
}
};
return spec;
return (targetRoot, query, cb) -> cb.equal(targetRoot.<Boolean> get(DistributionSetType_.deleted), isDeleted);
}
/**
@@ -62,16 +45,7 @@ public final class DistributionSetTypeSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification<DistributionSetType> byId(final Long distid) {
final Specification<DistributionSetType> spec = new Specification<DistributionSetType>() {
@Override
public Predicate toPredicate(final Root<DistributionSetType> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = cb.equal(targetRoot.<Long> get(DistributionSetType_.id), distid);
return predicate;
}
};
return spec;
return (targetRoot, query, cb) -> cb.equal(targetRoot.<Long> get(DistributionSetType_.id), distid);
}
/**
@@ -84,16 +58,7 @@ public final class DistributionSetTypeSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification<DistributionSetType> byName(final String name) {
final Specification<DistributionSetType> spec = new Specification<DistributionSetType>() {
@Override
public Predicate toPredicate(final Root<DistributionSetType> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = cb.equal(targetRoot.<String> get(DistributionSetType_.name), name);
return predicate;
}
};
return spec;
return (targetRoot, query, cb) -> cb.equal(targetRoot.<String> get(DistributionSetType_.name), name);
}
/**
@@ -106,16 +71,7 @@ public final class DistributionSetTypeSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification<DistributionSetType> byKey(final String key) {
final Specification<DistributionSetType> spec = new Specification<DistributionSetType>() {
@Override
public Predicate toPredicate(final Root<DistributionSetType> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = cb.equal(targetRoot.<String> get(DistributionSetType_.key), key);
return predicate;
}
};
return spec;
return (targetRoot, query, cb) -> cb.equal(targetRoot.<String> get(DistributionSetType_.key), key);
}
}

View File

@@ -8,10 +8,7 @@
*/
package org.eclipse.hawkbit.repository.specifications;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.eclipse.hawkbit.repository.model.SoftwareModule;
import org.eclipse.hawkbit.repository.model.SoftwareModuleType;
@@ -22,8 +19,6 @@ import org.springframework.data.jpa.domain.Specification;
* Specifications class for {@link SoftwareModule}s. The class provides Spring
* Data JPQL Specifications
*
*
*
*/
public final class SoftwareModuleSpecification {
private SoftwareModuleSpecification() {
@@ -39,38 +34,21 @@ public final class SoftwareModuleSpecification {
* @return the {@link SoftwareModule} {@link Specification}
*/
public static Specification<SoftwareModule> byId(final Long moduleId) {
final Specification<SoftwareModule> spec = new Specification<SoftwareModule>() {
@Override
public Predicate toPredicate(final Root<SoftwareModule> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = cb.equal(targetRoot.<Long> get(SoftwareModule_.id), moduleId);
targetRoot.fetch(SoftwareModule_.type);
return predicate;
}
return (targetRoot, query, cb) -> {
final Predicate predicate = cb.equal(targetRoot.<Long> get(SoftwareModule_.id), moduleId);
targetRoot.fetch(SoftwareModule_.type);
return predicate;
};
return spec;
}
/**
* {@link Specification} for retrieving {@link SoftwareModule}s by its
* DELETED attribute.
* {@link Specification} for retrieving {@link SoftwareModule}s where its
* DELETED attribute is false.
*
* @param isDeleted
* TRUE/FALSE are compared to the attribute DELETED. If NULL the
* attribute is ignored
* @return the {@link SoftwareModule} {@link Specification}
*/
public static Specification<SoftwareModule> isDeletedFalse() {
final Specification<SoftwareModule> spec = new Specification<SoftwareModule>() {
@Override
public Predicate toPredicate(final Root<SoftwareModule> swRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = cb.equal(swRoot.<Boolean> get(SoftwareModule_.deleted), Boolean.FALSE);
return predicate;
}
};
return spec;
return (swRoot, query, cb) -> cb.equal(swRoot.<Boolean> get(SoftwareModule_.deleted), Boolean.FALSE);
}
/**
@@ -82,18 +60,9 @@ public final class SoftwareModuleSpecification {
* @return the {@link SoftwareModule} {@link Specification}
*/
public static Specification<SoftwareModule> likeNameOrVersion(final String subString) {
final Specification<SoftwareModule> spec = new Specification<SoftwareModule>() {
@Override
public Predicate toPredicate(final Root<SoftwareModule> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = cb.or(
cb.like(cb.lower(targetRoot.<String> get(SoftwareModule_.name)), subString.toLowerCase()),
cb.like(cb.lower(targetRoot.<String> get(SoftwareModule_.version)), subString.toLowerCase()));
return predicate;
}
};
return spec;
return (targetRoot, query, cb) -> cb.or(
cb.like(cb.lower(targetRoot.<String> get(SoftwareModule_.name)), subString.toLowerCase()),
cb.like(cb.lower(targetRoot.<String> get(SoftwareModule_.version)), subString.toLowerCase()));
}
/**
@@ -105,16 +74,7 @@ public final class SoftwareModuleSpecification {
* @return the {@link SoftwareModule} {@link Specification}
*/
public static Specification<SoftwareModule> equalType(final SoftwareModuleType type) {
final Specification<SoftwareModule> spec = new Specification<SoftwareModule>() {
@Override
public Predicate toPredicate(final Root<SoftwareModule> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = cb.equal(targetRoot.<SoftwareModuleType> get(SoftwareModule_.type), type);
return predicate;
}
};
return spec;
return (targetRoot, query, cb) -> cb.equal(targetRoot.<SoftwareModuleType> get(SoftwareModule_.type), type);
}
}

View File

@@ -8,17 +8,13 @@
*/
package org.eclipse.hawkbit.repository.specifications;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
import org.eclipse.hawkbit.repository.model.TargetFilterQuery_;
import org.springframework.data.jpa.domain.Specification;
/**
*
* Specifications class for {@link TargetFilterQuery}s. The class provides
* Spring Data JPQL Specifications.
*
*/
public class TargetFilterQuerySpecification {
@@ -27,16 +23,9 @@ public class TargetFilterQuerySpecification {
}
public static Specification<TargetFilterQuery> likeName(final String searchText) {
final Specification<TargetFilterQuery> spec = new Specification<TargetFilterQuery>() {
@Override
public Predicate toPredicate(final Root<TargetFilterQuery> targetFilterQueryRoot,
final CriteriaQuery<?> query, final CriteriaBuilder cb) {
final String searchTextToLower = searchText.toLowerCase();
final Predicate predicate = cb.like(cb.lower(targetFilterQueryRoot.get(TargetFilterQuery_.name)),
searchTextToLower);
return predicate;
}
return (targetFilterQueryRoot, query, cb) -> {
final String searchTextToLower = searchText.toLowerCase();
return cb.like(cb.lower(targetFilterQueryRoot.get(TargetFilterQuery_.name)), searchTextToLower);
};
return spec;
}
}

View File

@@ -12,7 +12,6 @@ import java.util.Collection;
import java.util.List;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Join;
import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.Path;
@@ -36,8 +35,6 @@ import org.springframework.data.jpa.domain.Specification;
* Specifications class for {@link Target}s. The class provides Spring Data JPQL
* Specifications.
*
*
*
*/
public final class TargetSpecifications {
private TargetSpecifications() {
@@ -54,18 +51,12 @@ public final class TargetSpecifications {
* @return the {@link Target} {@link Specification}
*/
public static Specification<Target> byControllerIdWithStatusAndTagsInJoin(final Collection<String> controllerIDs) {
final Specification<Target> spec = new Specification<Target>() {
@Override
public Predicate toPredicate(final Root<Target> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = targetRoot.get(Target_.controllerId).in(controllerIDs);
targetRoot.fetch(Target_.tags, JoinType.LEFT);
query.distinct(true);
return predicate;
}
return (targetRoot, query, cb) -> {
final Predicate predicate = targetRoot.get(Target_.controllerId).in(controllerIDs);
targetRoot.fetch(Target_.tags, JoinType.LEFT);
query.distinct(true);
return predicate;
};
return spec;
}
/**
@@ -79,18 +70,12 @@ public final class TargetSpecifications {
*/
public static Specification<Target> byControllerIdWithStatusAndAssignedInJoin(
final Collection<String> controllerIDs) {
final Specification<Target> spec = new Specification<Target>() {
@Override
public Predicate toPredicate(final Root<Target> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
return (targetRoot, query, cb) -> {
final Predicate predicate = targetRoot.get(Target_.controllerId).in(controllerIDs);
targetRoot.fetch(Target_.assignedDistributionSet);
return predicate;
}
final Predicate predicate = targetRoot.get(Target_.controllerId).in(controllerIDs);
targetRoot.fetch(Target_.assignedDistributionSet);
return predicate;
};
return spec;
}
/**
@@ -106,24 +91,18 @@ public final class TargetSpecifications {
*/
public static Specification<Target> hasTargetUpdateStatus(final Collection<TargetUpdateStatus> updateStatus,
final boolean fetch) {
final Specification<Target> spec = new Specification<Target>() {
@Override
public Predicate toPredicate(final Root<Target> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
if (!query.getResultType().isAssignableFrom(Long.class)) {
if (fetch) {
targetRoot.fetch(Target_.targetInfo);
} else {
targetRoot.join(Target_.targetInfo);
}
return targetRoot.get(Target_.targetInfo).get(TargetInfo_.updateStatus).in(updateStatus);
return (targetRoot, query, cb) -> {
if (!query.getResultType().isAssignableFrom(Long.class)) {
if (fetch) {
targetRoot.fetch(Target_.targetInfo);
} else {
targetRoot.join(Target_.targetInfo);
}
final Join<Target, TargetInfo> targetInfoJoin = targetRoot.join(Target_.targetInfo);
return targetInfoJoin.get(TargetInfo_.updateStatus).in(updateStatus);
return targetRoot.get(Target_.targetInfo).get(TargetInfo_.updateStatus).in(updateStatus);
}
final Join<Target, TargetInfo> targetInfoJoin = targetRoot.join(Target_.targetInfo);
return targetInfoJoin.get(TargetInfo_.updateStatus).in(updateStatus);
};
return spec;
}
/**
@@ -135,18 +114,11 @@ public final class TargetSpecifications {
* @return the {@link Target} {@link Specification}
*/
public static Specification<Target> likeNameOrDescriptionOrIp(final String searchText) {
final Specification<Target> spec = new Specification<Target>() {
@Override
public Predicate toPredicate(final Root<Target> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final String searchTextToLower = searchText.toLowerCase();
final Predicate predicate = cb.or(cb.like(cb.lower(targetRoot.get(Target_.name)), searchTextToLower),
cb.like(cb.lower(targetRoot.get(Target_.description)), searchTextToLower));
return predicate;
}
return (targetRoot, query, cb) -> {
final String searchTextToLower = searchText.toLowerCase();
return cb.or(cb.like(cb.lower(targetRoot.get(Target_.name)), searchTextToLower),
cb.like(cb.lower(targetRoot.get(Target_.description)), searchTextToLower));
};
return spec;
}
/**
@@ -158,21 +130,14 @@ public final class TargetSpecifications {
* @return the {@link Target} {@link Specification}
*/
public static Specification<Target> hasInstalledOrAssignedDistributionSet(@NotNull final Long distributionId) {
final Specification<Target> spec = new Specification<Target>() {
@Override
public Predicate toPredicate(final Root<Target> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Join<Target, TargetInfo> targetInfoJoin = targetRoot.join(Target_.targetInfo);
final Predicate predicate = cb.or(
cb.equal(targetInfoJoin.get(TargetInfo_.installedDistributionSet).get(DistributionSet_.id),
distributionId),
cb.equal(targetRoot.<DistributionSet> get(Target_.assignedDistributionSet)
.get(DistributionSet_.id), distributionId));
return predicate;
}
return (targetRoot, query, cb) -> {
final Join<Target, TargetInfo> targetInfoJoin = targetRoot.join(Target_.targetInfo);
return cb.or(
cb.equal(targetInfoJoin.get(TargetInfo_.installedDistributionSet).get(DistributionSet_.id),
distributionId),
cb.equal(targetRoot.<DistributionSet> get(Target_.assignedDistributionSet).get(DistributionSet_.id),
distributionId));
};
return spec;
}
/**
@@ -187,18 +152,11 @@ public final class TargetSpecifications {
*/
public static Specification<Target> hasControllerIdAndAssignedDistributionSetIdNot(final List<String> tIDs,
@NotNull final Long distributionId) {
final Specification<Target> spec = new Specification<Target>() {
@Override
public Predicate toPredicate(final Root<Target> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = cb.and(targetRoot.get(Target_.controllerId).in(tIDs),
return (targetRoot, query, cb) -> cb
.and(targetRoot.get(Target_.controllerId).in(tIDs),
cb.or(cb.notEqual(targetRoot.<DistributionSet> get(Target_.assignedDistributionSet)
.get(DistributionSet_.id), distributionId),
cb.isNull(targetRoot.<DistributionSet> get(Target_.assignedDistributionSet))));
return predicate;
}
};
return spec;
cb.isNull(targetRoot.<DistributionSet> get(Target_.assignedDistributionSet))));
}
/**
@@ -212,16 +170,11 @@ public final class TargetSpecifications {
* @return the {@link Target} {@link Specification}
*/
public static Specification<Target> hasTags(final String[] tagNames, final Boolean selectTargetWithNoTag) {
final Specification<Target> spec = new Specification<Target>() {
@Override
public Predicate toPredicate(final Root<Target> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Predicate predicate = getPredicate(targetRoot, cb, selectTargetWithNoTag, tagNames);
query.distinct(true);
return predicate;
}
return (targetRoot, query, cb) -> {
final Predicate predicate = getPredicate(targetRoot, cb, selectTargetWithNoTag, tagNames);
query.distinct(true);
return predicate;
};
return spec;
}
private static Predicate getPredicate(final Root<Target> targetRoot, final CriteriaBuilder cb,
@@ -248,15 +201,9 @@ public final class TargetSpecifications {
* @return the {@link Target} {@link Specification}
*/
public static Specification<Target> hasAssignedDistributionSet(final Long distributionSetId) {
return new Specification<Target>() {
@Override
public Predicate toPredicate(final Root<Target> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
return cb.equal(
targetRoot.<DistributionSet> get(Target_.assignedDistributionSet).get(DistributionSet_.id),
distributionSetId);
}
};
return (targetRoot, query, cb) -> cb.equal(
targetRoot.<DistributionSet> get(Target_.assignedDistributionSet).get(DistributionSet_.id),
distributionSetId);
}
/**
@@ -268,14 +215,10 @@ public final class TargetSpecifications {
* @return the {@link Target} {@link Specification}
*/
public static Specification<Target> hasInstalledDistributionSet(final Long distributionSetId) {
return new Specification<Target>() {
@Override
public Predicate toPredicate(final Root<Target> targetRoot, final CriteriaQuery<?> query,
final CriteriaBuilder cb) {
final Join<Target, TargetInfo> targetInfoJoin = targetRoot.join(Target_.targetInfo);
return cb.equal(targetInfoJoin.get(TargetInfo_.installedDistributionSet).get(DistributionSet_.id),
distributionSetId);
}
return (targetRoot, query, cb) -> {
final Join<Target, TargetInfo> targetInfoJoin = targetRoot.join(Target_.targetInfo);
return cb.equal(targetInfoJoin.get(TargetInfo_.installedDistributionSet).get(DistributionSet_.id),
distributionSetId);
};
}
}