use of org.killbill.billing.catalog.dao.CatalogOverrideTierDefinitionModelDao in project killbill by killbill.
the class DefaultOverriddenPlanCache method getTierPriceOverrides.
List<TierPriceOverride> getTierPriceOverrides(Usage curUsage, CatalogOverrideUsageDefinitionModelDao overriddenUsage, final InternalTenantContext context) {
final List<TierPriceOverride> tierPriceOverrides = new ArrayList<TierPriceOverride>();
final List<CatalogOverrideTierDefinitionModelDao> tierDefs = overrideDao.getOverriddenUsageTiers(overriddenUsage.getRecordId(), context);
for (int i = 0; i < curUsage.getTiers().length; i++) {
final Tier curTier = curUsage.getTiers()[i];
final TieredBlock[] curTieredBlocks = curTier.getTieredBlocks();
final CatalogOverrideTierDefinitionModelDao overriddenTier = Iterables.tryFind(tierDefs, new Predicate<CatalogOverrideTierDefinitionModelDao>() {
@Override
public boolean apply(final CatalogOverrideTierDefinitionModelDao input) {
final List<CatalogOverrideBlockDefinitionModelDao> blockDefs = overrideDao.getOverriddenTierBlocks(input.getRecordId(), context);
for (CatalogOverrideBlockDefinitionModelDao blockDef : blockDefs) {
String unitName = blockDef.getParentUnitName();
Double max = blockDef.getMax();
Double size = blockDef.getSize();
for (TieredBlock curTieredBlock : curTieredBlocks) {
if (unitName.equals(curTieredBlock.getUnit().getName()) && Double.compare(size, curTieredBlock.getSize()) == 0 && Double.compare(max, curTieredBlock.getMax()) == 0) {
return true;
}
}
}
return false;
}
}).orNull();
if (overriddenTier != null) {
List<TieredBlockPriceOverride> tieredBlockPriceOverrides = getTieredBlockPriceOverrides(curTier, overriddenTier, context);
tierPriceOverrides.add(new DefaultTierPriceOverride(tieredBlockPriceOverrides));
}
}
return tierPriceOverrides;
}
Aggregations