public class ExampleSummaryTmpTable extends common { const str TestConstStr = "this_is_a_test"; int Test classInt = 0; /// /// Populates the table with data from hcmWorker, aggregating counts of email domains /// /// /// Whether to get the whole reporting structure or just direct reports /// [Hookable(False)] public void populateTable(boolean directReportsOnly = true) { DirPersonBaseEntity dirPerson; // Set up Query for Course fetch QueryRun qr = new QueryRun(new Query()); QueryBuildDataSource qdbsWorker = qr.query().addDataSource(tableNum(HcmWorker)); QueryBuildDataSource qdbsDirPersonEntity = qdbsWorker.addDataSource(tableNum(DirPersonBaseEntity)); qdbsDirPersonEntity.joinMode(JoinMode::InnerJoin); qdbsDirPersonEntity.addLink(fieldNum(HcmWorker, Person), fieldNum(DirPersonBaseEntity, RecId)); qdbsDirPersonEntity.addOrderByField(fieldNum(DirPersonBaseEntity, BirthYear)); // Setup ranges to include only reporting structure HcmWorker::rangeFilterReports(HcmWorkerLookup::currentWorker(), qdbsWorker , directReportsOnly); while (qr.next()) { // Process each record and add to count in each bucket. dirPerson = qr.get(tableNum(DirPersonBaseEntity)); if (this.BirthYear != dirPerson.BirthYear) { //when finished with a particular birth year, write the aggregate values to the tmp table this.writeCurrentRecord(); } this.BirthYear = dirPerson.BirthYear; if (strFind(dirPerson.PrimaryContactEmail, "@gmail.com")) { this.Completed++; } else if (strFind(dirPerson.PrimaryContactEmail, "@yahoo.com")) { this.Yahoo++; } else if (strFind(dirPerson.PrimaryContactEmail, "@outlook.com")) { this.Outlook++; } else { this.Other++; } this.Total++; } // write last record this.writeCurrentRecord(); } private void writeCurrentRecord(){ if(this.BirthYear != "") { ttsbegin; this.write(); ttscommit; } this.clear(); this.Gmail = 0; this.Yahoo = 0; this.Outlook = 0; this.Other = 0; } }