@Test(groups = "slow") public void testBasic() throws Exception { final CatalogOverrideTierDefinitionModelDao obj1 = new CatalogOverrideTierDefinitionModelDao("USD", BigDecimal.ONE,null, clock.getUTCNow()); performTestInTransaction(new WithCatalogOverrideTierDefinitionSqlDaoTransaction<Void>() { @Override public Void doTransaction(final CatalogOverrideTierDefinitionSqlDao sqlDao) { sqlDao.create(obj1, internalCallContext); final Long lastInserted = sqlDao.getLastInsertId(); final CatalogOverrideTierDefinitionModelDao rehydrated = sqlDao.getByRecordId(lastInserted, internalCallContext); assertEquals(rehydrated.getFixedPrice().compareTo(obj1.getFixedPrice()), 0); assertEquals(rehydrated.getCurrency(), obj1.getCurrency()); return null; } }); }
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; }
@Test(groups = "slow") public void testBasic() throws Exception { final CatalogOverrideTierDefinitionModelDao obj1 = new CatalogOverrideTierDefinitionModelDao("USD", BigDecimal.ONE,null, clock.getUTCNow()); performTestInTransaction(new WithCatalogOverrideTierDefinitionSqlDaoTransaction<Void>() { @Override public Void doTransaction(final CatalogOverrideTierDefinitionSqlDao sqlDao) { sqlDao.create(obj1, internalCallContext); final Long lastInserted = sqlDao.getLastInsertId(); final CatalogOverrideTierDefinitionModelDao rehydrated = sqlDao.getByRecordId(lastInserted, internalCallContext); assertEquals(rehydrated.getFixedPrice().compareTo(obj1.getFixedPrice()), 0); assertEquals(rehydrated.getCurrency(), obj1.getCurrency()); return null; } }); }
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; }