Сложные фильтры должны применяться, по возможности, в запросах к хранилищу данных.
Если нет такой возможности, то их желательно в DAO и помещать.
А вообще - нет никакого смысла делать из этого проблему и уж тем более пытаться её решить. Код работает, выполняет свою задачу и не мешает разработчику - значит, трогать его не надо. Это пустая трата времени, особенно, когда проект в процессе разработки. Вот когда проект реализован и корректно выполняет все свои задачи, тогда и стоит задуматься о рефакторинге.