diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2012-07-23 14:10:48 +0200 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2012-07-23 14:10:48 +0200 |
commit | 85e171ed994b8e31b3fae42754c25267fb0c2520 (patch) | |
tree | b4c0725b56dbc87257f681f73e1e6da0ba1451e9 /src/de/danoeh/antennapod/asynctask | |
parent | 7ce5cfc51367146a2650e35cde36d445751552ba (diff) | |
download | AntennaPod-85e171ed994b8e31b3fae42754c25267fb0c2520.zip |
implemented import worker
Diffstat (limited to 'src/de/danoeh/antennapod/asynctask')
-rw-r--r-- | src/de/danoeh/antennapod/asynctask/OpmlImportWorker.java | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/src/de/danoeh/antennapod/asynctask/OpmlImportWorker.java b/src/de/danoeh/antennapod/asynctask/OpmlImportWorker.java new file mode 100644 index 000000000..de2db951e --- /dev/null +++ b/src/de/danoeh/antennapod/asynctask/OpmlImportWorker.java @@ -0,0 +1,103 @@ +package de.danoeh.antennapod.asynctask; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; + +import org.xmlpull.v1.XmlPullParserException; + +import de.danoeh.antennapod.AppConfig; +import de.danoeh.antennapod.R; +import de.danoeh.antennapod.opml.OpmlElement; +import de.danoeh.antennapod.opml.OpmlReader; + +import android.app.AlertDialog; +import android.app.ProgressDialog; +import android.app.AlertDialog.Builder; +import android.content.Context; +import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; +import android.os.AsyncTask; +import android.util.Log; + +public class OpmlImportWorker extends + AsyncTask<Void, Void, ArrayList<OpmlElement>> { + private static final String TAG = "OpmlImportWorker"; + + private Context context; + private File file; // path to opml file + private Exception exception; + + private ProgressDialog progDialog; + + public OpmlImportWorker(Context context, File file) { + super(); + this.context = context; + this.file = file; + } + + @Override + protected ArrayList<OpmlElement> doInBackground(Void... params) { + if (AppConfig.DEBUG) + Log.d(TAG, "Starting background work"); + FileReader reader = null; + // Create reader + try { + reader = new FileReader(file); + if (AppConfig.DEBUG) Log.d(TAG, "Parsing " + file.toString()); + } catch (FileNotFoundException e) { + e.printStackTrace(); + exception = e; + return null; + } + OpmlReader opmlReader = new OpmlReader(); + try { + ArrayList<OpmlElement> result = opmlReader.readDocument(reader); + reader.close(); + return result; + } catch (XmlPullParserException e) { + e.printStackTrace(); + exception = e; + return null; + } catch (IOException e) { + e.printStackTrace(); + exception = e; + return null; + } + + } + + @Override + protected void onPostExecute(ArrayList<OpmlElement> result) { + progDialog.dismiss(); + if (exception != null) { + if (AppConfig.DEBUG) + Log.d(TAG, + "An error occured while trying to parse the opml document"); + AlertDialog.Builder alert = new AlertDialog.Builder(context); + alert.setTitle(R.string.error_label); + alert.setMessage(context.getString(R.string.opml_reader_error) + + exception.getMessage()); + alert.setNeutralButton(android.R.string.ok, new OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + + }); + } + } + + @Override + protected void onPreExecute() { + progDialog = new ProgressDialog(context); + progDialog.setMessage(context.getString(R.string.reading_opml_label)); + progDialog.setIndeterminate(true); + progDialog.setCancelable(false); + progDialog.show(); + } + +} |