|
Implement a Native Query
Listing 3. The ContactDetailQuery class's match() method drives the query. Notice that the method is written in plain old Java, allowing us to create arbitrarily complex queries. /*
* The ContactDetailQuery class performs the
* native query on the database
*/
import com.db4o.*;
import com.db4o.query.*;
public class ContactDetailQuery extends Predicate
{
// Criteria static strings taken from BaseView
private static final String NAME = "N";
private static final String PHONE = "TEL";
private static final String ORG = "ORG";
private static final String EMAIL = "EMAIL";
private String searchCriterion;
// Identifies which query
private String searchString;
// String to search for
// Constructor
public ContactDetailQuery()
{
}
public boolean match(ContactDetail _contactdetail)
{
// Search based on telephone
if(searchCriterion.equals(PHONE))
return((_contactdetail.getMobileTel().equals(
searchString)) ||
(_contactdetail.getHomeTel().equals(
searchString)) ||
(_contactdetail.getWorkTel().equals(
searchString)) ||
(_contactdetail.getFaxTel().equals(
searchString)));
// Search based on company
if(searchCriterion.equals(ORG))
return(_contactdetail.getCompany().equals(
searchString));
// Search Based on email
if(searchCriterion.equals(EMAIL))
return(_contactdetail.getEmail().equals(
searchString));
// Make NAME the default search criterion
return((_contactdetail.getName().equals(
searchString)) ||
(_contactdetail.getSurname().equals(
searchString)));
}
// Set the search criterion
public void setSearchCriterion(
String _searchCriterion)
{ searchCriterion = _searchCriterion; }
// Set the search string
public void setSearchString(String _searchString)
{ searchString = _searchString; }
}
|