public void handleRequest()

in src/main/java/com/amazonaws/partners/saasfactory/metering/aggregation/BillingEventAggregation.java [370:398]


    public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) {
        if (this.tableConfig.getTableName().isEmpty() || this.tableConfig.getIndexName().isEmpty()) {
            return;
        }

        this.logger.info("Resolving tenant IDs in table {}", this.tableConfig.getTableName());
        List<TenantConfiguration> tenants = TenantConfiguration.getTenantConfigurations(this.tableConfig, this.ddb, this.logger);
        this.logger.info("Resolved tenant IDs in table {}", this.tableConfig.getTableName());
        if (tenants.isEmpty()) {
            this.logger.info("No tenants found");
            return;
        }
        for (TenantConfiguration tenant : tenants) {
            List<BillingEvent> billingEvents = getBillingEventsForTenant(tenant.getTenantID());
            if (billingEvents.isEmpty()) {
                this.logger.info("No events for {}", tenant.getTenantID());
                continue;
            }
            // Count the number of events - this step is necessary to make the transactions work; they need
            // to be grouped together
            Map<ZonedDateTime, List<BillingEvent>> categorizedEvents = categorizeEvents(tenant, billingEvents);
            if (categorizedEvents.isEmpty()) {
                this.logger.info("No aggregation entries for {}", tenant.getTenantID());
            } else {
                // Put those results back into the table
                aggregateEntries(categorizedEvents, tenant);
            }
        }
    }