@Test(groups = "slow") public void testGetByAttributes() throws Exception { final CatalogOverrideBlockDefinitionModelDao objWithNoNullPrice = new CatalogOverrideBlockDefinitionModelDao("p2", "USD", BigDecimal.ONE, new Double("1"), new Double("5"), clock.getUTCNow()); performTestInTransaction(new WithCatalogOverrideBlockDefinitionSqlDaoTransaction<Void>() { @Override public Void doTransaction(final CatalogOverrideBlockDefinitionSqlDao sqlDao) { sqlDao.create(objWithNoNullPrice, internalCallContext); checkRehydrated(objWithNoNullPrice, sqlDao); return null; } private void checkRehydrated(final CatalogOverrideBlockDefinitionModelDao obj, final CatalogOverrideBlockDefinitionSqlDao sqlDao) { final CatalogOverrideBlockDefinitionModelDao rehydrated = sqlDao.getByAttributes(obj.getParentUnitName(), obj.getCurrency(), obj.getPrice(),obj.getMax(),obj.getSize(), internalCallContext); assertEquals(rehydrated.getParentUnitName(), obj.getParentUnitName()); assertEquals(rehydrated.getCurrency(), obj.getCurrency()); assertEquals(rehydrated.getPrice().compareTo(obj.getPrice()), 0); assertEquals(rehydrated.getSize(), obj.getSize()); assertEquals(rehydrated.getMax(), obj.getMax()); } }); }
List<TieredBlockPriceOverride> getTieredBlockPriceOverrides(Tier curTier, CatalogOverrideTierDefinitionModelDao overriddenTier, final InternalTenantContext context) { final List<TieredBlockPriceOverride> blockPriceOverrides = new ArrayList<TieredBlockPriceOverride>(); final List<CatalogOverrideBlockDefinitionModelDao> blockDefs = overrideDao.getOverriddenTierBlocks(overriddenTier.getRecordId(), context); for (int i = 0; i < curTier.getTieredBlocks().length; i++) { final TieredBlock curTieredBlock = curTier.getTieredBlocks()[i]; final CatalogOverrideBlockDefinitionModelDao overriddenTierBlock = Iterables.tryFind(blockDefs, new Predicate<CatalogOverrideBlockDefinitionModelDao>() { @Override public boolean apply(final CatalogOverrideBlockDefinitionModelDao input) { return (input.getParentUnitName().equals(curTieredBlock.getUnit().getName()) && Double.compare(input.getSize(), curTieredBlock.getSize()) == 0 && Double.compare(input.getMax(), curTieredBlock.getMax()) == 0); } }).orNull(); if (overriddenTierBlock != null) { blockPriceOverrides.add(new DefaultTieredBlockPriceOverride(overriddenTierBlock.getParentUnitName(), overriddenTierBlock.getSize(), overriddenTierBlock.getPrice(), Currency.valueOf(overriddenTierBlock.getCurrency()), overriddenTierBlock.getMax())); } } return blockPriceOverrides; } }
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; }
@Override public boolean apply(final CatalogOverrideBlockDefinitionModelDao input) { return (input.getParentUnitName().equals(curTieredBlock.getUnit().getName()) && Double.compare(input.getSize(), curTieredBlock.getSize()) == 0 && Double.compare(input.getMax(), curTieredBlock.getMax()) == 0); } }).orNull();
@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; }
private void checkRehydrated(final CatalogOverrideBlockDefinitionModelDao obj, final CatalogOverrideBlockDefinitionSqlDao sqlDao) { final CatalogOverrideBlockDefinitionModelDao rehydrated = sqlDao.getByAttributes(obj.getParentUnitName(), obj.getCurrency(), obj.getPrice(),obj.getMax(),obj.getSize(), internalCallContext); assertEquals(rehydrated.getParentUnitName(), obj.getParentUnitName()); assertEquals(rehydrated.getCurrency(), obj.getCurrency()); assertEquals(rehydrated.getPrice().compareTo(obj.getPrice()), 0); assertEquals(rehydrated.getSize(), obj.getSize()); assertEquals(rehydrated.getMax(), obj.getMax()); } });
@Override public boolean apply(final CatalogOverrideBlockDefinitionModelDao input) { return (input.getParentUnitName().equals(curTieredBlock.getUnit().getName()) && Double.compare(input.getSize(), curTieredBlock.getSize()) == 0 && Double.compare(input.getMax(), curTieredBlock.getMax()) == 0); } }).orNull();
@Test(groups = "slow") public void testBasic() throws Exception { final CatalogOverrideBlockDefinitionModelDao obj1 = new CatalogOverrideBlockDefinitionModelDao("p1", "USD", BigDecimal.ONE, 1 , 1, clock.getUTCNow()); performTestInTransaction(new WithCatalogOverrideBlockDefinitionSqlDaoTransaction<Void>() { @Override public Void doTransaction(final CatalogOverrideBlockDefinitionSqlDao sqlDao) { sqlDao.create(obj1, internalCallContext); final Long lastInserted = sqlDao.getLastInsertId(); final CatalogOverrideBlockDefinitionModelDao rehydrated = sqlDao.getByRecordId(lastInserted, internalCallContext); assertEquals(rehydrated.getParentUnitName(), obj1.getParentUnitName()); assertEquals(rehydrated.getCurrency(), obj1.getCurrency()); assertEquals(rehydrated.getPrice().compareTo(obj1.getPrice()), 0); assertEquals(rehydrated.getSize(), obj1.getSize()); assertEquals(rehydrated.getMax(), obj1.getMax()); return null; } }); }
private void createCatalogOverrideTierBlockFromTransaction(final short blockNum, final CatalogOverrideBlockDefinitionModelDao blockDef, final CatalogOverrideTierDefinitionModelDao tierDef, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverrideTierBlockSqlDao sqlDao = inTransactionHandle.attach(CatalogOverrideTierBlockSqlDao.class); final CatalogOverrideTierBlockModelDao modelDao = new CatalogOverrideTierBlockModelDao(blockNum, blockDef.getRecordId(), tierDef.getRecordId()); sqlDao.create(modelDao, context); }
@Override public Void doTransaction(final CatalogOverrideBlockDefinitionSqlDao sqlDao) { sqlDao.create(obj1, internalCallContext); final Long lastInserted = sqlDao.getLastInsertId(); final CatalogOverrideBlockDefinitionModelDao rehydrated = sqlDao.getByRecordId(lastInserted, internalCallContext); assertEquals(rehydrated.getParentUnitName(), obj1.getParentUnitName()); assertEquals(rehydrated.getCurrency(), obj1.getCurrency()); assertEquals(rehydrated.getPrice().compareTo(obj1.getPrice()), 0); assertEquals(rehydrated.getSize(), obj1.getSize()); assertEquals(rehydrated.getMax(), obj1.getMax()); return null; } });
@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; }
private CatalogOverrideBlockDefinitionModelDao getOrCreateOverriddenBlockDefinitionFromTransaction(TieredBlockPriceOverride tieredBlockPriceOverride,final DateTime catalogEffectiveDate, String currency, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverrideBlockDefinitionSqlDao sqlDao = inTransactionHandle.attach(CatalogOverrideBlockDefinitionSqlDao.class); CatalogOverrideBlockDefinitionModelDao result = sqlDao.getByAttributes(tieredBlockPriceOverride.getUnitName(), currency, tieredBlockPriceOverride.getPrice(), tieredBlockPriceOverride.getMax(), tieredBlockPriceOverride.getSize(),context); if (result == null) { final CatalogOverrideBlockDefinitionModelDao blockDef = new CatalogOverrideBlockDefinitionModelDao(tieredBlockPriceOverride.getUnitName(),currency, tieredBlockPriceOverride.getPrice(), tieredBlockPriceOverride.getSize(),tieredBlockPriceOverride.getMax(), catalogEffectiveDate); sqlDao.create(blockDef, context); final Long recordId = sqlDao.getLastInsertId(); result = sqlDao.getByRecordId(recordId, context); } return result; }
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; }
assertEquals(tierBlocks.size(), 1); final CatalogOverrideBlockDefinitionModelDao curTieredBlock = tierBlocks.get(0); assertEquals(curTieredBlock.getParentUnitName(),tieredBlockPriceOverride.getUnitName()); assertEquals(curTieredBlock.getPrice().compareTo(tieredBlockPriceOverride.getPrice()), 0); assertEquals(curTieredBlock.getSize(),tieredBlockPriceOverride.getSize()); assertEquals(curTieredBlock.getMax(),tieredBlockPriceOverride.getMax());
@Test(groups = "slow") public void testGetByAttributes() throws Exception { final CatalogOverrideBlockDefinitionModelDao objWithNoNullPrice = new CatalogOverrideBlockDefinitionModelDao("p2", "USD", BigDecimal.ONE, new Double("1"), new Double("5"), clock.getUTCNow()); performTestInTransaction(new WithCatalogOverrideBlockDefinitionSqlDaoTransaction<Void>() { @Override public Void doTransaction(final CatalogOverrideBlockDefinitionSqlDao sqlDao) { sqlDao.create(objWithNoNullPrice, internalCallContext); checkRehydrated(objWithNoNullPrice, sqlDao); return null; } private void checkRehydrated(final CatalogOverrideBlockDefinitionModelDao obj, final CatalogOverrideBlockDefinitionSqlDao sqlDao) { final CatalogOverrideBlockDefinitionModelDao rehydrated = sqlDao.getByAttributes(obj.getParentUnitName(), obj.getCurrency(), obj.getPrice(),obj.getMax(),obj.getSize(), internalCallContext); assertEquals(rehydrated.getParentUnitName(), obj.getParentUnitName()); assertEquals(rehydrated.getCurrency(), obj.getCurrency()); assertEquals(rehydrated.getPrice().compareTo(obj.getPrice()), 0); assertEquals(rehydrated.getSize(), obj.getSize()); assertEquals(rehydrated.getMax(), obj.getMax()); } }); }
private void createCatalogOverrideTierBlockFromTransaction(final short blockNum, final CatalogOverrideBlockDefinitionModelDao blockDef, final CatalogOverrideTierDefinitionModelDao tierDef, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverrideTierBlockSqlDao sqlDao = inTransactionHandle.attach(CatalogOverrideTierBlockSqlDao.class); final CatalogOverrideTierBlockModelDao modelDao = new CatalogOverrideTierBlockModelDao(blockNum, blockDef.getRecordId(), tierDef.getRecordId()); sqlDao.create(modelDao, context); }
assertEquals(tierBlocks.size(), 1); final CatalogOverrideBlockDefinitionModelDao curTieredBlock = tierBlocks.get(0); assertEquals(curTieredBlock.getParentUnitName(),tieredBlockPriceOverride.getUnitName()); assertEquals(curTieredBlock.getPrice().compareTo(tieredBlockPriceOverride.getPrice()), 0); assertEquals(curTieredBlock.getSize(),tieredBlockPriceOverride.getSize()); assertEquals(curTieredBlock.getMax(),tieredBlockPriceOverride.getMax());
@Test(groups = "slow") public void testBasic() throws Exception { final CatalogOverrideBlockDefinitionModelDao obj1 = new CatalogOverrideBlockDefinitionModelDao("p1", "USD", BigDecimal.ONE, 1 , 1, clock.getUTCNow()); performTestInTransaction(new WithCatalogOverrideBlockDefinitionSqlDaoTransaction<Void>() { @Override public Void doTransaction(final CatalogOverrideBlockDefinitionSqlDao sqlDao) { sqlDao.create(obj1, internalCallContext); final Long lastInserted = sqlDao.getLastInsertId(); final CatalogOverrideBlockDefinitionModelDao rehydrated = sqlDao.getByRecordId(lastInserted, internalCallContext); assertEquals(rehydrated.getParentUnitName(), obj1.getParentUnitName()); assertEquals(rehydrated.getCurrency(), obj1.getCurrency()); assertEquals(rehydrated.getPrice().compareTo(obj1.getPrice()), 0); assertEquals(rehydrated.getSize(), obj1.getSize()); assertEquals(rehydrated.getMax(), obj1.getMax()); return null; } }); }
private void checkRehydrated(final CatalogOverrideBlockDefinitionModelDao obj, final CatalogOverrideBlockDefinitionSqlDao sqlDao) { final CatalogOverrideBlockDefinitionModelDao rehydrated = sqlDao.getByAttributes(obj.getParentUnitName(), obj.getCurrency(), obj.getPrice(),obj.getMax(),obj.getSize(), internalCallContext); assertEquals(rehydrated.getParentUnitName(), obj.getParentUnitName()); assertEquals(rehydrated.getCurrency(), obj.getCurrency()); assertEquals(rehydrated.getPrice().compareTo(obj.getPrice()), 0); assertEquals(rehydrated.getSize(), obj.getSize()); assertEquals(rehydrated.getMax(), obj.getMax()); } });
private CatalogOverrideBlockDefinitionModelDao getOrCreateOverriddenBlockDefinitionFromTransaction(TieredBlockPriceOverride tieredBlockPriceOverride,final DateTime catalogEffectiveDate, String currency, final Handle inTransactionHandle, final InternalCallContext context) { final CatalogOverrideBlockDefinitionSqlDao sqlDao = inTransactionHandle.attach(CatalogOverrideBlockDefinitionSqlDao.class); CatalogOverrideBlockDefinitionModelDao result = sqlDao.getByAttributes(tieredBlockPriceOverride.getUnitName(), currency, tieredBlockPriceOverride.getPrice(), tieredBlockPriceOverride.getMax(), tieredBlockPriceOverride.getSize(),context); if (result == null) { final CatalogOverrideBlockDefinitionModelDao blockDef = new CatalogOverrideBlockDefinitionModelDao(tieredBlockPriceOverride.getUnitName(),currency, tieredBlockPriceOverride.getPrice(), tieredBlockPriceOverride.getSize(),tieredBlockPriceOverride.getMax(), catalogEffectiveDate); sqlDao.create(blockDef, context); final Long recordId = sqlDao.getLastInsertId(); result = sqlDao.getByRecordId(recordId, context); } return result; }