package com.evancharlton.mileage.tasks;
import com.evancharlton.mileage.io.CsvVehicleMappingActivity;
import com.evancharlton.mileage.provider.Settings;
import android.util.Log;
import au.com.bytecode.opencsv.CSVReader;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class CsvVehicleReaderTask extends
AttachableAsyncTask<CsvVehicleMappingActivity, String, String, Integer> {
private static final String TAG = "CsvVehicleReaderTask";
private final int INDEX;
private final ArrayList<String> mTitles = new ArrayList<String>();
public CsvVehicleReaderTask(int index) {
INDEX = index;
Log.d(TAG, "Looking for unique entries in column #" + index);
}
@Override
protected Integer doInBackground(String... inputFiles) {
final String inputFile = inputFiles[0];
final String absoluteInputFile = Settings.EXTERNAL_DIR + inputFile;
int i = 0;
try {
BufferedReader reader = new BufferedReader(new FileReader(absoluteInputFile));
CSVReader csvReader = new CSVReader(reader);
// skip the first row of headers
csvReader.readNext();
String[] data;
while ((data = csvReader.readNext()) != null) {
String title = data[INDEX];
if (!mTitles.contains(title)) {
Log.d(TAG, "Found a unique vehicle: " + title);
mTitles.add(title);
publishProgress(title);
}
i++;
}
csvReader.close();
} catch (IOException e) {
Log.e(TAG, "Could not get columns!", e);
}
return i;
}
@Override
protected void onProgressUpdate(String... titles) {
getParent().dataRead(titles[0]);
}
@Override
protected void onPostExecute(Integer numRows) {
getParent().setRowCount(numRows);
}
}