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
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user