A SUPCompositeTest combines multiple SUPTestCriteria using the logical operators AND, OR, and NOT to create a compound filter.
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];