Search in sources :

Example 1 with ResourceUpdater

use of com.epam.ta.reportportal.ws.converter.utils.ResourceUpdater in project service-api by reportportal.

the class TestItemsHistoryHandlerImpl method buildHistoryElements.

private Iterable<TestItemHistoryElement> buildHistoryElements(Function<TestItemResource, String> groupingFunction, Page<TestItemHistory> testItemHistoryPage, Long projectId, Pageable pageable) {
    List<TestItem> testItems = testItemRepository.findAllById(testItemHistoryPage.getContent().stream().flatMap(history -> history.getItemIds().stream()).collect(toList()));
    List<ResourceUpdater<TestItemResource>> resourceUpdaters = getResourceUpdaters(projectId, testItems);
    Map<String, Map<Long, TestItemResource>> itemsMapping = testItems.stream().map(item -> {
        TestItemResource testItemResource = TestItemConverter.TO_RESOURCE.apply(item);
        resourceUpdaters.forEach(updater -> updater.updateResource(testItemResource));
        return testItemResource;
    }).collect(groupingBy(groupingFunction, toMap(TestItemResource::getItemId, res -> res)));
    List<TestItemHistoryElement> testItemHistoryElements = testItemHistoryPage.getContent().stream().map(history -> ofNullable(itemsMapping.get(history.getGroupingField())).map(mapping -> {
        TestItemHistoryElement historyResource = new TestItemHistoryElement();
        historyResource.setGroupingField(history.getGroupingField());
        List<TestItemResource> resources = Lists.newArrayList();
        ofNullable(history.getItemIds()).ifPresent(itemIds -> itemIds.forEach(itemId -> ofNullable(mapping.get(itemId)).ifPresent(resources::add)));
        historyResource.setResources(resources);
        return historyResource;
    })).filter(Optional::isPresent).map(Optional::get).collect(toList());
    return PagedResourcesAssembler.<TestItemHistoryElement>pageConverter().apply(PageableExecutionUtils.getPage(testItemHistoryElements, pageable, testItemHistoryPage::getTotalElements));
}
Also used : CRITERIA_PROJECT_ID(com.epam.ta.reportportal.commons.querygen.constant.GeneralCriteriaConstant.CRITERIA_PROJECT_ID) TestItem(com.epam.ta.reportportal.entity.item.TestItem) TestItemHistory(com.epam.ta.reportportal.entity.item.history.TestItemHistory) Autowired(org.springframework.beans.factory.annotation.Autowired) Operator(org.jooq.Operator) Function(java.util.function.Function) TestItemsHistoryHandler(com.epam.ta.reportportal.core.item.history.TestItemsHistoryHandler) Value(org.springframework.beans.factory.annotation.Value) MIN_HISTORY_DEPTH_BOUND(com.epam.ta.reportportal.ws.model.ValidationConstraints.MIN_HISTORY_DEPTH_BOUND) Lists(com.google.common.collect.Lists) ReportPortalUser(com.epam.ta.reportportal.commons.ReportPortalUser) TestItemResource(com.epam.ta.reportportal.ws.model.TestItemResource) Service(org.springframework.stereotype.Service) TestItemConverter(com.epam.ta.reportportal.ws.converter.converters.TestItemConverter) Map(java.util.Map) UNABLE_LOAD_TEST_ITEM_HISTORY(com.epam.ta.reportportal.ws.model.ErrorType.UNABLE_LOAD_TEST_ITEM_HISTORY) Pageable(org.springframework.data.domain.Pageable) CRITERIA_LAUNCH_MODE(com.epam.ta.reportportal.commons.querygen.constant.LaunchCriteriaConstant.CRITERIA_LAUNCH_MODE) TestItemRepository(com.epam.ta.reportportal.dao.TestItemRepository) CRITERIA_HAS_STATS(com.epam.ta.reportportal.commons.querygen.constant.TestItemCriteriaConstant.CRITERIA_HAS_STATS) TestItemHistoryElement(com.epam.ta.reportportal.ws.model.TestItemHistoryElement) BusinessRule(com.epam.ta.reportportal.commons.validation.BusinessRule) Predicate(java.util.function.Predicate) Optional.ofNullable(java.util.Optional.ofNullable) Filter(com.epam.ta.reportportal.commons.querygen.Filter) LaunchModeEnum(com.epam.ta.reportportal.entity.enums.LaunchModeEnum) TestItemUpdaterContent(com.epam.ta.reportportal.ws.converter.utils.item.content.TestItemUpdaterContent) ReportPortalException(com.epam.ta.reportportal.exception.ReportPortalException) PageableExecutionUtils(org.springframework.data.repository.support.PageableExecutionUtils) FilterCondition(com.epam.ta.reportportal.commons.querygen.FilterCondition) Page(org.springframework.data.domain.Page) Collectors(java.util.stream.Collectors) PagedResourcesAssembler(com.epam.ta.reportportal.ws.converter.PagedResourcesAssembler) List(java.util.List) HistoryProviderFactory(com.epam.ta.reportportal.core.item.impl.history.provider.HistoryProviderFactory) Queryable(com.epam.ta.reportportal.commons.querygen.Queryable) Optional(java.util.Optional) CompositeFilter(com.epam.ta.reportportal.commons.querygen.CompositeFilter) Suppliers(com.epam.ta.reportportal.commons.validation.Suppliers) MAX_HISTORY_DEPTH_BOUND(com.epam.ta.reportportal.ws.model.ValidationConstraints.MAX_HISTORY_DEPTH_BOUND) ResourceUpdater(com.epam.ta.reportportal.ws.converter.utils.ResourceUpdater) HistoryRequestParams(com.epam.ta.reportportal.core.item.impl.history.param.HistoryRequestParams) ResourceUpdaterProvider(com.epam.ta.reportportal.ws.converter.utils.ResourceUpdaterProvider) Optional(java.util.Optional) ResourceUpdater(com.epam.ta.reportportal.ws.converter.utils.ResourceUpdater) TestItemResource(com.epam.ta.reportportal.ws.model.TestItemResource) TestItemHistoryElement(com.epam.ta.reportportal.ws.model.TestItemHistoryElement) Map(java.util.Map) TestItem(com.epam.ta.reportportal.entity.item.TestItem)

