X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=android_pandora.git;a=blobdiff_plain;f=apps%2Foi-filemanager%2FFileManager%2Fsrc%2Forg%2Fopenintents%2Ffilemanager%2Futil%2FExtractManager.java;fp=apps%2Foi-filemanager%2FFileManager%2Fsrc%2Forg%2Fopenintents%2Ffilemanager%2Futil%2FExtractManager.java;h=0000000000000000000000000000000000000000;hp=ad07c84f4289840b975aabf33227d57d28436689;hb=86591c820f761cc27e31f78790c5a447b8411a33;hpb=ebcf0cf7399e3ec5ba51c5a904553fbcc55725e5 diff --git a/apps/oi-filemanager/FileManager/src/org/openintents/filemanager/util/ExtractManager.java b/apps/oi-filemanager/FileManager/src/org/openintents/filemanager/util/ExtractManager.java deleted file mode 100644 index ad07c84..0000000 --- a/apps/oi-filemanager/FileManager/src/org/openintents/filemanager/util/ExtractManager.java +++ /dev/null @@ -1,126 +0,0 @@ -package org.openintents.filemanager.util; - -import android.app.ProgressDialog; -import android.os.AsyncTask; -import android.util.Log; -import android.widget.Toast; -import org.openintents.filemanager.FileManagerActivity; -import org.openintents.filemanager.R; - -import java.io.*; -import java.util.Enumeration; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - -public class ExtractManager { - /** - * TAG for log messages. - */ - static final String TAG = "ExtractManager"; - - private static final int BUFFER_SIZE = 1024; - private FileManagerActivity activity; - private ProgressDialog progressDialog; - - public ExtractManager(FileManagerActivity activity) { - this.activity = activity; - } - - public void extract(File f, String destinationPath) { - new ExtractTask().execute(f, destinationPath); - } - - private class ExtractTask extends AsyncTask { - private static final int success = 0; - private static final int error = 1; - - /** - * count of extracted files to update the progress bar - */ - private int isExtracted = 0; - - /** - * Recursively extract file or directory - */ - public boolean extract(File archive, String destinationPath) { - try { - ZipFile zipfile = new ZipFile(archive); - int fileCount = zipfile.size(); - for (Enumeration e = zipfile.entries(); e.hasMoreElements();) { - ZipEntry entry = (ZipEntry) e.nextElement(); - unzipEntry(zipfile, entry, destinationPath); - isExtracted++; - progressDialog.setProgress((isExtracted * 100)/ fileCount); - } - return true; - } catch (Exception e) { - Log.e(TAG, "Error while extracting file " + archive, e); - return false; - } - } - - private void createDir(File dir) { - if (dir.exists()) { - return; - } - Log.i(TAG, "Creating dir " + dir.getName()); - if (!dir.mkdirs()) { - throw new RuntimeException("Can not create dir " + dir); - } - } - - private void unzipEntry(ZipFile zipfile, ZipEntry entry, - String outputDir) throws IOException { - if (entry.isDirectory()) { - createDir(new File(outputDir, entry.getName())); - return; - } - File outputFile = new File(outputDir, entry.getName()); - if (!outputFile.getParentFile().exists()) { - createDir(outputFile.getParentFile()); - } - Log.i(TAG, "Extracting: " + entry); - BufferedInputStream inputStream = new BufferedInputStream(zipfile.getInputStream(entry)); - BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(outputFile)); - try { - int len; - byte buf[] = new byte[BUFFER_SIZE]; - while ((len = inputStream.read(buf)) > 0) { - outputStream.write(buf, 0, len); - } - } finally { - outputStream.close(); - inputStream.close(); - } - } - - @Override - protected void onPreExecute() { - progressDialog = new ProgressDialog(activity); - progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); - progressDialog.setMessage(activity.getResources().getString(R.string.extracting)); - progressDialog.show(); - progressDialog.setProgress(0); - isExtracted = 0; - } - - @Override - protected Integer doInBackground(Object... params) { - File f= (File) params[0]; - String destination = (String) params[1]; - boolean result = extract(f, destination); - return result ? success : error; - } - - @Override - protected void onPostExecute(Integer result) { - progressDialog.cancel(); - if (result == error){ - Toast.makeText(activity, R.string.extracting_error, Toast.LENGTH_SHORT).show(); - } else if (result == success){ - Toast.makeText(activity, R.string.extracting_success, Toast.LENGTH_SHORT).show(); - } - activity.refreshList(); - } - } -}