protected virtual IEnumerable FilterObjects(IEnumerable originalObjects, IModelFilter aModelFilter, IListFilter aListFilter)
{
// Being cautious
originalObjects = originalObjects ?? new ArrayList();
// Tell the world to filter the objects. If they do so, don't do anything else
FilterEventArgs args = new FilterEventArgs(originalObjects);
this.OnFilter(args);
if (args.FilteredObjects != null)
return args.FilteredObjects;
// Apply a filter to the list as a whole
if (aListFilter != null)
originalObjects = aListFilter.Filter(originalObjects);
// Apply the object filter if there is one
if (aModelFilter != null) {
ArrayList filteredObjects = new ArrayList();
foreach (object model in originalObjects) {
if (aModelFilter.Filter(model))
filteredObjects.Add(model);
}
originalObjects = filteredObjects;
}
return originalObjects;
}