be5a7e984de32af1f41564cfad37b0427dec6cca
[wl-mobile.git] / src / pl / org / nowoczesnapolska / wlmobi / Downloader.java
1 package pl.org.nowoczesnapolska.wlmobi;
2  
3 /*
4  @author Mauro Rocco http://www.toforge.com
5  
6  Radek Czajka: don't prepend /sdcard/
7 */
8  
9 import org.json.JSONArray;
10 import org.json.JSONException;
11  
12 import android.util.Log;
13  
14 import com.phonegap.DroidGap;
15 import com.phonegap.api.Plugin;
16 import com.phonegap.api.PluginResult;
17  
18 import java.io.File;
19 import java.io.FileOutputStream;
20 import java.io.IOException;
21 import java.io.InputStream;
22 import java.net.HttpURLConnection;
23 import java.net.URL;
24  
25 public class Downloader extends Plugin{
26  
27  @Override
28  public PluginResult execute(String action, JSONArray args, String callbackId) {
29  if (action.equals("downloadFile")) {
30  try {
31  return this.downloadUrl(args.getString(0),args.getString(1),args.getString(2),args.getString(3));
32  } catch (JSONException e) {
33  return new PluginResult(PluginResult.Status.ERROR, "Param errrors");
34  }
35  }
36  else {
37  return new PluginResult(PluginResult.Status.INVALID_ACTION);
38  }
39  
40  }
41  
42  private PluginResult downloadUrl(String fileUrl, String dirName, String fileName, String overwrite){
43  try{
44  Log.d("DownloaderPlugin", "DIRECTORY CALLED "+dirName+" created");
45  File dir =     new File(dirName);
46  if(!dir.exists()){
47  Log.d("DownloaderPlugin", "directory "+dirName+" created");
48  dir.mkdirs();
49  }
50  
51  File file = new File(dirName+fileName);
52  
53  if(overwrite.equals("false") && file.exists()){
54  Log.d("DownloaderPlugin", "File already exist");
55  return new PluginResult(PluginResult.Status.OK, "exist");
56  }
57  
58  URL url = new URL(fileUrl);
59  HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
60  ucon.setRequestMethod("GET");
61  ucon.setDoOutput(true);
62  ucon.connect();
63  
64  Log.d("DownloaderPlugin", "download begining");
65  
66  Log.d("DownloaderPlugin", "download url:" + url);
67  
68  InputStream is = ucon.getInputStream();
69  
70  byte[] buffer = new byte[1024];
71  
72  int len1 = 0;
73  
74  FileOutputStream fos = new FileOutputStream(file);
75  
76  while ( (len1 = is.read(buffer)) > 0 ) {
77  fos.write(buffer, 0, len1);
78                  //new String(buffer, "ISO8859_1").getBytes("UTF-8"), 0, len1);
79  }
80  
81  fos.close();
82  
83  Log.d("DownloaderPlugin", "Download complete in" + fileName);
84  
85  } catch (IOException e) {
86  
87  Log.d("DownloaderPlugin", "Error: " + e);
88  return new PluginResult(PluginResult.Status.ERROR, "Error: " + e);
89  
90  }
91  
92  return new PluginResult(PluginResult.Status.OK, fileName);
93  
94  }
95  
96 }