/* Save some Feeds first */
saveFeedsHelper();
/* Query 1: News is *new*, *unread*, *updated*, *read* */
ITask task = new TaskAdapter() {
public IStatus run(IProgressMonitor monitor) {
List<ISearchCondition> conditions = new ArrayList<ISearchCondition>();
ISearchField field1 = factory.createSearchField(INews.STATE, INews.class.getName());
conditions.add(factory.createSearchCondition(field1, SearchSpecifier.IS, EnumSet.of(INews.State.NEW, State.UNREAD, State.UPDATED, State.READ)));
results[0] = fModelSearch.searchNews(conditions, false).size();
return Status.OK_STATUS;
}
};
tasks.clear();
tasks.add(task);
long l1 = TestUtils.executeAndWait(tasks, 1);
System.out.println("Searching [States (" + results[0] + " results, Occur.SHOULD, Cold)] in " + FEEDS + " Feeds took: " + l1 + "ms");
/* Recreate */
Owl.getPersistenceService().recreateSchema();
saveFeedsHelper();
/* Query 2: Entire News contains 'news' */
task = new TaskAdapter() {
public IStatus run(IProgressMonitor monitor) {
List<ISearchCondition> conditions = new ArrayList<ISearchCondition>();
ISearchField field1 = factory.createSearchField(IEntity.ALL_FIELDS, INews.class.getName());
conditions.add(factory.createSearchCondition(field1, SearchSpecifier.CONTAINS, "news"));
results[0] = fModelSearch.searchNews(conditions, false).size();
return Status.OK_STATUS;
}
};
tasks.clear();
tasks.add(task);
System.gc();
long l2 = TestUtils.executeAndWait(tasks, 1);
System.out.println("Searching [Entire News (" + results[0] + " results, Occur.SHOULD, Cold)] in " + FEEDS + " Feeds took: " + l2 + "ms");
/* Recreate */
Owl.getPersistenceService().recreateSchema();
saveFeedsHelper();
/*
* Query 3: Title contains 'news' OR Author contains 's*' OR Category begins
* with 'e'
*/
task = new TaskAdapter() {
public IStatus run(IProgressMonitor monitor) {
List<ISearchCondition> conditions = new ArrayList<ISearchCondition>();
ISearchField field1 = factory.createSearchField(INews.TITLE, INews.class.getName());
conditions.add(factory.createSearchCondition(field1, SearchSpecifier.CONTAINS, "news"));
ISearchField field2 = factory.createSearchField(INews.AUTHOR, INews.class.getName());
conditions.add(factory.createSearchCondition(field2, SearchSpecifier.CONTAINS, "s*"));
ISearchField field3 = factory.createSearchField(INews.CATEGORIES, INews.class.getName());
conditions.add(factory.createSearchCondition(field3, SearchSpecifier.BEGINS_WITH, "e"));
results[0] = fModelSearch.searchNews(conditions, false).size();
return Status.OK_STATUS;
}
};
tasks.clear();
tasks.add(task);
System.gc();
long l3 = TestUtils.executeAndWait(tasks, 1);
System.out.println("Searching [Title, Author, Categories (" + results[0] + " results, Occur.SHOULD, Cold)] in " + FEEDS + " Feeds took: " + l3 + "ms");
/* Recreate */
Owl.getPersistenceService().recreateSchema();
saveFeedsHelper();
/*
* Query 4: Title contains 'news' AND Author contains 's*' AND Category
* begins with 'e'
*/
task = new TaskAdapter() {
public IStatus run(IProgressMonitor monitor) {
List<ISearchCondition> conditions = new ArrayList<ISearchCondition>();
ISearchField field1 = factory.createSearchField(INews.TITLE, INews.class.getName());
conditions.add(factory.createSearchCondition(field1, SearchSpecifier.CONTAINS, "news"));
ISearchField field2 = factory.createSearchField(INews.AUTHOR, INews.class.getName());
conditions.add(factory.createSearchCondition(field2, SearchSpecifier.CONTAINS, "s*"));
ISearchField field3 = factory.createSearchField(INews.CATEGORIES, INews.class.getName());
conditions.add(factory.createSearchCondition(field3, SearchSpecifier.BEGINS_WITH, "e"));
results[0] = fModelSearch.searchNews(conditions, true).size();
return Status.OK_STATUS;
}
};
tasks.clear();
tasks.add(task);
System.gc();
long l4 = TestUtils.executeAndWait(tasks, 1);
System.out.println("Searching [Title, Author, Categories (" + results[0] + " results, Occur.MUST, Cold)] in " + FEEDS + " Feeds took: " + l4 + "ms");
/* Recreate */
Owl.getPersistenceService().recreateSchema();
saveFeedsHelper();
/* Query 5: Publish Date before Now AND After 2000 */
task = new TaskAdapter() {
public IStatus run(IProgressMonitor monitor) {
List<ISearchCondition> conditions = new ArrayList<ISearchCondition>();
ISearchField field1 = factory.createSearchField(INews.PUBLISH_DATE, INews.class.getName());
conditions.add(factory.createSearchCondition(field1, SearchSpecifier.IS_BEFORE, new Date()));
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2000);
ISearchField field2 = factory.createSearchField(INews.PUBLISH_DATE, INews.class.getName());
conditions.add(factory.createSearchCondition(field2, SearchSpecifier.IS_AFTER, cal.getTime()));
results[0] = fModelSearch.searchNews(conditions, true).size();
return Status.OK_STATUS;
}
};
tasks.clear();
tasks.add(task);
System.gc();
long l5 = TestUtils.executeAndWait(tasks, 1);
System.out.println("Searching [Date Range (" + results[0] + " results, Occur.MUST, Cold)] in " + FEEDS + " Feeds took: " + l5 + "ms");
/* Recreate */
Owl.getPersistenceService().recreateSchema();
saveFeedsHelper();
/* Query 6: News is *new*, *unread*, *updated* and Has Attachments IS TRUE */
task = new TaskAdapter() {
public IStatus run(IProgressMonitor monitor) {
List<ISearchCondition> conditions = new ArrayList<ISearchCondition>();
ISearchField field1 = factory.createSearchField(INews.STATE, INews.class.getName());
conditions.add(factory.createSearchCondition(field1, SearchSpecifier.IS, EnumSet.of(INews.State.NEW, INews.State.UNREAD, INews.State.UPDATED)));