import java.util.*;
import java.io.*;
import java.text.DecimalFormat;

public class Inventory {

    public static void main( String[] args ) {
	
	final int MAX = 100;
	InvItem[] items = new InvItem[MAX];
	StringTokenizer tokenizer;
	String line, name, filename="items.dat";
	int units, count=0;
	float price;

	// read data from file into program variables
	try {
	    FileReader fr = new FileReader( filename );
	    BufferedReader infile = new BufferedReader( fr );
	    line = infile.readLine();
	    while( line != null ) {
		tokenizer = new StringTokenizer( line );
		name = tokenizer.nextToken();
		try {
		    units = Integer.parseInt( tokenizer.nextToken() );
		    price = Float.parseFloat( tokenizer.nextToken() );
		    items[count++] = new InvItem( name,units,price );
		}
		catch( NumberFormatException nfx ) {
		    System.out.println( "error in input; line ignored: " +
					line );
		}
		line = infile.readLine();
	    } // end of while
	    infile.close();
	}
	catch( FileNotFoundException fnfx ) {
	    System.out.println( "file not found: " + filename );
	}
	catch( IOException iox ) {
	    System.out.println( iox );
	}
	// manipulate the values of the program variables:
	// increase the prices by 10%
	for ( int i=0; i<count; i++ ) {
	    items[i].setPrice( items[i].getPrice()*1.10 );
	} // end for i
	
	// display the values of the program variables on the screen
	DecimalFormat fmt = new DecimalFormat( "$###,###.00" );
	for ( int i=0; i<count; i++ ) {
	    System.out.println( items[i].getName() +
				"\tnumber of items = " + 
				items[i].getUnits() +
				"\tprice = " + 
				fmt.format( items[i].getPrice() ));
	} // end for i

	// write data from program variables into data file
	try {
	    FileWriter fw = new FileWriter( filename );
	    PrintWriter outfile = 
		new PrintWriter( new BufferedWriter( fw ));
	    for ( int i=0; i<count; i++ ) {
		outfile.println( items[i].getName() + " " + 
				 items[i].getUnits() + " " + 
				 items[i].getPrice() );
	    } // end for i
	    outfile.close();
	}
	catch( FileNotFoundException fnfx ) {
	    System.out.println( "file not found: " + filename );
	}
	catch( IOException iox ) {
	    System.out.println( iox );
	}
    } // end of main() method

} // end of Inventory class
