package javacodebook.thread.imagedownload;

import java.net.URL;
import java.io.*;
import javacodebook.regex.html.*;

/**
 * Download aller Bilder einer HTML-Seite
 * @author  Mark Donnermeyer
 */
public class Starter {
    
    public static void main(String []args) throws Exception {
        URL  url  = null;
        File file = null;
        try {
            url  = new URL(args[0]);
            file = new File(args[1]);
        }
        catch (Exception e)
        {
            printUsage();
            return;
        }
        
        // HTML-Seite lesen und alle Bilder herunterladen.
        String content = readContent(url);
        LinkVisitor visitor = new DownloadImageVisitor(url, file.getParentFile());
        LinkProcessor proc = new LinkProcessor();
        String newContent = proc.execute(content, visitor);
        
        // Den neuen Inhalt in die angegebene Datei schreiben
        FileWriter fw = new FileWriter(file);
        fw.write(newContent);
        fw.close();

    }

    /**
     * Liest den gesamten Inhalt der URL in einen String ein.
     */
    public static String readContent(URL url) throws IOException {
        StringBuffer buf = new StringBuffer();
        BufferedReader in = new BufferedReader(
        new InputStreamReader( url.openStream()));
        
        // Resource wird ausgelesen und in einen StringBuffer
        // geschrieben
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            buf.append(inputLine);
            buf.append("\n");
        }
        
        in.close();
        return buf.toString();
    }
    
    private static void printUsage() {
        System.out.println("Aufruf: java javacodebook.thread.imagedownload.Starter <input-url> <filename>");
        System.exit(0);
    }    
}
