Fix URL Encoding

This commit is contained in:
Przemek Grondek 2014-08-17 22:17:54 +02:00
parent 68dc0893ca
commit f40ed11461

View file

@ -2,6 +2,7 @@ package info.nerull7.mysqlbrowser.db;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.util.Log; import android.util.Log;
import android.widget.ArrayAdapter;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
@ -10,8 +11,10 @@ import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -54,11 +57,32 @@ public class AsyncDatabaseConnector {
matrixReturnListener=null; matrixReturnListener=null;
} }
private String actionUrlBuilder(String action){ // TODO Better UrlBuilder this is shit only for use private String actionUrlBuilder(String action){
String urlBuilder = url; String urlBuilder = url;
urlBuilder += "?u="+login; urlBuilder += "?u="+login;
urlBuilder += "&p="+password; urlBuilder += "&p="+password;
urlBuilder += "&a="+action; urlBuilder += "&a="+action;
return urlBuilder;
}
private String actionUrlBuilder(String action, String argument, String value){
ArrayList<String> arguments = new ArrayList<String>();
ArrayList<String> values = new ArrayList<String>();
arguments.add(argument);
values.add(value);
return this.actionUrlBuilder(action, arguments, values);
}
private String actionUrlBuilder(String action, List<String> arguments, List<String> values){ // TODO Better UrlBuilder this is shit only for use
String urlBuilder = actionUrlBuilder(action);
for (int i = 0; i < arguments.size(); i++) {
try {
urlBuilder += "&" + arguments.get(i) + "=" + URLEncoder.encode(values.get(i), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
// Log.d("URLBuilder", urlBuilder); // Log.d("URLBuilder", urlBuilder);
return urlBuilder; return urlBuilder;
} }
@ -147,20 +171,53 @@ public class AsyncDatabaseConnector {
} }
public void getTables(){ public void getTables(){
getList(actionUrlBuilder(ACTION_TABLE_LIST)+"&d="+database); getList(actionUrlBuilder(ACTION_TABLE_LIST, "d", database));
} }
public void getFields(String table){ public void getFields(String table){
getList(actionUrlBuilder(ACTION_FIELD_LIST)+"&d="+database+"&t="+table); ArrayList<String> args = new ArrayList<String>();
ArrayList<String> values = new ArrayList<String>();
args.add("d");
values.add(database);
args.add("t");
values.add(table);
getList(actionUrlBuilder(ACTION_FIELD_LIST, args, values));
} }
public void getRows(String table, int count, int page){ public void getRows(String table, int count, int page){
int limitStart = (page-1) * count; int limitStart = (page-1) * count;
getMatrix(actionUrlBuilder(ACTION_DATA_MATRIX)+"&d="+database+"&t="+table+"&s="+limitStart+"&l="+count); ArrayList<String> args = new ArrayList<String>();
ArrayList<String> values = new ArrayList<String>();
args.add("d");
values.add(database);
args.add("t");
values.add(table);
args.add("s");
values.add(String.valueOf(limitStart));
args.add("l");
values.add(String.valueOf(count));
getMatrix(actionUrlBuilder(ACTION_DATA_MATRIX, args, values) );
} }
public void getEntriesCount(String table){ public void getEntriesCount(String table){
String urlQuery = actionUrlBuilder(ACTION_ENTRIES_COUNT)+"&d="+database+"&t="+table; ArrayList<String> args = new ArrayList<String>();
ArrayList<String> values = new ArrayList<String>();
args.add("d");
values.add(database);
args.add("t");
values.add(table);
String urlQuery = actionUrlBuilder(ACTION_ENTRIES_COUNT, args, values);
Downloader downloader = new Downloader(new Downloader.OnFinishedListener() { Downloader downloader = new Downloader(new Downloader.OnFinishedListener() {
@Override @Override
public void onFinished(String data, String error) { public void onFinished(String data, String error) {
@ -180,6 +237,15 @@ public class AsyncDatabaseConnector {
JSONArray newValuesJSON = new JSONArray(); JSONArray newValuesJSON = new JSONArray();
String request; String request;
ArrayList<String> args = new ArrayList<String>();
ArrayList<String> values = new ArrayList<String>();
args.add("d");
values.add(database);
args.add("t");
values.add(table);
for (String aHeader : header) { for (String aHeader : header) {
headerJSON.put(aHeader); headerJSON.put(aHeader);
} }
@ -188,14 +254,22 @@ public class AsyncDatabaseConnector {
newValuesJSON.put(newValue); newValuesJSON.put(newValue);
} }
args.add("h");
values.add(headerJSON.toString());
args.add("v");
values.add(newValuesJSON.toString());
if(oldValues!=null){ if(oldValues!=null){
JSONArray oldValuesJSON = new JSONArray(); JSONArray oldValuesJSON = new JSONArray();
for(int i=0;i<newValues.size();i++){ for(int i=0;i<newValues.size();i++){
oldValuesJSON.put(oldValues.get(i)); oldValuesJSON.put(oldValues.get(i));
} }
request = actionUrlBuilder(ACTION_UPDATE_ELEMENT)+"&d="+database+"&t="+table+"&h="+headerJSON+"&v="+newValuesJSON+"&o="+oldValuesJSON; args.add("o");
values.add(oldValuesJSON.toString());
request = actionUrlBuilder(ACTION_UPDATE_ELEMENT, args, values);
} else } else
request = actionUrlBuilder(ACTION_ADD_ELEMENT)+"&d="+database+"&t="+table+"&h="+headerJSON+"&v="+newValuesJSON; request = actionUrlBuilder(ACTION_ADD_ELEMENT, args, values);
Downloader downloader = new Downloader(new Downloader.OnFinishedListener() { Downloader downloader = new Downloader(new Downloader.OnFinishedListener() {
@Override @Override