Refactor TargetIdName, DistributionSetIdName, SoftwareModuleIdName entities (#407)
* - Move TargetIdName, DistributionSetIdName, SoftwareModuleIdName to ui entity package - Refactor tables. Use the entity id instead of the *idname entity - Remove expensive getEntity() calls from remote events - Fix some NPE, if entity is deleted from another session Signed-off-by: SirWayne <dennis.melzer@bosch-si.com> * Add TagretFilter Query client resource Signed-off-by: SirWayne <dennis.melzer@bosch-si.com> * Fix methode signature for feign Signed-off-by: SirWayne <dennis.melzer@bosch-si.com> * fix sonar issue after merge Signed-off-by: SirWayne <dennis.melzer@bosch-si.com> * remove ds set id name after merging from rollout view Signed-off-by: SirWayne <dennis.melzer@bosch-si.com>
This commit is contained in:
committed by
Kai Zimmermann
parent
59f218e841
commit
9980fd5619
@@ -126,8 +126,8 @@ public interface DistributionSetManagement {
|
||||
* @return the new persisted {@link DistributionSet}
|
||||
*
|
||||
* @throws EntityNotFoundException
|
||||
* if a provided linked entity does not exists
|
||||
* ({@link DistributionSet#getModules()} or
|
||||
* if a provided linked entity does not exists (
|
||||
* {@link DistributionSet#getModules()} or
|
||||
* {@link DistributionSet#getType()})
|
||||
* @throws DistributionSetCreationFailedMissingMandatoryModuleException
|
||||
* is {@link DistributionSet} does not contain mandatory
|
||||
@@ -163,8 +163,8 @@ public interface DistributionSetManagement {
|
||||
* to be created
|
||||
* @return the new {@link DistributionSet}s
|
||||
* @throws EntityNotFoundException
|
||||
* if a provided linked entity does not exists
|
||||
* ({@link DistributionSet#getModules()} or
|
||||
* if a provided linked entity does not exists (
|
||||
* {@link DistributionSet#getModules()} or
|
||||
* {@link DistributionSet#getType()})
|
||||
* @throws DistributionSetCreationFailedMissingMandatoryModuleException
|
||||
* is {@link DistributionSet} does not contain mandatory
|
||||
@@ -181,8 +181,8 @@ public interface DistributionSetManagement {
|
||||
* @return created entity
|
||||
*
|
||||
* @throws EntityNotFoundException
|
||||
* if a provided linked entity does not exists
|
||||
* ({@link DistributionSetType#getMandatoryModuleTypes()} or
|
||||
* if a provided linked entity does not exists (
|
||||
* {@link DistributionSetType#getMandatoryModuleTypes()} or
|
||||
* {@link DistributionSetType#getOptionalModuleTypes()}
|
||||
*/
|
||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_CREATE_REPOSITORY)
|
||||
@@ -196,8 +196,8 @@ public interface DistributionSetManagement {
|
||||
* @return created entity
|
||||
*
|
||||
* @throws EntityNotFoundException
|
||||
* if a provided linked entity does not exists
|
||||
* ({@link DistributionSetType#getMandatoryModuleTypes()} or
|
||||
* if a provided linked entity does not exists (
|
||||
* {@link DistributionSetType#getMandatoryModuleTypes()} or
|
||||
* {@link DistributionSetType#getOptionalModuleTypes()}
|
||||
*/
|
||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_CREATE_REPOSITORY)
|
||||
@@ -426,7 +426,7 @@ public interface DistributionSetManagement {
|
||||
* @param distributionSetFilterBuilder
|
||||
* has details of filters to be applied
|
||||
* @param assignedOrInstalled
|
||||
* the controllerID of the Target to be ordered by
|
||||
* the id of the Target to be ordered by
|
||||
* @return {@link DistributionSet}s
|
||||
*/
|
||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY)
|
||||
@@ -707,4 +707,14 @@ public interface DistributionSetManagement {
|
||||
DistributionSetType assignMandatorySoftwareModuleTypes(@NotNull Long dsTypeId,
|
||||
@NotEmpty Collection<Long> softwareModuleTypes);
|
||||
|
||||
/**
|
||||
* Retrieves all distribution set without details.
|
||||
*
|
||||
* @param ids
|
||||
* the ids to for
|
||||
* @return the found {@link DistributionSet}s
|
||||
*/
|
||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY)
|
||||
List<DistributionSet> findDistributionSetAllById(@NotNull Collection<Long> ids);
|
||||
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ import org.eclipse.hawkbit.repository.model.RolloutGroup;
|
||||
import org.eclipse.hawkbit.repository.model.Tag;
|
||||
import org.eclipse.hawkbit.repository.model.Target;
|
||||
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
|
||||
import org.eclipse.hawkbit.repository.model.TargetIdName;
|
||||
import org.eclipse.hawkbit.repository.model.TargetInfo;
|
||||
import org.eclipse.hawkbit.repository.model.TargetTag;
|
||||
import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult;
|
||||
@@ -179,7 +178,7 @@ public interface TargetManagement {
|
||||
*/
|
||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_DELETE_TARGET)
|
||||
void deleteTargets(@NotEmpty Collection<Long> targetIDs);
|
||||
|
||||
|
||||
/**
|
||||
* Deletes target with the given IDs.
|
||||
*
|
||||
@@ -192,52 +191,6 @@ public interface TargetManagement {
|
||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_DELETE_TARGET)
|
||||
void deleteTarget(@NotEmpty String controllerID);
|
||||
|
||||
/**
|
||||
* Finds all targets for all the given parameters but returns not the full
|
||||
* target but {@link TargetIdName}.
|
||||
*
|
||||
* @param pageRequest
|
||||
* the pageRequest to enhance the query for paging and sorting
|
||||
* @param filterByStatus
|
||||
* find targets having this {@link TargetUpdateStatus}s. Set to
|
||||
* <code>null</code> in case this is not required.
|
||||
* @param overdueState
|
||||
* find targets that are overdue (targets that did not respond
|
||||
* during the configured intervals: poll_itvl + overdue_itvl).
|
||||
* @param filterBySearchText
|
||||
* to find targets having the text anywhere in name or
|
||||
* description. Set <code>null</code> in case this is not
|
||||
* required.
|
||||
* @param installedOrAssignedDistributionSetId
|
||||
* to find targets having the {@link DistributionSet} as
|
||||
* installed or assigned. Set to <code>null</code> in case this
|
||||
* is not required.
|
||||
* @param filterByTagNames
|
||||
* to find targets which are having any one in this tag names.
|
||||
* Set <code>null</code> in case this is not required.
|
||||
* @param selectTargetWithNoTag
|
||||
* flag to select targets with no tag assigned
|
||||
*
|
||||
* @return the found {@link TargetIdName}s
|
||||
*/
|
||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||
List<TargetIdName> findAllTargetIdsByFilters(@NotNull Pageable pageRequest,
|
||||
Collection<TargetUpdateStatus> filterByStatus, Boolean overdueState, String filterBySearchText,
|
||||
Long installedOrAssignedDistributionSetId, Boolean selectTargetWithNoTag, String... filterByTagNames);
|
||||
|
||||
/**
|
||||
* Finds all targets for all the given parameter {@link TargetFilterQuery}
|
||||
* and returns not the full target but {@link TargetIdName}.
|
||||
*
|
||||
* @param pageRequest
|
||||
* the pageRequest to enhance the query for paging and sorting
|
||||
* @param rsqlParam
|
||||
* filter definition in RSQL syntax
|
||||
* @return the found {@link TargetIdName}s
|
||||
*/
|
||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||
List<TargetIdName> findAllTargetIdsByTargetFilterQuery(@NotNull Pageable pageRequest, @NotNull String rsqlParam);
|
||||
|
||||
/**
|
||||
* Finds all targets for all the given parameter {@link TargetFilterQuery}
|
||||
* and that don't have the specified distribution set in their action
|
||||
@@ -351,9 +304,9 @@ public interface TargetManagement {
|
||||
@NotNull Pageable pageReq);
|
||||
|
||||
/**
|
||||
* Find {@link Target} based on given ID returns found Target without
|
||||
* details, i.e. NO {@link Target#getTags()} and {@link Target#getActions()}
|
||||
* possible.
|
||||
* Find {@link Target}s based a given IDs. The returned target will not
|
||||
* contain details (e.g {@link Target#getTags()} and
|
||||
* {@link Target#getActions()})
|
||||
*
|
||||
* @param controllerIDs
|
||||
* to look for.
|
||||
@@ -363,9 +316,9 @@ public interface TargetManagement {
|
||||
List<Target> findTargetByControllerID(@NotEmpty Collection<String> controllerIDs);
|
||||
|
||||
/**
|
||||
* Find {@link Target} based on given ID returns found Target without
|
||||
* details, i.e. NO {@link Target#getTags()} and {@link Target#getActions()}
|
||||
* possible.
|
||||
* Find a {@link Target} based a given ID. The returned target will not
|
||||
* contain details (e.g {@link Target#getTags()} and
|
||||
* {@link Target#getActions()})
|
||||
*
|
||||
* @param controllerId
|
||||
* to look for.
|
||||
@@ -639,4 +592,27 @@ public interface TargetManagement {
|
||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_TARGET + SpringEvalExpressions.HAS_AUTH_OR
|
||||
+ SpringEvalExpressions.IS_CONTROLLER)
|
||||
Target updateTarget(@NotNull TargetUpdate update);
|
||||
|
||||
/**
|
||||
* Find a {@link Target} based a given ID. The returned target will not
|
||||
* contain details (e.g {@link Target#getTags()} and
|
||||
* {@link Target#getActions()})
|
||||
*
|
||||
* @param id
|
||||
* to look for
|
||||
* @return {@link Target} or <code>null</code> if it does not exist
|
||||
*/
|
||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||
Target findTargetById(Long id);
|
||||
|
||||
/**
|
||||
* Retrieves all targets without details, i.e. NO {@link Target#getTags()}
|
||||
* and {@link Target#getActions()} possible
|
||||
*
|
||||
* @param ids
|
||||
* the ids to for
|
||||
* @return the found {@link Target}s
|
||||
*/
|
||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||
List<Target> findTargetAllById(@NotNull Collection<Long> ids);
|
||||
}
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
/**
|
||||
* 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.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* To hold software module name and Id.
|
||||
*
|
||||
*/
|
||||
public class SoftwareModuleIdName implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -6317413180936148514L;
|
||||
|
||||
private final Long id;
|
||||
private final String name;
|
||||
|
||||
/**
|
||||
* @param id
|
||||
* if the {@link SoftwareModule}
|
||||
* @param name
|
||||
* of the {@link SoftwareModule}
|
||||
*/
|
||||
public SoftwareModuleIdName(final Long id, final String name) {
|
||||
super();
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {// NOSONAR - as this is generated
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + (id == null ? 0 : id.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object obj) {// NOSONAR - as this is generated
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (obj == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
final SoftwareModuleIdName other = (SoftwareModuleIdName) obj;
|
||||
if (id == null) {
|
||||
if (other.id != null) {
|
||||
return false;
|
||||
}
|
||||
} else if (!id.equals(other.id)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -41,13 +41,6 @@ public interface Target extends NamedEntity {
|
||||
*/
|
||||
List<Action> getActions();
|
||||
|
||||
/**
|
||||
* @return {@link TargetIdName} view of the {@link Target}.
|
||||
*/
|
||||
default TargetIdName getTargetIdName() {
|
||||
return new TargetIdName(getId(), getControllerId(), getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the targetInfo object
|
||||
*/
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
/**
|
||||
* 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.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* ID class of the {@link Target} which contains the
|
||||
* {@link Target#getControllerId()} and the {@link Target#getName()} in one
|
||||
* object. Often it's necessary to remember the IDs of the {@link Target} and
|
||||
* the resolve for e.g. the UI the name of the target, this is very costly
|
||||
* operation, so it's much better if the ID and the name of the {@link Target}
|
||||
* is already in memory available.
|
||||
*/
|
||||
public class TargetIdName implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final long targetId;
|
||||
private String controllerId;
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* @param targetId
|
||||
* the ID of the target.
|
||||
* @param controllerId
|
||||
* the {@link Target#getControllerId()}
|
||||
* @param name
|
||||
* the {@link Target#getName()}
|
||||
*/
|
||||
public TargetIdName(final long targetId, final String controllerId, final String name) {
|
||||
this.targetId = targetId;
|
||||
this.controllerId = controllerId;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getControllerId() {
|
||||
return controllerId;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setControllerId(final String id) {
|
||||
controllerId = id;
|
||||
}
|
||||
|
||||
public void setName(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public long getTargetId() {
|
||||
return targetId;
|
||||
}
|
||||
|
||||
@Override
|
||||
// Exception squid:S864 - generated code
|
||||
@SuppressWarnings("squid:S864")
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + (int) (targetId ^ targetId >>> 32);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (obj == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
final TargetIdName other = (TargetIdName) obj;
|
||||
return targetId == other.targetId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
// only return the ID because it's used in vaadin for setting the item
|
||||
// id in the dom
|
||||
return controllerId;
|
||||
}
|
||||
}
|
||||
@@ -131,4 +131,9 @@ public interface DistributionSetRepository
|
||||
* @return number of found {@link DistributionSet}s
|
||||
*/
|
||||
long countByNameAndVersion(String name, String version);
|
||||
|
||||
@Override
|
||||
// Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=349477
|
||||
@Query("SELECT d FROM JpaDistributionSet d WHERE d.id IN ?1")
|
||||
List<JpaDistributionSet> findAll(Iterable<Long> ids);
|
||||
}
|
||||
|
||||
@@ -896,4 +896,9 @@ public class JpaDistributionSetManagement implements DistributionSetManagement {
|
||||
return distributionSetRepository.countByTypeId(typeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DistributionSet> findDistributionSetAllById(final Collection<Long> ids) {
|
||||
return Collections.unmodifiableList(distributionSetRepository.findAll(ids));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ import javax.persistence.criteria.CriteriaQuery;
|
||||
import javax.persistence.criteria.Expression;
|
||||
import javax.persistence.criteria.Join;
|
||||
import javax.persistence.criteria.JoinType;
|
||||
import javax.persistence.criteria.Order;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
import javax.validation.constraints.NotNull;
|
||||
@@ -51,7 +50,6 @@ import org.eclipse.hawkbit.repository.jpa.specifications.SpecificationsBuilder;
|
||||
import org.eclipse.hawkbit.repository.jpa.specifications.TargetSpecifications;
|
||||
import org.eclipse.hawkbit.repository.model.Target;
|
||||
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
|
||||
import org.eclipse.hawkbit.repository.model.TargetIdName;
|
||||
import org.eclipse.hawkbit.repository.model.TargetTag;
|
||||
import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult;
|
||||
import org.eclipse.hawkbit.repository.model.TargetUpdateStatus;
|
||||
@@ -65,8 +63,6 @@ import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.domain.Slice;
|
||||
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.repository.Modifying;
|
||||
import org.springframework.transaction.annotation.Isolation;
|
||||
@@ -508,70 +504,6 @@ public class JpaTargetManagement implements TargetManagement {
|
||||
return targetRepository.countByTargetInfoInstalledDistributionSetId(distId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TargetIdName> findAllTargetIdsByFilters(final Pageable pageRequest,
|
||||
final Collection<TargetUpdateStatus> filterByStatus, final Boolean overdueState,
|
||||
final String filterBySearchText, final Long installedOrAssignedDistributionSetId,
|
||||
final Boolean selectTargetWithNoTag, final String... filterByTagNames) {
|
||||
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
|
||||
final CriteriaQuery<Object[]> query = cb.createQuery(Object[].class);
|
||||
final Root<JpaTarget> targetRoot = query.from(JpaTarget.class);
|
||||
List<Object[]> resultList;
|
||||
|
||||
String sortProperty = JpaTarget_.id.getName();
|
||||
if (pageRequest.getSort() != null && pageRequest.getSort().iterator().hasNext()) {
|
||||
sortProperty = pageRequest.getSort().iterator().next().getProperty();
|
||||
}
|
||||
|
||||
final CriteriaQuery<Object[]> multiselect = query.multiselect(targetRoot.get(JpaTarget_.id),
|
||||
targetRoot.get(JpaTarget_.controllerId), targetRoot.get(JpaTarget_.name), targetRoot.get(sortProperty));
|
||||
|
||||
final Predicate[] specificationsForMultiSelect = specificationsToPredicate(
|
||||
buildSpecificationList(new FilterParams(installedOrAssignedDistributionSetId, filterByStatus,
|
||||
overdueState, filterBySearchText, selectTargetWithNoTag, filterByTagNames), false),
|
||||
targetRoot, multiselect, cb);
|
||||
|
||||
// if we have some predicates then add it to the where clause of the
|
||||
// multiselect
|
||||
if (specificationsForMultiSelect.length > 0) {
|
||||
multiselect.where(specificationsForMultiSelect);
|
||||
}
|
||||
|
||||
resultList = getTargetIdNameResultSet(pageRequest, cb, targetRoot, multiselect);
|
||||
return resultList.parallelStream().map(o -> new TargetIdName((long) o[0], o[1].toString(), o[2].toString()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TargetIdName> findAllTargetIdsByTargetFilterQuery(final Pageable pageRequest,
|
||||
final String targetFilterQuery) {
|
||||
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
|
||||
final CriteriaQuery<Object[]> query = cb.createQuery(Object[].class);
|
||||
final Root<JpaTarget> targetRoot = query.from(JpaTarget.class);
|
||||
|
||||
String sortProperty = JpaTarget_.id.getName();
|
||||
if (pageRequest.getSort() != null && pageRequest.getSort().iterator().hasNext()) {
|
||||
sortProperty = pageRequest.getSort().iterator().next().getProperty();
|
||||
}
|
||||
|
||||
final CriteriaQuery<Object[]> multiselect = query.multiselect(targetRoot.get(JpaTarget_.id),
|
||||
targetRoot.get(JpaTarget_.controllerId), targetRoot.get(JpaTarget_.name), targetRoot.get(sortProperty));
|
||||
|
||||
final Specification<JpaTarget> spec = RSQLUtility.parse(targetFilterQuery, TargetFields.class,
|
||||
virtualPropertyReplacer);
|
||||
final Predicate[] specificationsForMultiSelect = specificationsToPredicate(Lists.newArrayList(spec), targetRoot,
|
||||
multiselect, cb);
|
||||
|
||||
// if we have some predicates then add it to the where clause of the
|
||||
// multiselect
|
||||
if (specificationsForMultiSelect.length > 0) {
|
||||
multiselect.where(specificationsForMultiSelect);
|
||||
}
|
||||
final List<Object[]> resultList = getTargetIdNameResultSet(pageRequest, cb, targetRoot, multiselect);
|
||||
return resultList.parallelStream().map(o -> new TargetIdName((long) o[0], o[1].toString(), o[2].toString()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Target> findAllTargetsByTargetFilterQueryAndNonDS(@NotNull final Pageable pageRequest,
|
||||
final Long distributionSetId, @NotNull final String targetFilterQuery) {
|
||||
@@ -686,26 +618,14 @@ public class JpaTargetManagement implements TargetManagement {
|
||||
});
|
||||
}
|
||||
|
||||
private List<Object[]> getTargetIdNameResultSet(final Pageable pageRequest, final CriteriaBuilder cb,
|
||||
final Root<JpaTarget> targetRoot, final CriteriaQuery<Object[]> multiselect) {
|
||||
List<Object[]> resultList;
|
||||
if (pageRequest.getSort() != null) {
|
||||
final List<Order> orders = new ArrayList<>();
|
||||
final Sort sort = pageRequest.getSort();
|
||||
for (final Sort.Order sortOrder : sort) {
|
||||
if (sortOrder.getDirection() == Direction.ASC) {
|
||||
orders.add(cb.asc(targetRoot.get(sortOrder.getProperty())));
|
||||
} else {
|
||||
orders.add(cb.desc(targetRoot.get(sortOrder.getProperty())));
|
||||
}
|
||||
}
|
||||
multiselect.orderBy(orders);
|
||||
resultList = entityManager.createQuery(multiselect).setFirstResult(pageRequest.getOffset())
|
||||
.setMaxResults(pageRequest.getPageSize()).getResultList();
|
||||
} else {
|
||||
resultList = entityManager.createQuery(multiselect).getResultList();
|
||||
}
|
||||
return resultList;
|
||||
@Override
|
||||
public Target findTargetById(final Long id) {
|
||||
return targetRepository.findOne(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Target> findTargetAllById(final Collection<Long> ids) {
|
||||
return Collections.unmodifiableList(targetRepository.findAll(ids));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.eclipse.hawkbit.repository.ActionStatusFields;
|
||||
import org.eclipse.hawkbit.repository.OffsetBasedPageRequest;
|
||||
import org.eclipse.hawkbit.repository.event.remote.TargetAssignDistributionSetEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.entity.CancelTargetAssignmentEvent;
|
||||
import org.eclipse.hawkbit.repository.exception.ForceQuitActionNotAllowedException;
|
||||
|
||||
@@ -20,6 +20,8 @@ import java.util.stream.Collectors;
|
||||
|
||||
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
||||
import org.eclipse.hawkbit.repository.builder.DistributionSetCreate;
|
||||
import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetCreatedEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.entity.SoftwareModuleCreatedEvent;
|
||||
import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException;
|
||||
import org.eclipse.hawkbit.repository.exception.EntityReadOnlyException;
|
||||
import org.eclipse.hawkbit.repository.exception.UnsupportedSoftwareModuleForThisDistributionSetException;
|
||||
@@ -34,6 +36,8 @@ import org.eclipse.hawkbit.repository.model.DistributionSetTag;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSetType;
|
||||
import org.eclipse.hawkbit.repository.model.SoftwareModule;
|
||||
import org.eclipse.hawkbit.repository.model.Target;
|
||||
import org.eclipse.hawkbit.repository.test.matcher.Expect;
|
||||
import org.eclipse.hawkbit.repository.test.matcher.ExpectEvents;
|
||||
import org.eclipse.hawkbit.repository.test.util.WithUser;
|
||||
import org.fest.assertions.core.Condition;
|
||||
import org.junit.Test;
|
||||
@@ -751,4 +755,25 @@ public class DistributionSetManagementTest extends AbstractJpaIntegrationTest {
|
||||
assertThat(distributionSetRepository.findAll()).hasSize(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Description("Verify that the find all by ids contains the entities which are looking for")
|
||||
@ExpectEvents({ @Expect(type = DistributionSetCreatedEvent.class, count = 12),
|
||||
@Expect(type = SoftwareModuleCreatedEvent.class, count = 36) })
|
||||
public void verifyFindDistributionSetAllById() {
|
||||
final List<Long> searchIds = new ArrayList<>();
|
||||
searchIds.add(testdataFactory.createDistributionSet("ds-4").getId());
|
||||
searchIds.add(testdataFactory.createDistributionSet("ds-5").getId());
|
||||
searchIds.add(testdataFactory.createDistributionSet("ds-6").getId());
|
||||
for (int i = 0; i < 9; i++) {
|
||||
testdataFactory.createDistributionSet("test" + i);
|
||||
}
|
||||
|
||||
final List<DistributionSet> foundDs = distributionSetManagement.findDistributionSetAllById(searchIds);
|
||||
|
||||
assertThat(foundDs).hasSize(3);
|
||||
|
||||
final List<Long> collect = foundDs.stream().map(DistributionSet::getId).collect(Collectors.toList());
|
||||
assertThat(collect).containsAll(searchIds);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ import org.eclipse.hawkbit.repository.model.Action.Status;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||
import org.eclipse.hawkbit.repository.model.Target;
|
||||
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
|
||||
import org.eclipse.hawkbit.repository.model.TargetIdName;
|
||||
import org.eclipse.hawkbit.repository.model.TargetTag;
|
||||
import org.eclipse.hawkbit.repository.model.TargetUpdateStatus;
|
||||
import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity;
|
||||
@@ -163,9 +162,7 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
@Step
|
||||
private void verfiyThat1TargetAIsInStatusPendingAndHasDSInstalled(final DistributionSet installedSet,
|
||||
final List<TargetUpdateStatus> pending, final Target expected) {
|
||||
final TargetIdName expectedIdName = convertToIdName(expected);
|
||||
final String query = "updatestatus==pending and installedds.name==" + installedSet.getName();
|
||||
|
||||
assertThat(targetManagement
|
||||
.findTargetByFilters(pageReq, pending, null, null, installedSet.getId(), Boolean.FALSE, new String[0])
|
||||
.getContent()).as("has number of elements").hasSize(1)
|
||||
@@ -176,19 +173,11 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, null, installedSet.getId(),
|
||||
Boolean.FALSE, new String[0])).as("has number of elements").hasSize(1)
|
||||
.as("and contains the following elements").containsExactly(expectedIdName)
|
||||
.as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat200targetsWithGivenTagAreInStatusPendingorUnknown(final TargetTag targTagW,
|
||||
final List<TargetUpdateStatus> both, final List<Target> expected) {
|
||||
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||
|
||||
final String query = "(updatestatus==pending or updatestatus==unknown) and tag==" + targTagW.getName();
|
||||
|
||||
assertThat(targetManagement
|
||||
@@ -199,27 +188,11 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and contains the following elements").containsAll(expected)
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, both, null, null, null, Boolean.FALSE,
|
||||
targTagW.getName())).as("has number of elements").hasSize(200).as("and contains the following elements")
|
||||
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
private static List<TargetIdName> convertToIdNames(final List<Target> expected) {
|
||||
return expected.stream()
|
||||
.map(target -> new TargetIdName(target.getId(), target.getControllerId(), target.getName()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private static TargetIdName convertToIdName(final Target target) {
|
||||
return new TargetIdName(target.getId(), target.getControllerId(), target.getName());
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat2TargetsWithGivenTagAreInPending(final TargetTag targTagW,
|
||||
final List<TargetUpdateStatus> pending, final List<Target> expected) {
|
||||
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||
final String query = "updatestatus==pending and tag==" + targTagW.getName();
|
||||
|
||||
assertThat(targetManagement
|
||||
@@ -231,17 +204,11 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and contains the following elements").containsAll(expected)
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, null, null, Boolean.FALSE,
|
||||
targTagW.getName())).as("has number of elements").hasSize(2).as("and contains the following elements")
|
||||
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat2TargetsWithGivenTagAndDSIsInPending(final TargetTag targTagW, final DistributionSet setA,
|
||||
final List<TargetUpdateStatus> pending, final List<Target> expected) {
|
||||
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||
final String query = "updatestatus==pending and (assignedds.name==" + setA.getName() + " or installedds.name=="
|
||||
+ setA.getName() + ") and tag==" + targTagW.getName();
|
||||
|
||||
@@ -254,17 +221,11 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and contains the following elements").containsAll(expected)
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, null, null, Boolean.FALSE,
|
||||
targTagW.getName())).as("has number of elements").hasSize(2).as("and contains the following elements")
|
||||
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat1TargetWithGivenNameOrDescAndTagAndDSIsInPending(final TargetTag targTagW,
|
||||
final DistributionSet setA, final List<TargetUpdateStatus> pending, final Target expected) {
|
||||
final TargetIdName expectedIdName = convertToIdName(expected);
|
||||
final String query = "updatestatus==pending and (assignedds.name==" + setA.getName() + " or installedds.name=="
|
||||
+ setA.getName() + ") and (name==*targ-B* or description==*targ-B*) and tag==" + targTagW.getName();
|
||||
|
||||
@@ -276,18 +237,11 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and contains the following elements").containsExactly(expected)
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, "%targ-B%", setA.getId(),
|
||||
Boolean.FALSE, targTagW.getName())).as("has number of elements").hasSize(1)
|
||||
.as("and contains the following elements").containsExactly(expectedIdName)
|
||||
.as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat1TargetWithGivenNameOrDescAndDSIsInPending(final DistributionSet setA,
|
||||
final List<TargetUpdateStatus> pending, final Target expected) {
|
||||
final TargetIdName expectedIdName = convertToIdName(expected);
|
||||
final String query = "updatestatus==pending and (assignedds.name==" + setA.getName() + " or installedds.name=="
|
||||
+ setA.getName() + ") and (name==*targ-A* or description==*targ-A*)";
|
||||
|
||||
@@ -300,18 +254,11 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and contains the following elements").containsExactly(expected)
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, "%targ-A%", setA.getId(),
|
||||
Boolean.FALSE, new String[0])).as("has number of elements").hasSize(1)
|
||||
.as("and contains the following elements").containsExactly(expectedIdName)
|
||||
.as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat3TargetsWithGivenDSAreInPending(final DistributionSet setA,
|
||||
final List<TargetUpdateStatus> pending, final List<Target> expected) {
|
||||
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||
final String query = "updatestatus==pending and (assignedds.name==" + setA.getName() + " or installedds.name=="
|
||||
+ setA.getName() + ")";
|
||||
|
||||
@@ -324,17 +271,11 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and contains the following elements").containsAll(expected)
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, null, setA.getId(), Boolean.FALSE,
|
||||
new String[0])).as("has number of elements").hasSize(3).as("and contains the following elements")
|
||||
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat3TargetsAreInStatusPending(final List<TargetUpdateStatus> pending,
|
||||
final List<Target> expected) {
|
||||
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||
final String query = "updatestatus==pending";
|
||||
|
||||
assertThat(targetManagement
|
||||
@@ -345,17 +286,11 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and contains the following elements").containsAll(expected)
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, null, null, Boolean.FALSE,
|
||||
new String[0])).as("has number of elements").hasSize(3).as("and contains the following elements")
|
||||
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat99TargetsWithGivenNameOrDescAndTagAreInStatusUnknown(final TargetTag targTagW,
|
||||
final List<TargetUpdateStatus> unknown, final List<Target> expected) {
|
||||
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||
final String query = "updatestatus==unknown and (name==*targ-B* or description==*targ-B*) and tag=="
|
||||
+ targTagW.getName();
|
||||
|
||||
@@ -368,17 +303,11 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and contains the following elements").containsAll(expected)
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, unknown, null, "%targ-B%", null, Boolean.FALSE,
|
||||
targTagW.getName())).as("has number of elements").hasSize(99).as("and contains the following elements")
|
||||
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat99TargetsWithNameOrDescriptionAreInGivenStatus(final List<TargetUpdateStatus> unknown,
|
||||
final List<Target> expected) {
|
||||
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||
final String query = "updatestatus==unknown and (name==*targ-A* or description==*targ-A*)";
|
||||
|
||||
assertThat(targetManagement
|
||||
@@ -391,10 +320,6 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, unknown, null, "%targ-A%", null, Boolean.FALSE,
|
||||
new String[0])).as("has number of elements").hasSize(99).as("and contains the following elements")
|
||||
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
@@ -411,17 +336,11 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
setA.getId(), Boolean.FALSE, new String[0])))
|
||||
.as("and filter query returns the same result")
|
||||
.hasSize(targetManagement.findTargetsAll(query, pageReq).getContent().size());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, unknown, null, null, setA.getId(), Boolean.FALSE,
|
||||
new String[0])).as("has number of elements").hasSize(0)
|
||||
.as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat198TargetsAreInStatusUnknownAndHaveGivenTags(final TargetTag targTagY,
|
||||
final TargetTag targTagW, final List<TargetUpdateStatus> unknown, final List<Target> expected) {
|
||||
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||
final String query = "updatestatus==unknown and (tag==" + targTagY.getName() + " or tag==" + targTagW.getName()
|
||||
+ ")";
|
||||
|
||||
@@ -433,18 +352,11 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and contains the following elements").containsAll(expected)
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, unknown, null, null, null, Boolean.FALSE,
|
||||
targTagY.getName(), targTagW.getName())).as("has number of elements").hasSize(198)
|
||||
.as("and contains the following elements").containsAll(expectedIdNames)
|
||||
.as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat397TargetsAreInStatusUnknown(final List<TargetUpdateStatus> unknown,
|
||||
final List<Target> expected) {
|
||||
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||
final String query = "updatestatus==unknown";
|
||||
|
||||
assertThat(targetManagement
|
||||
@@ -456,16 +368,11 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, unknown, null, null, null, Boolean.FALSE,
|
||||
new String[0])).as("has number of elements").hasSize(397).as("and contains the following elements")
|
||||
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat198TargetsAreInStatusUnknownAndOverdue(final List<TargetUpdateStatus> unknown,
|
||||
final List<Target> expected) {
|
||||
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||
// be careful: simple filters are concatenated using AND-gating
|
||||
final String query = "lastcontrollerrequestat=le=${overdue_ts};updatestatus==UNKNOWN";
|
||||
|
||||
@@ -478,16 +385,10 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and contains the following elements").containsAll(expected)
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, unknown, Boolean.TRUE, null, null, Boolean.FALSE,
|
||||
new String[0])).as("has number of elements").hasSize(198).as("and contains the following elements")
|
||||
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat1TargetWithDescOrNameHasDS(final DistributionSet setA, final Target expected) {
|
||||
final TargetIdName expectedIdName = convertToIdName(expected);
|
||||
final String query = "(name==*targ-A* or description==*targ-A*) and (assignedds.name==" + setA.getName()
|
||||
+ " or installedds.name==" + setA.getName() + ")";
|
||||
|
||||
@@ -501,16 +402,10 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, null, "%targ-A%", setA.getId(),
|
||||
Boolean.FALSE, new String[0])).as("has number of elements").hasSize(1)
|
||||
.as("and contains the following elements").containsExactly(expectedIdName)
|
||||
.as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat3TargetsHaveDSAssigned(final DistributionSet setA, final List<Target> expected) {
|
||||
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||
final String query = "assignedds.name==" + setA.getName() + " or installedds.name==" + setA.getName();
|
||||
|
||||
assertThat(targetManagement
|
||||
@@ -523,10 +418,6 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, null, null, setA.getId(), Boolean.FALSE,
|
||||
new String[0])).as("has number of elements").hasSize(3).as("and contains the following elements")
|
||||
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
@@ -542,10 +433,6 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and filter query returns the same result")
|
||||
.hasSize(targetManagement.findTargetsAll(query, pageReq).getContent().size());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, null, "%targ-C%", setA.getId(),
|
||||
Boolean.FALSE, targTagX.getName())).as("has number of elements").hasSize(0)
|
||||
.as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
@@ -561,16 +448,11 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and filter query returns the same result")
|
||||
.hasSize(targetManagement.findTargetsAll(query, pageReq).getContent().size());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, null, "%targ-A%", setA.getId(),
|
||||
Boolean.FALSE, targTagW.getName())).as("has number of elements").hasSize(0)
|
||||
.as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void verifyThat1TargetHasTagHasDescOrNameAndDs(final TargetTag targTagW, final DistributionSet setA,
|
||||
final Target expected) {
|
||||
final TargetIdName expectedIdName = convertToIdName(expected);
|
||||
final String query = "(name==*targ-c* or description==*targ-C*) and tag==" + targTagW.getName()
|
||||
+ " and (assignedds.name==" + setA.getName() + " or installedds.name==" + setA.getName() + ")";
|
||||
assertThat(targetManagement
|
||||
@@ -583,11 +465,6 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, null, "%targ-C%", setA.getId(),
|
||||
Boolean.FALSE, targTagW.getName())).as("has number of elements").hasSize(1)
|
||||
.as("and contains the following elements").containsExactly(expectedIdName)
|
||||
.as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
}
|
||||
|
||||
@Step
|
||||
@@ -605,7 +482,6 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
@Step
|
||||
private void verifyThat100TargetsContainsGivenTextAndHaveTagAssigned(final TargetTag targTagY,
|
||||
final TargetTag targTagW, final List<Target> expected) {
|
||||
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||
final String query = "(name==*targ-B* or description==*targ-B*) and (tag==" + targTagY.getName() + " or tag=="
|
||||
+ targTagW.getName() + ")";
|
||||
assertThat(targetManagement.findTargetByFilters(pageReq, null, null, "%targ-B%", null, Boolean.FALSE,
|
||||
@@ -617,12 +493,6 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, null, "%targ-B%", null, Boolean.FALSE,
|
||||
targTagY.getName(), targTagW.getName())).as("has number of elements").hasSize(100)
|
||||
.as("and contains the following elements").containsAll(expectedIdNames)
|
||||
.as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
|
||||
}
|
||||
|
||||
@SafeVarargs
|
||||
@@ -634,7 +504,6 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
|
||||
@Step
|
||||
private void verifyThat200TargetsHaveTagD(final TargetTag targTagD, final List<Target> expected) {
|
||||
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||
final String query = "tag==" + targTagD.getName();
|
||||
assertThat(targetManagement
|
||||
.findTargetByFilters(pageReq, null, null, null, null, Boolean.FALSE, targTagD.getName()).getContent())
|
||||
@@ -646,11 +515,6 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
|
||||
.as("and filter query returns the same result")
|
||||
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent());
|
||||
|
||||
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, null, null, null, Boolean.FALSE,
|
||||
targTagD.getName())).as("has number of elements").hasSize(200).as("and contains the following elements")
|
||||
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, query));
|
||||
|
||||
}
|
||||
|
||||
@Step
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.validation.ConstraintViolationException;
|
||||
|
||||
@@ -705,14 +706,13 @@ public class TargetManagementTest extends AbstractJpaIntegrationTest {
|
||||
|
||||
toggleTagAssignment(targAs, targTagA);
|
||||
|
||||
assertThat(targetManagement.findTargetsByControllerIDsWithTags(
|
||||
targAs.stream().map(Target::getControllerId).collect(toList()))).as("Target count is wrong")
|
||||
.hasSize(25);
|
||||
assertThat(targetManagement
|
||||
.findTargetsByControllerIDsWithTags(targAs.stream().map(Target::getControllerId).collect(toList())))
|
||||
.as("Target count is wrong").hasSize(25);
|
||||
|
||||
// no lazy loading exception and tag correctly assigned
|
||||
assertThat(targetManagement
|
||||
.findTargetsByControllerIDsWithTags(
|
||||
targAs.stream().map(Target::getControllerId).collect(toList()))
|
||||
.findTargetsByControllerIDsWithTags(targAs.stream().map(Target::getControllerId).collect(toList()))
|
||||
.stream().map(target -> target.getTags().contains(targTagA)).collect(toList()))
|
||||
.as("Tags not correctly assigned").containsOnly(true);
|
||||
}
|
||||
@@ -767,11 +767,31 @@ public class TargetManagementTest extends AbstractJpaIntegrationTest {
|
||||
|
||||
testdataFactory.createTargets(25, "target-id-B", "first description");
|
||||
|
||||
Page<Target> foundTargets = targetManagement.findTargetsAll(rsqlFilter, new PageRequest(0, 100));
|
||||
final Page<Target> foundTargets = targetManagement.findTargetsAll(rsqlFilter, new PageRequest(0, 100));
|
||||
|
||||
assertThat(targetManagement.findTargetsAll(new PageRequest(0, 100)).getNumberOfElements()).as("Total targets")
|
||||
.isEqualTo(50);
|
||||
assertThat(foundTargets.getTotalElements()).as("Targets in RSQL filter").isEqualTo(27L);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@Description("Verify that the find all targets by ids method contains the entities that we are looking for")
|
||||
@ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 12) })
|
||||
public void verifyFindTargetAllById() {
|
||||
final List<Long> searchIds = new ArrayList<>();
|
||||
searchIds.add(testdataFactory.createTarget("target-4").getId());
|
||||
searchIds.add(testdataFactory.createTarget("target-5").getId());
|
||||
searchIds.add(testdataFactory.createTarget("target-6").getId());
|
||||
for (int i = 0; i < 9; i++) {
|
||||
testdataFactory.createTarget("test" + i);
|
||||
}
|
||||
|
||||
final List<Target> foundDs = targetManagement.findTargetAllById(searchIds);
|
||||
|
||||
assertThat(foundDs).hasSize(3);
|
||||
|
||||
final List<Long> collect = foundDs.stream().map(Target::getId).collect(Collectors.toList());
|
||||
assertThat(collect).containsAll(searchIds);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user