private CatalogOverridePhaseDefinitionModelDao getOrCreateOverridePhaseDefinitionFromTransaction(final PlanPhase parentPlanPhase, final String parentPhaseName, final Currency currency, final DateTime catalogEffectiveDate, final PlanPhasePriceOverride override, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverridePhaseDefinitionSqlDao sqlDao = inTransactionHandle.attach(CatalogOverridePhaseDefinitionSqlDao.class); if(override.getUsagePriceOverrides() == null || (override.getUsagePriceOverrides() != null && isUsageOverrideListHasOnlyNull(override.getUsagePriceOverrides()))) { return getOrCreatePhaseDefinitionFromTransactionWithoutUsageOverrides(parentPhaseName, catalogEffectiveDate, override, inTransactionHandle, context); if (curOverride != null) { Usage parentUsage = parentPlanPhase.getUsages()[i]; final CatalogOverrideUsageDefinitionModelDao createdOverrideUsageDefinitionModelDao = getOrCreateOverrideUsageDefinitionFromTransaction(parentUsage, currency, catalogEffectiveDate, curOverride, inTransactionHandle, context); overrideUsageDefinitionModelDaos[i] = createdOverrideUsageDefinitionModelDao; final List<Long> targetPhaseDefinitionRecordIds = getOverridePhaseDefinitionFromTransaction(overrideUsageDefinitionModelDaos, inTransactionHandle, context); List<CatalogOverridePhaseDefinitionModelDao> results = sqlDao.getByAttributes(parentPhaseName, override.getCurrency().name(), override.getFixedPrice(), override.getRecurringPrice(), context); createCatalogOverridePhaseUsageFromTransaction(i, overrideUsageDefinitionModelDaos[i], resultPhaseDef, inTransactionHandle, context);
private CatalogOverrideTierDefinitionModelDao getOrCreateOverrideTierDefinitionFromTransaction(final Tier parentTier, final TierPriceOverride tierPriceOverride,Currency currency, final DateTime catalogEffectiveDate, final Handle inTransactionHandle, final InternalCallContext context){ final List<TieredBlockPriceOverride> resolvedTierBlockOverrides = tierPriceOverride.getTieredBlockPriceOverrides(); final CatalogOverrideBlockDefinitionModelDao[] overrideBlockDefinitionModelDaos = new CatalogOverrideBlockDefinitionModelDao[resolvedTierBlockOverrides.size()]; for (int i = 0; i < resolvedTierBlockOverrides.size(); i++) { final TieredBlockPriceOverride curOverride = resolvedTierBlockOverrides.get(i); if (curOverride != null) { final CatalogOverrideBlockDefinitionModelDao createdOverrideBlockDefinitionModelDao = getOrCreateOverriddenBlockDefinitionFromTransaction(curOverride,catalogEffectiveDate, currency.name(), inTransactionHandle, context); overrideBlockDefinitionModelDaos[i] = createdOverrideBlockDefinitionModelDao; } } final CatalogOverrideTierDefinitionSqlDao sqlDao = inTransactionHandle.attach(CatalogOverrideTierDefinitionSqlDao.class); final Long targetTierDefinitionRecordId = getOverrideTierDefinitionFromTransaction(overrideBlockDefinitionModelDaos, inTransactionHandle, context); if (targetTierDefinitionRecordId != null) { return sqlDao.getByRecordId(targetTierDefinitionRecordId, context); } final CatalogOverrideTierDefinitionModelDao inputTierDef = new CatalogOverrideTierDefinitionModelDao(currency.name(), null, null, catalogEffectiveDate); sqlDao.create(inputTierDef, context); final Long recordId = sqlDao.getLastInsertId(); final CatalogOverrideTierDefinitionModelDao resultTierDef = sqlDao.getByRecordId(recordId, context); for (short i = 0; i < overrideBlockDefinitionModelDaos.length; i++) { if (overrideBlockDefinitionModelDaos[i] != null) { createCatalogOverrideTierBlockFromTransaction(i, overrideBlockDefinitionModelDaos[i], resultTierDef, inTransactionHandle, context); } } return resultTierDef; }
private CatalogOverrideUsageDefinitionModelDao getOrCreateOverrideUsageDefinitionFromTransaction(final Usage parentUsage, Currency currency, final DateTime catalogEffectiveDate, final UsagePriceOverride override, final Handle inTransactionHandle, final InternalCallContext context){ final List<TierPriceOverride> resolvedTierOverrides = override.getTierPriceOverrides(); final CatalogOverrideTierDefinitionModelDao[] overrideTierDefinitionModelDaos = new CatalogOverrideTierDefinitionModelDao[resolvedTierOverrides.size()]; for (int i = 0; i < resolvedTierOverrides.size(); i++) { final TierPriceOverride curOverride = resolvedTierOverrides.get(i); if (curOverride != null) { Tier parentTier = parentUsage.getTiers()[i]; final CatalogOverrideTierDefinitionModelDao createdOverrideTierDefinitionModelDao = getOrCreateOverrideTierDefinitionFromTransaction(parentTier, curOverride, currency, catalogEffectiveDate, inTransactionHandle, context); overrideTierDefinitionModelDaos[i] = createdOverrideTierDefinitionModelDao; } } final CatalogOverrideUsageDefinitionSqlDao sqlDao = inTransactionHandle.attach(CatalogOverrideUsageDefinitionSqlDao.class); final List<Long> targetUsageDefinitionRecordIds = getOverrideUsageDefinitionFromTransaction(overrideTierDefinitionModelDaos, inTransactionHandle, context); List<CatalogOverrideUsageDefinitionModelDao> results = sqlDao.getByAttributes(parentUsage.getName(), context); for(CatalogOverrideUsageDefinitionModelDao usage : results) { if (targetUsageDefinitionRecordIds != null && targetUsageDefinitionRecordIds.contains(usage.getRecordId())) { return usage; } } final CatalogOverrideUsageDefinitionModelDao inputUsageDef = new CatalogOverrideUsageDefinitionModelDao(parentUsage.getName(), parentUsage.getUsageType().name(), currency.name(), null, null, catalogEffectiveDate); sqlDao.create(inputUsageDef, context); final Long recordId = sqlDao.getLastInsertId(); final CatalogOverrideUsageDefinitionModelDao resultUsageDef = sqlDao.getByRecordId(recordId, context); for (short i = 0; i < overrideTierDefinitionModelDaos.length; i++) { if (overrideTierDefinitionModelDaos[i] != null) { createCatalogOverrideUsageTierFromTransaction(i, overrideTierDefinitionModelDaos[i], resultUsageDef, inTransactionHandle, context); } } return resultUsageDef; }
private List<Long> getOverrideUsageDefinitionFromTransaction(final CatalogOverrideTierDefinitionModelDao[] overrideTierDefinitionModelDaos, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverrideUsageTierSqlDao sqlDao = inTransactionHandle.attach(CatalogOverrideUsageTierSqlDao.class); final List<String> keys = new ArrayList<String>(); for (int i = 0; i < overrideTierDefinitionModelDaos.length; i++) { final CatalogOverrideTierDefinitionModelDao cur = overrideTierDefinitionModelDaos[i]; if (cur != null) { // Each key is the concatenation of the tier_number, tier_definition_record_id keys.add(getConcatenatedKey(i, cur.getRecordId()).toString()); } } return keys.size() > 0 ? sqlDao.getTargetUsageDefinition(keys, keys.size(), context) : null; }
private CatalogOverridePhaseDefinitionModelDao getOrCreatePhaseDefinitionFromTransactionWithoutUsageOverrides(String parentPhaseName,final DateTime catalogEffectiveDate, final PlanPhasePriceOverride override, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverridePhaseDefinitionSqlDao sqlDao = inTransactionHandle.attach(CatalogOverridePhaseDefinitionSqlDao.class); List<CatalogOverridePhaseDefinitionModelDao> resultPhases = sqlDao.getByAttributes(parentPhaseName, override.getCurrency().name(), override.getFixedPrice(), override.getRecurringPrice(), context); for(CatalogOverridePhaseDefinitionModelDao resultPhase : resultPhases) { if (resultPhase != null && getOverriddenPhaseUsages(resultPhase.getRecordId(), context).size() == 0) { return resultPhase; } } final CatalogOverridePhaseDefinitionModelDao phaseDef = new CatalogOverridePhaseDefinitionModelDao(parentPhaseName, override.getCurrency().name(), override.getFixedPrice(), override.getRecurringPrice(), catalogEffectiveDate); sqlDao.create(phaseDef, context); final Long recordId = sqlDao.getLastInsertId(); return sqlDao.getByRecordId(recordId, context); }
private Long getOverrideTierDefinitionFromTransaction(final CatalogOverrideBlockDefinitionModelDao[] overrideBlockDefinitionModelDaos, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverrideTierBlockSqlDao sqlDao = inTransactionHandle.attach(CatalogOverrideTierBlockSqlDao.class); final List<String> keys = new ArrayList<String>(); for (int i = 0; i < overrideBlockDefinitionModelDaos.length; i++) { final CatalogOverrideBlockDefinitionModelDao cur = overrideBlockDefinitionModelDaos[i]; if (cur != null) { // Each key is the concatenation of the block_number, block_definition_record_id keys.add(getConcatenatedKey(i, cur.getRecordId()).toString()); } } return keys.size() > 0 ? sqlDao.getTargetTierDefinition(keys, keys.size(), context) : null; }
private CatalogOverridePhaseDefinitionModelDao getOrCreatePhaseDefinitionFromTransactionWithoutUsageOverrides(String parentPhaseName,final DateTime catalogEffectiveDate, final PlanPhasePriceOverride override, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverridePhaseDefinitionSqlDao sqlDao = inTransactionHandle.attach(CatalogOverridePhaseDefinitionSqlDao.class); List<CatalogOverridePhaseDefinitionModelDao> resultPhases = sqlDao.getByAttributes(parentPhaseName, override.getCurrency().name(), override.getFixedPrice(), override.getRecurringPrice(), context); for(CatalogOverridePhaseDefinitionModelDao resultPhase : resultPhases) { if (resultPhase != null && getOverriddenPhaseUsages(resultPhase.getRecordId(), context).size() == 0) { return resultPhase; } } final CatalogOverridePhaseDefinitionModelDao phaseDef = new CatalogOverridePhaseDefinitionModelDao(parentPhaseName, override.getCurrency().name(), override.getFixedPrice(), override.getRecurringPrice(), catalogEffectiveDate); sqlDao.create(phaseDef, context); final Long recordId = sqlDao.getLastInsertId(); return sqlDao.getByRecordId(recordId, context); }
private CatalogOverridePhaseDefinitionModelDao getOrCreateOverridePhaseDefinitionFromTransaction(final PlanPhase parentPlanPhase, final String parentPhaseName, final Currency currency, final DateTime catalogEffectiveDate, final PlanPhasePriceOverride override, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverridePhaseDefinitionSqlDao sqlDao = inTransactionHandle.attach(CatalogOverridePhaseDefinitionSqlDao.class); if(override.getUsagePriceOverrides() == null || (override.getUsagePriceOverrides() != null && isUsageOverrideListHasOnlyNull(override.getUsagePriceOverrides()))) { return getOrCreatePhaseDefinitionFromTransactionWithoutUsageOverrides(parentPhaseName, catalogEffectiveDate, override, inTransactionHandle, context); if (curOverride != null) { Usage parentUsage = parentPlanPhase.getUsages()[i]; final CatalogOverrideUsageDefinitionModelDao createdOverrideUsageDefinitionModelDao = getOrCreateOverrideUsageDefinitionFromTransaction(parentUsage, currency, catalogEffectiveDate, curOverride, inTransactionHandle, context); overrideUsageDefinitionModelDaos[i] = createdOverrideUsageDefinitionModelDao; final List<Long> targetPhaseDefinitionRecordIds = getOverridePhaseDefinitionFromTransaction(overrideUsageDefinitionModelDaos, inTransactionHandle, context); List<CatalogOverridePhaseDefinitionModelDao> results = sqlDao.getByAttributes(parentPhaseName, override.getCurrency().name(), override.getFixedPrice(), override.getRecurringPrice(), context); createCatalogOverridePhaseUsageFromTransaction(i, overrideUsageDefinitionModelDaos[i], resultPhaseDef, inTransactionHandle, context);
private CatalogOverrideTierDefinitionModelDao getOrCreateOverrideTierDefinitionFromTransaction(final Tier parentTier, final TierPriceOverride tierPriceOverride,Currency currency, final DateTime catalogEffectiveDate, final Handle inTransactionHandle, final InternalCallContext context){ final List<TieredBlockPriceOverride> resolvedTierBlockOverrides = tierPriceOverride.getTieredBlockPriceOverrides(); final CatalogOverrideBlockDefinitionModelDao[] overrideBlockDefinitionModelDaos = new CatalogOverrideBlockDefinitionModelDao[resolvedTierBlockOverrides.size()]; for (int i = 0; i < resolvedTierBlockOverrides.size(); i++) { final TieredBlockPriceOverride curOverride = resolvedTierBlockOverrides.get(i); if (curOverride != null) { final CatalogOverrideBlockDefinitionModelDao createdOverrideBlockDefinitionModelDao = getOrCreateOverriddenBlockDefinitionFromTransaction(curOverride,catalogEffectiveDate, currency.name(), inTransactionHandle, context); overrideBlockDefinitionModelDaos[i] = createdOverrideBlockDefinitionModelDao; } } final CatalogOverrideTierDefinitionSqlDao sqlDao = inTransactionHandle.attach(CatalogOverrideTierDefinitionSqlDao.class); final Long targetTierDefinitionRecordId = getOverrideTierDefinitionFromTransaction(overrideBlockDefinitionModelDaos, inTransactionHandle, context); if (targetTierDefinitionRecordId != null) { return sqlDao.getByRecordId(targetTierDefinitionRecordId, context); } final CatalogOverrideTierDefinitionModelDao inputTierDef = new CatalogOverrideTierDefinitionModelDao(currency.name(), null, null, catalogEffectiveDate); sqlDao.create(inputTierDef, context); final Long recordId = sqlDao.getLastInsertId(); final CatalogOverrideTierDefinitionModelDao resultTierDef = sqlDao.getByRecordId(recordId, context); for (short i = 0; i < overrideBlockDefinitionModelDaos.length; i++) { if (overrideBlockDefinitionModelDaos[i] != null) { createCatalogOverrideTierBlockFromTransaction(i, overrideBlockDefinitionModelDaos[i], resultTierDef, inTransactionHandle, context); } } return resultTierDef; }
private CatalogOverrideUsageDefinitionModelDao getOrCreateOverrideUsageDefinitionFromTransaction(final Usage parentUsage, Currency currency, final DateTime catalogEffectiveDate, final UsagePriceOverride override, final Handle inTransactionHandle, final InternalCallContext context){ final List<TierPriceOverride> resolvedTierOverrides = override.getTierPriceOverrides(); final CatalogOverrideTierDefinitionModelDao[] overrideTierDefinitionModelDaos = new CatalogOverrideTierDefinitionModelDao[resolvedTierOverrides.size()]; for (int i = 0; i < resolvedTierOverrides.size(); i++) { final TierPriceOverride curOverride = resolvedTierOverrides.get(i); if (curOverride != null) { Tier parentTier = parentUsage.getTiers()[i]; final CatalogOverrideTierDefinitionModelDao createdOverrideTierDefinitionModelDao = getOrCreateOverrideTierDefinitionFromTransaction(parentTier, curOverride, currency, catalogEffectiveDate, inTransactionHandle, context); overrideTierDefinitionModelDaos[i] = createdOverrideTierDefinitionModelDao; } } final CatalogOverrideUsageDefinitionSqlDao sqlDao = inTransactionHandle.attach(CatalogOverrideUsageDefinitionSqlDao.class); final List<Long> targetUsageDefinitionRecordIds = getOverrideUsageDefinitionFromTransaction(overrideTierDefinitionModelDaos, inTransactionHandle, context); List<CatalogOverrideUsageDefinitionModelDao> results = sqlDao.getByAttributes(parentUsage.getName(), context); for(CatalogOverrideUsageDefinitionModelDao usage : results) { if (targetUsageDefinitionRecordIds != null && targetUsageDefinitionRecordIds.contains(usage.getRecordId())) { return usage; } } final CatalogOverrideUsageDefinitionModelDao inputUsageDef = new CatalogOverrideUsageDefinitionModelDao(parentUsage.getName(), parentUsage.getUsageType().name(), currency.name(), null, null, catalogEffectiveDate); sqlDao.create(inputUsageDef, context); final Long recordId = sqlDao.getLastInsertId(); final CatalogOverrideUsageDefinitionModelDao resultUsageDef = sqlDao.getByRecordId(recordId, context); for (short i = 0; i < overrideTierDefinitionModelDaos.length; i++) { if (overrideTierDefinitionModelDaos[i] != null) { createCatalogOverrideUsageTierFromTransaction(i, overrideTierDefinitionModelDaos[i], resultUsageDef, inTransactionHandle, context); } } return resultUsageDef; }
private List<Long> getOverridePhaseDefinitionFromTransaction(final CatalogOverrideUsageDefinitionModelDao[] overrideUsageDefinitionModelDaos, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverridePhaseUsageSqlDao sqlDao = inTransactionHandle.attach(CatalogOverridePhaseUsageSqlDao.class); final List<String> keys = new ArrayList<String>(); for (int i = 0; i < overrideUsageDefinitionModelDaos.length; i++) { final CatalogOverrideUsageDefinitionModelDao cur = overrideUsageDefinitionModelDaos[i]; // Each key is the concatenation of the usage_number, usage_definition_record_id if (cur != null) { keys.add(getConcatenatedKey(i, cur.getRecordId()).toString()); } } return keys.size() > 0 ? sqlDao.getTargetPhaseDefinition(keys, keys.size(), context) : null; }
private Long getOverridePlanDefinitionFromTransaction(final CatalogOverridePhaseDefinitionModelDao[] overridePhaseDefinitionModelDaos, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverridePlanPhaseSqlDao sqlDao = inTransactionHandle.attach(CatalogOverridePlanPhaseSqlDao.class); final List<String> keys = new ArrayList<String>(); for (int i = 0; i < overridePhaseDefinitionModelDaos.length; i++) { final CatalogOverridePhaseDefinitionModelDao cur = overridePhaseDefinitionModelDaos[i]; if (cur != null) { // Each key is the concatenation of the phase_number, phase_definition_record_id keys.add(getConcatenatedKey(i, cur.getRecordId()).toString()); } } return keys.size() > 0 ? sqlDao.getTargetPlanDefinition(keys, keys.size(), context) : null; }
private Long getOverridePlanDefinitionFromTransaction(final CatalogOverridePhaseDefinitionModelDao[] overridePhaseDefinitionModelDaos, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverridePlanPhaseSqlDao sqlDao = inTransactionHandle.attach(CatalogOverridePlanPhaseSqlDao.class); final List<String> keys = new ArrayList<String>(); for (int i = 0; i < overridePhaseDefinitionModelDaos.length; i++) { final CatalogOverridePhaseDefinitionModelDao cur = overridePhaseDefinitionModelDaos[i]; if (cur != null) { // Each key is the concatenation of the phase_number, phase_definition_record_id keys.add(getConcatenatedKey(i, cur.getRecordId()).toString()); } } return keys.size() > 0 ? sqlDao.getTargetPlanDefinition(keys, keys.size(), context) : null; }
private List<Long> getOverridePhaseDefinitionFromTransaction(final CatalogOverrideUsageDefinitionModelDao[] overrideUsageDefinitionModelDaos, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverridePhaseUsageSqlDao sqlDao = inTransactionHandle.attach(CatalogOverridePhaseUsageSqlDao.class); final List<String> keys = new ArrayList<String>(); for (int i = 0; i < overrideUsageDefinitionModelDaos.length; i++) { final CatalogOverrideUsageDefinitionModelDao cur = overrideUsageDefinitionModelDaos[i]; // Each key is the concatenation of the usage_number, usage_definition_record_id if (cur != null) { keys.add(getConcatenatedKey(i, cur.getRecordId()).toString()); } } return keys.size() > 0 ? sqlDao.getTargetPhaseDefinition(keys, keys.size(), context) : null; }
private Long getOverrideTierDefinitionFromTransaction(final CatalogOverrideBlockDefinitionModelDao[] overrideBlockDefinitionModelDaos, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverrideTierBlockSqlDao sqlDao = inTransactionHandle.attach(CatalogOverrideTierBlockSqlDao.class); final List<String> keys = new ArrayList<String>(); for (int i = 0; i < overrideBlockDefinitionModelDaos.length; i++) { final CatalogOverrideBlockDefinitionModelDao cur = overrideBlockDefinitionModelDaos[i]; if (cur != null) { // Each key is the concatenation of the block_number, block_definition_record_id keys.add(getConcatenatedKey(i, cur.getRecordId()).toString()); } } return keys.size() > 0 ? sqlDao.getTargetTierDefinition(keys, keys.size(), context) : null; }
private List<Long> getOverrideUsageDefinitionFromTransaction(final CatalogOverrideTierDefinitionModelDao[] overrideTierDefinitionModelDaos, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverrideUsageTierSqlDao sqlDao = inTransactionHandle.attach(CatalogOverrideUsageTierSqlDao.class); final List<String> keys = new ArrayList<String>(); for (int i = 0; i < overrideTierDefinitionModelDaos.length; i++) { final CatalogOverrideTierDefinitionModelDao cur = overrideTierDefinitionModelDaos[i]; if (cur != null) { // Each key is the concatenation of the tier_number, tier_definition_record_id keys.add(getConcatenatedKey(i, cur.getRecordId()).toString()); } } return keys.size() > 0 ? sqlDao.getTargetUsageDefinition(keys, keys.size(), context) : null; }