Example 2 with ResourceUpdater

use of com.epam.ta.reportportal.ws.converter.utils.ResourceUpdater in project service-api by reportportal.

the class GetTestItemHandlerImpl method getTestItems.

@Override
public Iterable<TestItemResource> getTestItems(Queryable filter, Pageable pageable, ReportPortalUser.ProjectDetails projectDetails, ReportPortalUser user, @Nullable Long launchId, @Nullable Long filterId, boolean isLatest, int launchesLimit) {
    Optional<Long> launchIdOptional = Optional.ofNullable(launchId);
    Optional<Long> filterIdOptional = Optional.ofNullable(filterId);
    Page<TestItem> testItemPage = filterIdOptional.map(launchFilterId -> {
        validateProjectRole(projectDetails, user);
        return getItemsWithLaunchesFiltering(filter, pageable, projectDetails, launchFilterId, isLatest, launchesLimit);
    }).orElseGet(() -> launchIdOptional.map(id -> {
        launchAccessValidator.validate(id, projectDetails, user);
        return testItemRepository.findByFilter(filter, pageable);
    }).orElseThrow(() -> new ReportPortalException(ErrorType.BAD_REQUEST_ERROR, "Neither launch nor filter id specified.")));
    return PagedResourcesAssembler.<TestItem, TestItemResource>pageMultiConverter(items -> {
        List<ResourceUpdater<TestItemResource>> resourceUpdaters = getResourceUpdaters(projectDetails.getProjectId(), testItemPage.getContent());
        return items.stream().map(item -> {
            TestItemResource testItemResource = TestItemConverter.TO_RESOURCE.apply(item);
            resourceUpdaters.forEach(updater -> updater.updateResource(testItemResource));
            return testItemResource;
        }).collect(toList());
    }).apply(testItemPage);
}
Also used : TestItemService(com.epam.ta.reportportal.core.item.TestItemService) Autowired(org.springframework.beans.factory.annotation.Autowired) DefaultLaunchFilterProvider(com.epam.ta.reportportal.core.item.utils.DefaultLaunchFilterProvider) CRITERIA_ID(com.epam.ta.reportportal.commons.querygen.constant.GeneralCriteriaConstant.CRITERIA_ID) Predicates(com.epam.ta.reportportal.commons.Predicates) Pair(org.apache.commons.lang3.tuple.Pair) TestItemConverter(com.epam.ta.reportportal.ws.converter.converters.TestItemConverter) Pageable(org.springframework.data.domain.Pageable) CRITERIA_LAUNCH_MODE(com.epam.ta.reportportal.commons.querygen.constant.LaunchCriteriaConstant.CRITERIA_LAUNCH_MODE) TestItemRepository(com.epam.ta.reportportal.dao.TestItemRepository) TicketRepository(com.epam.ta.reportportal.dao.TicketRepository) OPERATOR(com.epam.ta.reportportal.entity.project.ProjectRole.OPERATOR) ItemAttributeRepository(com.epam.ta.reportportal.dao.ItemAttributeRepository) UserFilter(com.epam.ta.reportportal.entity.filter.UserFilter) Launch(com.epam.ta.reportportal.entity.launch.Launch) Predicate(java.util.function.Predicate) BusinessRule.expect(com.epam.ta.reportportal.commons.validation.BusinessRule.expect) Filter(com.epam.ta.reportportal.commons.querygen.Filter) ReportPortalException(com.epam.ta.reportportal.exception.ReportPortalException) Page(org.springframework.data.domain.Page) Collectors(java.util.stream.Collectors) PagedResourcesAssembler(com.epam.ta.reportportal.ws.converter.PagedResourcesAssembler) ProjectRole(com.epam.ta.reportportal.entity.project.ProjectRole) Queryable(com.epam.ta.reportportal.commons.querygen.Queryable) Suppliers(com.epam.ta.reportportal.commons.validation.Suppliers) StatisticsConverter(com.epam.ta.reportportal.ws.converter.converters.StatisticsConverter) DataProviderType(com.epam.ta.reportportal.core.item.impl.provider.DataProviderType) CRITERIA_PROJECT_ID(com.epam.ta.reportportal.commons.querygen.constant.GeneralCriteriaConstant.CRITERIA_PROJECT_ID) java.util(java.util) TestItem(com.epam.ta.reportportal.entity.item.TestItem) ErrorType(com.epam.ta.reportportal.ws.model.ErrorType) GetShareableEntityHandler(com.epam.ta.reportportal.core.shareable.GetShareableEntityHandler) ReportPortalUser(com.epam.ta.reportportal.commons.ReportPortalUser) TestItemResource(com.epam.ta.reportportal.ws.model.TestItemResource) Service(org.springframework.stereotype.Service) ACCESS_DENIED(com.epam.ta.reportportal.ws.model.ErrorType.ACCESS_DENIED) Condition(com.epam.ta.reportportal.commons.querygen.Condition) UserRole(com.epam.ta.reportportal.entity.user.UserRole) Nullable(javax.annotation.Nullable) BusinessRule(com.epam.ta.reportportal.commons.validation.BusinessRule) StatisticsResource(com.epam.ta.reportportal.ws.model.statistics.StatisticsResource) LaunchModeEnum(com.epam.ta.reportportal.entity.enums.LaunchModeEnum) TestItemUpdaterContent(com.epam.ta.reportportal.ws.converter.utils.item.content.TestItemUpdaterContent) FilterCondition(com.epam.ta.reportportal.commons.querygen.FilterCondition) GetTestItemHandler(com.epam.ta.reportportal.core.item.GetTestItemHandler) Collectors.toList(java.util.stream.Collectors.toList) DataProviderHandler(com.epam.ta.reportportal.core.item.impl.provider.DataProviderHandler) ResourceUpdater(com.epam.ta.reportportal.ws.converter.utils.ResourceUpdater) ResourceUpdaterProvider(com.epam.ta.reportportal.ws.converter.utils.ResourceUpdaterProvider) ReportPortalException(com.epam.ta.reportportal.exception.ReportPortalException) TestItemResource(com.epam.ta.reportportal.ws.model.TestItemResource) Collectors.toList(java.util.stream.Collectors.toList) TestItem(com.epam.ta.reportportal.entity.item.TestItem)

