1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package Torello.HTML.Tools.NewsSite;

import static Torello.Java.C.RESET;
import static Torello.Java.C.YELLOW;
import static Torello.Java.C.CYAN;

import Torello.Java.StrPrint;
import Torello.HTML.Tools.NewsSite.DownloadResult;
import Torello.HTML.Tools.NewsSite.RECORD;

import java.net.URL;
import java.io.IOException;

class URL_GC 
{
    private static final Runtime rt = Runtime.getRuntime();

    static boolean run(final RECORD r) throws IOException
    {
        // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
        // Instantiate the URL object from the URLStr String.
        // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
        // 
        // Should never happen, because each URL will have been alredy tested 
        // and instantiated in the previous method.

        try
            { r.url = new URL(r.urlStr); }

        catch (Exception e)
        {
            r.log.append
                ("Could not instantiate URL-String into URL for [" + r.urlStr + "].\n");

            r.ret.elementAt(r.outerCounter()).add(DownloadResult.BAD_ARTICLE_URL);
            return false;
        }


        // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
        // Run the Garbage Collector, Print Article URL and Number to log.
        // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

        rt.gc();
        final String freeMem    = StrPrint.commas(rt.freeMemory());
        final String totalMem   = StrPrint.commas(rt.totalMemory());

        r.log.append(
            "\nVisiting URL: " +

            "[" +
            YELLOW +  StrPrint.zeroPad10e4(r.outerCounter()) + RESET + 
            " of " + StrPrint.zeroPad10e4(r.articleURLs.size()) + ", " +
            YELLOW +  StrPrint.zeroPad10e4(r.innerCounter()) + RESET + 
            " of " + StrPrint.zeroPad10e4
                (r.articleURLs.elementAt(r.outerCounter()).size()) +
            "] " +

            CYAN         + " - "  + r.url                     + RESET + '\n' +
            "Available Memory: "    + YELLOW +  freeMem       + RESET + '\t' +
            "Total Memory: "        + YELLOW +  totalMem      + RESET + '\n'
        );

        return true;
    }
}