|
Extending db4o's Predicate Class
Listing 2. The business logic of a Native Query resides in an extension of db4o's Predicate Class. // Predicate class sub-class for native query example
public class NativeQueryQuery extends Predicate<TestSuite>
{
ObjectContainer db;
private long startdate;
private long enddate;
// Constructor to acquire the ObjectContainer and the
// date range locally
public NativeQueryQuery(ObjectContainer _db,
long _start, long _end)
{
db = _db;
startdate = _start;
enddate = _end;
}
// This is the actual query body
public boolean match(TestSuite testsuite)
{
float passed;
float total;
TestCase testcase;
// See if the testsuite is in date range
if(testsuite.getDateExec()<startdate ||
testsuite.getDateExec()>enddate) return false;
// Reject if no test cases
if(testsuite.getNumberOfCases()==0)
return false;
// Check that more than 50% of the cases pass
passed = 0.0f;
total = 0.0f;
for(int i=0; i<testsuite.getNumberOfCases(); i++)
{
testcase = testsuite.getTestCase(i);
if(testcase.getStatus()=='P')
passed+=1.0f;
total+=1.0f;
}
if((passed/total)<.5) return false;
return true;
}
}
|