Example 3 with ResourceUpdater

use of com.epam.ta.reportportal.ws.converter.utils.ResourceUpdater in project service-api by reportportal.

the class GetTestItemHandlerImpl method getTestItemsByProvider.

@Override
public Iterable<TestItemResource> getTestItemsByProvider(Queryable filter, Pageable pageable, ReportPortalUser.ProjectDetails projectDetails, ReportPortalUser user, Map<String, String> params) {
    DataProviderType dataProviderType = DataProviderType.findByName(params.get(PROVIDER_TYPE_PARAM)).orElseThrow(() -> new ReportPortalException(ErrorType.BAD_REQUEST_ERROR, "Test item data provider base is not specified. Allowed data provider {}", DataProviderType.values()));
    Page<TestItem> testItemPage = testItemDataProviders.get(dataProviderType).getTestItems(filter, pageable, projectDetails, user, params);
    return PagedResourcesAssembler.<TestItem, TestItemResource>pageMultiConverter(items -> {
        List<ResourceUpdater<TestItemResource>> resourceUpdaters = getResourceUpdaters(projectDetails.getProjectId(), testItemPage.getContent());
        return items.stream().map(item -> {
            TestItemResource testItemResource = TestItemConverter.TO_RESOURCE.apply(item);
            resourceUpdaters.forEach(updater -> updater.updateResource(testItemResource));
            return testItemResource;
        }).collect(toList());
    }).apply(testItemPage);
}
Also used : TestItemService(com.epam.ta.reportportal.core.item.TestItemService) Autowired(org.springframework.beans.factory.annotation.Autowired) DefaultLaunchFilterProvider(com.epam.ta.reportportal.core.item.utils.DefaultLaunchFilterProvider) CRITERIA_ID(com.epam.ta.reportportal.commons.querygen.constant.GeneralCriteriaConstant.CRITERIA_ID) Predicates(com.epam.ta.reportportal.commons.Predicates) Pair(org.apache.commons.lang3.tuple.Pair) TestItemConverter(com.epam.ta.reportportal.ws.converter.converters.TestItemConverter) Pageable(org.springframework.data.domain.Pageable) CRITERIA_LAUNCH_MODE(com.epam.ta.reportportal.commons.querygen.constant.LaunchCriteriaConstant.CRITERIA_LAUNCH_MODE) TestItemRepository(com.epam.ta.reportportal.dao.TestItemRepository) TicketRepository(com.epam.ta.reportportal.dao.TicketRepository) OPERATOR(com.epam.ta.reportportal.entity.project.ProjectRole.OPERATOR) ItemAttributeRepository(com.epam.ta.reportportal.dao.ItemAttributeRepository) UserFilter(com.epam.ta.reportportal.entity.filter.UserFilter) Launch(com.epam.ta.reportportal.entity.launch.Launch) Predicate(java.util.function.Predicate) BusinessRule.expect(com.epam.ta.reportportal.commons.validation.BusinessRule.expect) Filter(com.epam.ta.reportportal.commons.querygen.Filter) ReportPortalException(com.epam.ta.reportportal.exception.ReportPortalException) Page(org.springframework.data.domain.Page) Collectors(java.util.stream.Collectors) PagedResourcesAssembler(com.epam.ta.reportportal.ws.converter.PagedResourcesAssembler) ProjectRole(com.epam.ta.reportportal.entity.project.ProjectRole) Queryable(com.epam.ta.reportportal.commons.querygen.Queryable) Suppliers(com.epam.ta.reportportal.commons.validation.Suppliers) StatisticsConverter(com.epam.ta.reportportal.ws.converter.converters.StatisticsConverter) DataProviderType(com.epam.ta.reportportal.core.item.impl.provider.DataProviderType) CRITERIA_PROJECT_ID(com.epam.ta.reportportal.commons.querygen.constant.GeneralCriteriaConstant.CRITERIA_PROJECT_ID) java.util(java.util) TestItem(com.epam.ta.reportportal.entity.item.TestItem) ErrorType(com.epam.ta.reportportal.ws.model.ErrorType) GetShareableEntityHandler(com.epam.ta.reportportal.core.shareable.GetShareableEntityHandler) ReportPortalUser(com.epam.ta.reportportal.commons.ReportPortalUser) TestItemResource(com.epam.ta.reportportal.ws.model.TestItemResource) Service(org.springframework.stereotype.Service) ACCESS_DENIED(com.epam.ta.reportportal.ws.model.ErrorType.ACCESS_DENIED) Condition(com.epam.ta.reportportal.commons.querygen.Condition) UserRole(com.epam.ta.reportportal.entity.user.UserRole) Nullable(javax.annotation.Nullable) BusinessRule(com.epam.ta.reportportal.commons.validation.BusinessRule) StatisticsResource(com.epam.ta.reportportal.ws.model.statistics.StatisticsResource) LaunchModeEnum(com.epam.ta.reportportal.entity.enums.LaunchModeEnum) TestItemUpdaterContent(com.epam.ta.reportportal.ws.converter.utils.item.content.TestItemUpdaterContent) FilterCondition(com.epam.ta.reportportal.commons.querygen.FilterCondition) GetTestItemHandler(com.epam.ta.reportportal.core.item.GetTestItemHandler) Collectors.toList(java.util.stream.Collectors.toList) DataProviderHandler(com.epam.ta.reportportal.core.item.impl.provider.DataProviderHandler) ResourceUpdater(com.epam.ta.reportportal.ws.converter.utils.ResourceUpdater) ResourceUpdaterProvider(com.epam.ta.reportportal.ws.converter.utils.ResourceUpdaterProvider) ReportPortalException(com.epam.ta.reportportal.exception.ReportPortalException) TestItemResource(com.epam.ta.reportportal.ws.model.TestItemResource) Collectors.toList(java.util.stream.Collectors.toList) DataProviderType(com.epam.ta.reportportal.core.item.impl.provider.DataProviderType) TestItem(com.epam.ta.reportportal.entity.item.TestItem)

