SUPCompositeTest

A SUPCompositeTest combines multiple SUPTestCriteria using the logical operators AND, OR, and NOT to create a compound filter.

Methods

add:(SUPTestCriteria*)operand;

The following example shows a detailed construction of the test criteria and join criteria for a query:

SUPQuery *query2 = [SUPQuery getInstance];
[query2 select:@"c.fname,c.lname,s.order_date,s.region"];
[query2 from:@"Customer":@"c"];
//
// Convenience method for adding a join to the query
//
//[query2 join:@"Sales_order":@"s":@"s.cust_id":@"c.id"];
//
// Detailed construction of the join criteria
SUPJoinCriteria *joinCriteria = [SUPJoinCriteria getInstance];
SUPJoinCondition* joinCondition = [SUPJoinCondition getInstance];
joinCondition.alias = @"s";
joinCondition.entity = @"Sales_order";
joinCondition.leftItem = @"s.cust_id";
joinCondition.rightItem = @"c.id";
joinCondition.joinType = [SUPJoinCondition INNER_JOIN];
[joinCriteria add:joinCondition];
query2.joinCriteria = joinCriteria;
//
// Convenience method for adding test criteria
//query2.testCriteria = (SUPTestCriteria*)[[SUPAttributeTest
// equal:@"c.fname":@"Douglas"] and:
[SUPAttributeTest
// equal:@"c.lname":@"Smith"]];
//
// Detailed construction of the test criteria
SUPCompositeTest *ct = [SUPCompositeTest getInstance];
ct.operands = [SUPObjectList getInstance];
[ct.operands add:[SUPAttributeTest equal:@"c.fname":@"Douglas"]];
[ct.operands add:[SUPAttributeTest equal:@"c.lname":@"Smith"]];
ct.operator = [SUPCompositeTest AND];
query2.testCriteria = (SUPTestCriteria*)ct;
SUPQueryResultSet* resultSet = [TestCRUD_TestCRUDDB
executeQuery:query2];