protected boolean parseFile(LineHandler handler, InputStream stream)
	throws Exception
	{
		BufferedReader bis = new BufferedReader(new InputStreamReader(stream));
		
		int lineNum = 0;
		
		for (String line = bis.readLine(); line != null; line = bis.readLine())
		{
			lineNum++;
			
			if (line.equals("")) { continue; }

			List fields = new ArrayList();
			StringBuffer currentField = new StringBuffer();
			boolean inQuotes = false;

			for (int i = 0; i < line.length(); i++)
			{
				char c = line.charAt(i);
				if (c == '"')			
				{
					inQuotes = !inQuotes;
				}
				else if (c == ',' && !inQuotes)
				{
					fields.add(currentField.toString());
					currentField.setLength(0);
				}
				else
				{
					currentField.append(c);
				}
			}

			fields.add(currentField.toString());

			String [] array = new String[fields.size()];
			fields.toArray(array);
			if (!handler.handleLine(lineNum, array))
			{
				return false;
			}
		}
		
		return true;
	}