Example 4 with ResourceUpdater

use of com.epam.ta.reportportal.ws.converter.utils.ResourceUpdater in project service-api by reportportal.

the class GetTestItemHandlerImpl method getTestItem.

@Override
public TestItemResource getTestItem(String testItemId, ReportPortalUser.ProjectDetails projectDetails, ReportPortalUser user) {
    TestItem testItem;
    try {
        testItem = testItemRepository.findById(Long.parseLong(testItemId)).orElseThrow(() -> new ReportPortalException(ErrorType.TEST_ITEM_NOT_FOUND, testItemId));
    } catch (NumberFormatException e) {
        testItem = testItemRepository.findByUuid(testItemId).orElseThrow(() -> new ReportPortalException(ErrorType.TEST_ITEM_NOT_FOUND, testItemId));
    }
    Launch launch = testItemService.getEffectiveLaunch(testItem);
    launchAccessValidator.validate(launch.getId(), projectDetails, user);
    List<ResourceUpdater<TestItemResource>> resourceUpdaters = getResourceUpdaters(projectDetails.getProjectId(), Collections.singletonList(testItem));
    TestItemResource testItemResource = TestItemConverter.TO_RESOURCE.apply(testItem);
    resourceUpdaters.forEach(updater -> updater.updateResource(testItemResource));
    return testItemResource;
}
Also used : ReportPortalException(com.epam.ta.reportportal.exception.ReportPortalException) ResourceUpdater(com.epam.ta.reportportal.ws.converter.utils.ResourceUpdater) TestItemResource(com.epam.ta.reportportal.ws.model.TestItemResource) Launch(com.epam.ta.reportportal.entity.launch.Launch) TestItem(com.epam.ta.reportportal.entity.item.TestItem)

