@@ -0,0 +1,1789 @@
+/**%0A * Provides the classes necessary to create and process client request filters.%0A * %3Cp/%3E%0A * %7B@link uk.ac.ebi.quickgo.rest.search.filter.RequestFilter%7D instances are usually created by QuickGO REST endpoints%0A * when a client would like to filter down results from a query that (s)he has supplied.%0A * %3Cp/%3E%0A * The complexity of a request filter is based on the field(s) declared within the filter. Fields may:%0A * %3Cul%3E%0A *     %3Cli%3EExist in a table/collection of underlying data-source: It is most likely that no complex processing%0A *     is necessary, and that the filter can be directly executed from within the data source.%0A *     %3C/li%3E%0A *     %3Cli%3ENot exist in table/collection of the underlying data-source: Using this field as a filter will%0A *     require extra processing, usually in the form of a join between two tables/collections, or querying other%0A *     services for the required information%3C/li%3E%0A * %3C/ul%3E%0A * The %7B@link uk.ac.ebi.quickgo.rest.search.filter.FilterConverterFactory%7D is the class responsible for deciding how a%0A * %7B@link uk.ac.ebi.quickgo.rest.search.filter.RequestFilter%7D is to be processed. Note that the factory does not do%0A * the actual processing, it delegates this task to %7B@link uk.ac.ebi.quickgo.rest.search.filter.FilterConverter%7D.%0A * There exist several implementations of the %7B@link uk.ac.ebi.quickgo.rest.search.filter.FilterConverter%7D interface,%0A * each one tries to obtain the required information in a different way, e.g. contact another service, create a join%0A * between two tables/collections or create a simple filter query. Any extra configuration required by the converter%0A * is fed to them via the %7B@link uk.ac.ebi.quickgo.rest.search.filter.FilterExecutionConfig%7D.%0A *%0A * @author Ricardo Antunes%0A */%0Apackage uk.ac.ebi.quickgo.rest.search.filter;

Add a package level Javadoc to try to clarify how the filter solution works.