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;
}
}