support = BasicSupport.getSupport(getType(), null);
}
+ /**
+ * Find the given tag by its hierarchical IDs.
+ * <p>
+ * I.E., it will take the tag A, subtag B, subsubtag C...
+ *
+ * @param ids
+ * the IDs to look for
+ *
+ * @return the appropriate tag fully filled, or NULL if not found
+ *
+ * @throws IOException
+ * in case of I/O error
+ */
+ public SearchableTag getTag(Integer... ids) throws IOException {
+ SearchableTag tag = null;
+ List<SearchableTag> tags = getTags();
+
+ for (Integer tagIndex : ids) {
+ // ! 1-based index !
+ if (tagIndex == null || tags == null || tagIndex <= 0
+ || tagIndex > tags.size()) {
+ return null;
+ }
+
+ tag = tags.get(tagIndex - 1);
+ fillTag(tag);
+ tags = tag.getChildren();
+ }
+
+ return tag;
+ }
+
/**
* The support type.
*
* @throws IOException
* in case of I/O error
*/
- abstract protected void fillTag(SearchableTag tag) throws IOException;
+ abstract public void fillTag(SearchableTag tag) throws IOException;
+
+ /**
+ * Search for the given term and return the number of pages of results of
+ * stories satisfying this search term.
+ *
+ * @param search
+ * the term to search for
+ *
+ * @return a number of pages
+ *
+ * @throws IOException
+ * in case of I/O error
+ */
+ abstract public int searchPages(String search) throws IOException;
/**
* Search for the given term and return a list of stories satisfying this
*
* @param search
* the term to search for
+ * @param page
+ * the page to use for result pagination, 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<MetaData> search(String search) throws IOException;
+ abstract public List<MetaData> search(String search, int page)
+ throws IOException;
/**
* Search for the given tag and return a list of stories satisfying this
* <p>
* URL is guaranteed to be usable, LUID will always be NULL.
*
- * @param tagId
+ * @param tag
* the tag to search for
* @param page
* the page to use for result pagination (see
*
* @return an implementation that supports it, or NULL
*/
- public static BasicSearchable getSearchable(SupportType type) {
+ static public BasicSearchable getSearchable(SupportType type) {
BasicSearchable support = null;
switch (type) {
// TODO
break;
case MANGA_LEL:
- // TODO
+ support = new MangaLel();
break;
case CBZ:
case HTML: