X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fgofetch%2FFetcher.java;h=258f1961e58b8746b8286f7131726d2e9de659d3;hb=a2d8693b0474647492c745eef7ae37869defbfdf;hp=9dbf0e10bf60d52daad2081f9c615d27dc19973d;hpb=6c13eccdd9953ff6d65f6fcad3a01fd2d57d68fd;p=gofetch.git diff --git a/src/be/nikiroo/gofetch/Fetcher.java b/src/be/nikiroo/gofetch/Fetcher.java index 9dbf0e1..258f196 100644 --- a/src/be/nikiroo/gofetch/Fetcher.java +++ b/src/be/nikiroo/gofetch/Fetcher.java @@ -42,8 +42,8 @@ public class Fetcher { * the sub directory and (pre-)selector to use for the resources * (will have an impact on the files' content) * @param type - * the type of news to get (or the special keyword ALL to get all - * of the supported sources) + * the type of news to get (or NULL to get all of the supported + * sources) * @param maxStories * the maximum number of stories to show on the resume page * @param hostname @@ -81,7 +81,12 @@ public class Fetcher { BasicSupport support = BasicSupport.getSupport(type); if (type == this.type || this.type == null) { - list(support); + try { + list(support); + } catch (Exception e) { + new Exception("Failed to process support: " + type, e) + .printStackTrace(); + } } gopherBuilder.append(getLink(support.getDescription(), @@ -142,12 +147,20 @@ public class Fetcher { // Get comments (and update stories if needed): int i = 1; + List fetchedStories = new ArrayList(stories.size()); for (Story story : stories) { - System.err.println(String.format("%02d/%02d", i, stories.size()) + System.err.print(String.format("%02d/%02d", i, stories.size()) + " Fetching full story " + story.getId() + "..."); - support.fetch(story); + try { + support.fetch(story); + fetchedStories.add(story); + System.err.println(); + } catch (IOException e) { + System.err.println(" Failed to get story!"); + } i++; } + stories = fetchedStories; Output gopher = new Gopher(support.getType(), hostname, preselector, port); @@ -188,19 +201,23 @@ public class Fetcher { List gopherLines = new ArrayList(); List htmlLines = new ArrayList(); for (i = 0; i < headers.length; i++) { - gopherLines - .add(IOUtils.readSmallFile(new File(varDir, headers[i]))); - htmlLines.add(IOUtils.readSmallFile(new File(varDir, headers[i] - + ".html"))); + File gopherFile = new File(varDir, headers[i]); + File htmlFile = new File(varDir, headers[i] + ".html"); + + if (gopherFile.exists()) + gopherLines.add(IOUtils.readSmallFile(gopherFile)); + if (htmlFile.exists()) + htmlLines.add(IOUtils.readSmallFile(htmlFile)); boolean enoughStories = (i > 0 && i % maxStories == 0); boolean last = i == headers.length - 1; if (enoughStories || last) { if (!last) { gopherLines.add(getLink("More", support.getSelector() - + "gophermap_" + (page + 1), false, false)); + + "gophermap_" + (page + 1), true, false)); + htmlLines.add(getLink("More", "index_" + (page + 1) - + ".html", false, true)); + + ".html", true, true)); } write(gopherLines, varDir, "gophermap", "", page); @@ -228,13 +245,18 @@ public class Fetcher { } /** + * Create a link. * * @param name + * the link name (what the user will see) * @param ref + * the actual link reference (the target) * @param menu - * menu (gophermap, i) mode + * menu (gophermap, i) mode -- not used in html mode * @param html - * @return + * TRUE for html mode, FALSE for gopher mode + * + * @return the ready-to-use link in a {@link String} */ private String getLink(String name, String ref, boolean menu, boolean html) { if (!html) {