protected TenantContext buildTenantContext(final InternalTenantContext context) { return context.toTenantContext(nonEntityDao.retrieveIdFromObject(context.getTenantRecordId(), ObjectType.TENANT)); }
public InternalTenantContext createInternalTenantContext(final UUID accountId, final InternalTenantContext context) { final Long tenantRecordId = context.getTenantRecordId(); final Long accountRecordId = getAccountRecordId(accountId, ObjectType.ACCOUNT); return new InternalTenantContext(tenantRecordId, accountRecordId); }
public void exportDataForAccount(final DatabaseExportOutputStream out, final InternalTenantContext context) { if (context.getAccountRecordId() == null || context.getTenantRecordId() == null) { return; } final List<DefaultColumnInfo> columns = databaseSchemaDao.getColumnInfoList(); if (columns.size() == 0) { return; } final List<ColumnInfo> columnsForTable = new ArrayList<ColumnInfo>(); // The list of columns is ordered by table name first String lastSeenTableName = columns.get(0).getTableName(); for (final ColumnInfo column : columns) { if (!column.getTableName().equals(lastSeenTableName)) { exportDataForAccountAndTable(out, columnsForTable, context); lastSeenTableName = column.getTableName(); columnsForTable.clear(); } columnsForTable.add(column); } exportDataForAccountAndTable(out, columnsForTable, context); }
private List<BlockingState> addBlockingStatesNotOnDisk(final List<BlockingState> blockingStatesOnDisk, final InternalTenantContext context) { final Collection<BlockingState> blockingStatesOnDiskCopy = new LinkedList<BlockingState>(blockingStatesOnDisk); // Find all base entitlements that we care about (for which we want to find future cancelled add-ons) final Iterable<SubscriptionBase> baseSubscriptionsToConsider; final Iterable<EventsStream> eventsStreams; try { final Map<UUID, List<SubscriptionBase>> subscriptions = subscriptionInternalApi.getSubscriptionsForAccount(context); baseSubscriptionsToConsider = Iterables.<SubscriptionBase>filter(Iterables.<SubscriptionBase>concat(subscriptions.values()), new Predicate<SubscriptionBase>() { @Override public boolean apply(final SubscriptionBase input) { return ProductCategory.BASE.equals(input.getCategory()); } }); eventsStreams = Iterables.<EventsStream>concat(eventsStreamBuilder.buildForAccount(subscriptions, context).getEventsStreams().values()); } catch (EntitlementApiException e) { log.error("Error computing blocking states for addons for account record id " + context.getAccountRecordId(), e); throw new RuntimeException(e); } return addBlockingStatesNotOnDisk(null, null, blockingStatesOnDiskCopy, baseSubscriptionsToConsider, eventsStreams); }
/** * Create an internal tenant callcontext * * @param tenantRecordId tenant_record_id (cannot be null) * @param accountRecordId account_record_id (cannot be null for INSERT operations) * @return internal tenant callcontext */ public InternalTenantContext createInternalTenantContext(final Long tenantRecordId, @Nullable final Long accountRecordId) { //Preconditions.checkNotNull(tenantRecordId, "tenantRecordId cannot be null"); return new InternalTenantContext(tenantRecordId, accountRecordId); }
@Override public Void withHandle(final Handle handle) throws Exception { final ResultIterator<Map<String, Object>> iterator = handle.createQuery(queryBuilder.toString()) .bind("accountRecordId", context.getAccountRecordId()) .bind("tenantRecordId", context.getTenantRecordId()) .iterator(); try { while (iterator.hasNext()) { final Map<String, Object> row = iterator.next(); out.write(row); } } finally { iterator.close(); } return null; } });
@Override public List<InvoiceModelDao> getAllInvoicesByAccount(final InternalTenantContext context) { final List<InvoiceModelDao> result = new ArrayList<InvoiceModelDao>(); synchronized (monitor) { final UUID accountId = accountRecordIds.inverse().get(context.getAccountRecordId()); for (final InvoiceModelDao invoice : invoices.values()) { if (accountId.equals(invoice.getAccountId())) { result.add(invoice); } } } return result; }
public InternalTenantContext createInternalTenantContext(final UUID accountId, final TenantContext context) { final Long tenantRecordId = getTenantRecordId(context); final Long accountRecordId = getAccountRecordId(accountId, ObjectType.ACCOUNT); return new InternalTenantContext(tenantRecordId, accountRecordId); }
private TenantContext buildTenantContext(final InternalTenantContext context) { return context.toTenantContext(nonEntityDao.retrieveIdFromObject(context.getTenantRecordId(), ObjectType.TENANT)); }
@Override public void bind(final SQLStatement q, final InternalTenantContextBinder bind, final InternalTenantContext context) { if (context.getTenantRecordId() == null) { q.bind("tenantRecordId", context.getTenantRecordId()); if (context.getAccountRecordId() == null) { q.bindNull("accountRecordId", Types.INTEGER); } else { q.bind("accountRecordId", context.getAccountRecordId());
@Override public List<InvoiceModelDao> getInvoicesByAccount(final InternalTenantContext context) { final List<InvoiceModelDao> result = new ArrayList<InvoiceModelDao>(); synchronized (monitor) { final UUID accountId = accountRecordIds.inverse().get(context.getAccountRecordId()); for (final InvoiceModelDao invoice : invoices.values()) { if (accountId.equals(invoice.getAccountId()) && !invoice.isMigrated()) { result.add(invoice); } } } return result; }
@Override public Tenant getTenantById(final UUID id) throws TenantApiException { // TODO - API cleanup? final TenantModelDao tenant = tenantDao.getById(id, new InternalTenantContext(null, null)); if (tenant == null) { throw new TenantApiException(ErrorCode.TENANT_DOES_NOT_EXIST_FOR_ID, id); } return new DefaultTenant(tenant); }
private void computeEntitlementsToCancel(final Account account, final List<Entitlement> result, final InternalTenantContext context) throws EntitlementApiException { final UUID tenantId = nonEntityDao.retrieveIdFromObject(context.getTenantRecordId(), ObjectType.TENANT); final List<Entitlement> allEntitlementsForAccountId = entitlementApi.getAllEntitlementsForAccountId(account.getId(), context.toTenantContext(tenantId)); // Entitlement is smart enough and will cancel the associated add-ons. See also discussion in https://github.com/killbill/killbill/issues/94 final Collection<Entitlement> allEntitlementsButAddonsForAccountId = Collections2.<Entitlement>filter(allEntitlementsForAccountId, new Predicate<Entitlement>() { @Override public boolean apply(final Entitlement entitlement) { return !ProductCategory.ADD_ON.equals(entitlement.getLastActiveProductCategory()); } }); result.addAll(allEntitlementsButAddonsForAccountId); }
public DateTime fromNowAndReferenceTime(final DateTime referenceDateTime, final InternalTenantContext callContext) throws EntitlementApiException { try { final Account account = accountApi.getAccountByRecordId(callContext.getAccountRecordId(), callContext); return fromNowAndReferenceTime(referenceDateTime, account.getTimeZone()); } catch (AccountApiException e) { throw new EntitlementApiException(e); } }
public DateTime fromLocalDateAndReferenceTime(final LocalDate requestedDate, final DateTime referenceDateTime, final InternalTenantContext callContext) throws EntitlementApiException { try { final Account account = accountApi.getAccountByRecordId(callContext.getAccountRecordId(), callContext); return fromLocalDateAndReferenceTime(requestedDate, referenceDateTime, account.getTimeZone()); } catch (AccountApiException e) { throw new EntitlementApiException(e); } }
account = accountInternalApi.getAccountByRecordId(internalTenantContext.getAccountRecordId(), internalTenantContext); } catch (AccountApiException e) { throw new EntitlementApiException(e);
@Override public List<InvoiceModelDao> getInvoicesByAccount(final LocalDate fromDate, final InternalTenantContext context) { final List<InvoiceModelDao> invoicesForAccount = new ArrayList<InvoiceModelDao>(); synchronized (monitor) { final UUID accountId = accountRecordIds.inverse().get(context.getAccountRecordId()); for (final InvoiceModelDao invoice : getAll(context)) { if (accountId.equals(invoice.getAccountId()) && !invoice.getTargetDate().isBefore(fromDate) && !invoice.isMigrated()) { invoicesForAccount.add(invoice); } } } return invoicesForAccount; }
@Override public DefaultAccountAuditLogs getAuditLogsForAccountRecordId(final AuditLevel auditLevel, final InternalTenantContext context) { final UUID accountId = nonEntitySqlDao.getIdFromObject(context.getAccountRecordId(), TableName.ACCOUNT.getTableName()); // Lazy evaluate records to minimize the memory footprint (these can yield a lot of results) // We usually always want to wrap our queries in an EntitySqlDaoTransactionWrapper... except here. // Since we want to stream the results out, we don't want to auto-commit when this method returns. final EntitySqlDao auditSqlDao = transactionalSqlDao.onDemand(EntitySqlDao.class); final Iterator<AuditLogModelDao> auditLogsForAccountRecordId = auditSqlDao.getAuditLogsForAccountRecordId(context); final Iterator<AuditLog> allAuditLogs = buildAuditLogsFromModelDao(auditLogsForAccountRecordId, context); return new DefaultAccountAuditLogs(accountId, auditLevel, allAuditLogs); }