I am in the latter stages of developing an app that requires a large database import from text files on the first run.
My question is, what is the best way to use a Progress Dialog to show whilst the large import takes place. The section of code that is responsible is shown below (the constructor for this class).
public ManipulateDatabase(Activity contextIn) throws IOException {
baseHelper = new DatabaseHelper(contextIn);
context = contextIn;
BufferedReader pieceScan = new BufferedReader(new InputStreamReader(
getPieceTextFile(context), "UTF-8"));
BufferedReader specificScan = new BufferedReader(new InputStreamReader(
getSpecificTextFile(context), "UTF-8"));
BufferedReader elementScan = new BufferedReader(new InputStreamReader(
getElementTextFile(context), "UTF-8"));
BufferedReader quoteScan = new BufferedReader(new InputStreamReader(
getQuoteTextFile(context), "UTF-8"));
openSesame();
String line;
String pieceName;
String isDrama;
String point;
String element;
String quote;
String isCharacter;
int commaPoint;
int commaPoint2;
if (initialLaunch) {
System.out.println("INITIAL LAUNCH BLOCK INITIATED");
while ((line = pieceScan.readLine()) != null) {
System.out.println("PieceInsertion: ");
commaPoint = line.indexOf(",");
pieceName = line.substring(0, commaPoint);
isDrama = line.substring(commaPoint + 1, commaPoint + 2);
ContentValues pv = new ContentValues();
pv.put(pieceField, pieceName);
pv.put(typeField, (Integer.parseInt(isDrama)));
dataBase.insert(pieceTable, null, pv);
System.out.println(line
+ ": INSERTION SHOULD HAVE JUST FINISHED");
}
while ((line = specificScan.readLine()) != null) {
System.out.println("SpecificInsertion: ");
commaPoint = line.indexOf(",");
point = line.substring(0, commaPoint);
commaPoint2 = (line
.substring(commaPoint + 1, line.length() - 1)
.indexOf(","))
+ point.length();
// pieceName = line.substring(commaPoint + 1, commaPoint2 + 1);
element = line.substring(commaPoint2 + 2, line.length());
ContentValues sv = new ContentValues();
sv.put(pointField, point);
// sv.put(pieceField, pieceName);
sv.put(elementField, element);
dataBase.insert(specificTable, null, sv);
System.out.println(line
+ ": INSERTION SHOULD HAVE JUST FINISHED");
}
while ((line = elementScan.readLine()) != null) {
commaPoint = line.indexOf(",");
element = line.substring(0, commaPoint);
commaPoint2 = (line
.substring(commaPoint + 1, line.length() - 1)
.indexOf(","))
+ element.length();
pieceName = line.substring(commaPoint + 1, commaPoint2 + 1);
isCharacter = line.substring(commaPoint2 + 2, commaPoint2 + 3);
ContentValues ev = new ContentValues();
ev.put(elementField, element);
ev.put(pieceField, pieceName);
ev.put(elTypeField, (Integer.parseInt(isCharacter)));
dataBase.insert(elementTable, null, ev);
System.out.println(line
+ ": INSERTION SHOULD HAVE JUST FINISHED");
}
while ((line = quoteScan.readLine()) != null) {
commaPoint = line.indexOf("^");
quote = line.substring(0, commaPoint);
System.out.println("Quote = " + quote);
point = line.substring(commaPoint + 1, line.length());
System.out.println("Point = " + point);
ContentValues qv = new ContentValues();
qv.put(quoteField, quote);
qv.put(pointField, point);
dataBase.insert(quoteTable, null, qv);
System.out.println(line
+ ": INSERTION SHOULD HAVE JUST FINISHED");
}
}
}