import java.io.FileReader;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;

/**
 * Request a file to work on. The integers contained in the file are totaled.
 * The total is reported back to the controller thread.
 */
public class Worker extends Thread {
    Controller controller;

    public Worker( Controller controller ) {
	this.controller = controller;
    }

    public void run() {
	File f = null;
	while( (f=controller.getFile()) != null ) {
	    int sum = 0;
	    try {
		FileReader frd = new FileReader( f );
		BufferedReader in = new BufferedReader( frd );

		String line = null;
		while( (line=in.readLine()) != null ) {
		    int value = 0;
		    try {
			value = Integer.parseInt( line );
		    }
		    catch( NumberFormatException ex ) {
			// ignore lines with errors
		    }
		    sum += value;
		}
		in.close();
	    }
	    catch( IOException ex ) {
	    }
	    controller.updateSum( sum );
	}
    }
}
