org.jboss.pnc.rest.provider.EnvironmentProvider.java Source code

Java tutorial

Introduction

Here is the source code for org.jboss.pnc.rest.provider.EnvironmentProvider.java

Source

package org.jboss.pnc.rest.provider;

import com.google.common.base.Preconditions;
import org.jboss.pnc.datastore.limits.RSQLPageLimitAndSortingProducer;
import org.jboss.pnc.datastore.predicates.RSQLPredicate;
import org.jboss.pnc.datastore.predicates.RSQLPredicateProducer;
import org.jboss.pnc.datastore.repositories.EnvironmentRepository;
import org.jboss.pnc.model.Environment;
import org.jboss.pnc.rest.restmodel.EnvironmentRest;
import org.springframework.data.domain.Pageable;

import javax.ejb.Stateless;
import javax.inject.Inject;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;

import static org.jboss.pnc.rest.utils.StreamHelper.nullableStreamOf;

@Stateless
public class EnvironmentProvider {

    private EnvironmentRepository environmentRepository;

    // needed for EJB/CDI
    public EnvironmentProvider() {
    }

    @Inject
    public EnvironmentProvider(EnvironmentRepository environmentRepository) {
        this.environmentRepository = environmentRepository;
    }

    public List<EnvironmentRest> getAll(Integer pageIndex, Integer pageSize, String sortingRsql, String query) {
        RSQLPredicate filteringCriteria = RSQLPredicateProducer.fromRSQL(Environment.class, query);
        Pageable paging = RSQLPageLimitAndSortingProducer.fromRSQL(pageSize, pageIndex, sortingRsql);

        return nullableStreamOf(environmentRepository.findAll(filteringCriteria.get(), paging)).map(toRestModel())
                .collect(Collectors.toList());
    }

    public EnvironmentRest getSpecific(Integer environmentId) {
        Environment environment = environmentRepository.findOne(environmentId);
        if (environment != null) {
            return toRestModel().apply(environment);
        }
        return null;
    }

    public Integer store(EnvironmentRest environmentRest) {
        return environmentRepository.save(environmentRest.toEnvironment()).getId();
    }

    public void update(EnvironmentRest environmentRest) {
        Environment license = environmentRepository.findOne(environmentRest.getId());
        Preconditions.checkArgument(license != null,
                "Couldn't find environment with id " + environmentRest.getId());
        environmentRepository.saveAndFlush(environmentRest.toEnvironment());
    }

    public void delete(Integer environmentId) {
        Preconditions.checkArgument(environmentRepository.exists(environmentId),
                "Couldn't find environment with id " + environmentId);
        environmentRepository.delete(environmentId);
    }

    public Function<? super Environment, ? extends EnvironmentRest> toRestModel() {
        return environment -> new EnvironmentRest(environment);
    }
}