package com.sequenceiq.cloudbreak.service.usages;
import java.util.List;
import javax.inject.Inject;
import org.springframework.data.jpa.domain.Specifications;
import org.springframework.stereotype.Service;
import com.sequenceiq.cloudbreak.domain.CbUsageFilterParameters;
import com.sequenceiq.cloudbreak.domain.CloudbreakUsage;
import com.sequenceiq.cloudbreak.repository.CloudbreakUsageRepository;
import com.sequenceiq.cloudbreak.repository.CloudbreakUsageSpecifications;
@Service
public class CloudbreakUsagesRetrievalService {
@Inject
private CloudbreakUsageRepository usageRepository;
public List<CloudbreakUsage> findUsagesFor(CbUsageFilterParameters params) {
return (List<CloudbreakUsage>) usageRepository.findAll(
Specifications.where(CloudbreakUsageSpecifications.usagesWithStringFields("account", params.getAccount()))
.and(CloudbreakUsageSpecifications.usagesWithStringFields("owner", params.getOwner()))
.and(CloudbreakUsageSpecifications.usagesSince(params.getSince()))
.and(CloudbreakUsageSpecifications.usagesBefore(params.getFilterEndDate()))
.and(CloudbreakUsageSpecifications.usagesWithStringFields("provider", params.getCloud()))
.and(CloudbreakUsageSpecifications.usagesWithStringFields("region", params.getRegion())));
}
}