package com.sequenceiq.cloudbreak.service.usages; import static com.sequenceiq.cloudbreak.cloud.model.Platform.platform; import java.util.List; import javax.inject.Inject; import org.springframework.stereotype.Service; import com.sequenceiq.cloudbreak.cloud.model.Platform; import com.sequenceiq.cloudbreak.domain.CloudbreakUsage; import com.sequenceiq.cloudbreak.service.price.PriceGenerator; @Service public class UsagePriceService { @Inject private List<PriceGenerator> priceGenerators; public Double calculateCostOfUsage(CloudbreakUsage usage) { PriceGenerator pg = selectPriceGeneratorByPlatform(platform(usage.getProvider())); Double result = 0.0; if (pg != null) { result = pg.calculate(usage.getInstanceType(), usage.getInstanceHours()); } return result; } private PriceGenerator selectPriceGeneratorByPlatform(Platform cloudPlatform) { PriceGenerator result = null; for (PriceGenerator generator : priceGenerators) { Platform generatorCloudPlatform = generator.getCloudPlatform(); if (cloudPlatform.equals(generatorCloudPlatform)) { result = generator; break; } } return result; } }