Aggregations

TestItem (com.epam.ta.reportportal.entity.item.TestItem)4 ReportPortalException (com.epam.ta.reportportal.exception.ReportPortalException)4 ResourceUpdater (com.epam.ta.reportportal.ws.converter.utils.ResourceUpdater)4 TestItemResource (com.epam.ta.reportportal.ws.model.TestItemResource)4 ReportPortalUser (com.epam.ta.reportportal.commons.ReportPortalUser)3 Filter (com.epam.ta.reportportal.commons.querygen.Filter)3 FilterCondition (com.epam.ta.reportportal.commons.querygen.FilterCondition)3 Queryable (com.epam.ta.reportportal.commons.querygen.Queryable)3 CRITERIA_PROJECT_ID (com.epam.ta.reportportal.commons.querygen.constant.GeneralCriteriaConstant.CRITERIA_PROJECT_ID)3 CRITERIA_LAUNCH_MODE (com.epam.ta.reportportal.commons.querygen.constant.LaunchCriteriaConstant.CRITERIA_LAUNCH_MODE)3 BusinessRule (com.epam.ta.reportportal.commons.validation.BusinessRule)3 Suppliers (com.epam.ta.reportportal.commons.validation.Suppliers)3 TestItemRepository (com.epam.ta.reportportal.dao.TestItemRepository)3 LaunchModeEnum (com.epam.ta.reportportal.entity.enums.LaunchModeEnum)3 Launch (com.epam.ta.reportportal.entity.launch.Launch)3 PagedResourcesAssembler (com.epam.ta.reportportal.ws.converter.PagedResourcesAssembler)3 TestItemConverter (com.epam.ta.reportportal.ws.converter.converters.TestItemConverter)3 ResourceUpdaterProvider (com.epam.ta.reportportal.ws.converter.utils.ResourceUpdaterProvider)3 TestItemUpdaterContent (com.epam.ta.reportportal.ws.converter.utils.item.content.TestItemUpdaterContent)3 Predicates (com.epam.ta.reportportal.commons.Predicates)2