package be.nikiroo.fanfix.searchable; import java.io.IOException; import java.net.URL; import java.util.List; import org.jsoup.helper.DataUtil; import org.jsoup.nodes.Document; import be.nikiroo.fanfix.Instance; import be.nikiroo.fanfix.data.MetaData; import be.nikiroo.fanfix.supported.BasicSupport; import be.nikiroo.fanfix.supported.SupportType; /** * This class supports browsing through stories on the supported websites. It * will fetch some {@link MetaData} that satisfy a search query or some tags if * supported. * * @author niki */ public abstract class BasicSearchable { private SupportType type; private BasicSupport support; /** * Create a new {@link BasicSearchable} of the given type. * * @param type * the type, must not be NULL */ public BasicSearchable(SupportType type) { setType(type); support = BasicSupport.getSupport(getType(), null); } /** * The support type. * * @return the type */ public SupportType getType() { return type; } /** * The support type. * * @param type * the new type */ protected void setType(SupportType type) { this.type = type; } /** * The associated {@link BasicSupport}. *
* Mostly used to download content.
*
* @return the support
*/
protected BasicSupport getSupport() {
return support;
}
/**
* Get a list of tags that can be browsed here.
*
* @return the list of tags
*
* @throws IOException
* in case of I/O error
*/
abstract public List
* Not that the returned stories will NOT be complete, but will only
* contain enough information to present them to the user and retrieve them.
*
* URL is guaranteed to be usable, LUID will always be NULL.
*
* @param search
* the term to search for
*
* @return a list of stories that satisfy that search term
*
* @throws IOException
* in case of I/O error
*/
abstract public List
* Not that the returned stories will NOT be complete, but will only
* contain enough information to present them to the user and retrieve them.
*
* URL is guaranteed to be usable, LUID will always be NULL.
*
* @param tagId
* the tag to search for
* @param page
* the page to use for result pagination (see
* {@link SearchableTag#getPages()}, remember to check for -1),
* index is 1-based
*
* @return a list of stories that satisfy that search term
*
* @throws IOException
* in case of I/O error
*/
abstract public List