package cgeo.geocaching.files; import cgeo.geocaching.R; import cgeo.geocaching.models.Geocache; import cgeo.geocaching.utils.DisposableHandler; import cgeo.geocaching.utils.Log; import org.apache.commons.io.IOUtils; import android.content.ContentResolver; import android.net.Uri; import android.os.Handler; import java.io.IOException; import java.io.InputStream; import java.util.Collection; class ImportLocAttachmentThread extends AbstractImportThread { private final Uri uri; private final ContentResolver contentResolver; ImportLocAttachmentThread(final Uri uri, final ContentResolver contentResolver, final int listId, final Handler importStepHandler, final DisposableHandler progressHandler) { super(listId, importStepHandler, progressHandler); this.uri = uri; this.contentResolver = contentResolver; } @Override protected Collection<Geocache> doImport() throws IOException, ParserException { Log.i("Import LOC from uri: " + uri); importStepHandler.sendMessage(importStepHandler.obtainMessage(GPXImporter.IMPORT_STEP_READ_FILE, R.string.gpx_import_loading_caches_with_filename, -1, getSourceDisplayName())); final InputStream is = contentResolver.openInputStream(uri); final LocParser parser = new LocParser(listId); try { return parser.parse(is, progressHandler); } finally { IOUtils.closeQuietly(is); } } @Override protected String getSourceDisplayName() { return uri.getLastPathSegment(); } }