package com.gathr.gathr;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Base64;
import android.util.Log;
import android.widget.Toast;
import static java.sql.DriverManager.println;
public class QueryDB {
protected String result = null;
protected String user_id = "0";
protected String fb_id = "0";
MyGlobals global;
QueryDB(Context c, String _fb_id){
fb_id = _fb_id;
global = new MyGlobals(c);
}
QueryDB(Context c, String _fb_id, String _user_id){
global = new MyGlobals(c);
fb_id = _fb_id;
user_id = _user_id;
}
private class innerQueryDB extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String[] arg0) {
try {
String link = "http://aarshv.siteground.net/webservice.php?fid=" + fb_id + "&uid=" + user_id;
byte[] encoded = Base64.encode(arg0[0].getBytes("CP1252"), Base64.DEFAULT);
String str = new String(encoded, "CP1252");
String data = URLEncoder.encode("query", "UTF-8") + "=" + URLEncoder.encode(str, "UTF-8");
//Open URL
URL url = new URL(link);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
//Send POST Arguments
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
//Read Encoded JSON from Server
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
sb.append(line + "\n");
byte[] decoded = Base64.decode(sb.toString().getBytes("CP1252"), Base64.DEFAULT);
result = new String(decoded,"CP1252");
return result;
} catch (Exception e) {
return "Exception: " + e.getMessage();
}
}
}
public void executeQuery(String query) throws GathrException{
global.checkInternet();
if(fb_id == "0"){
throw new GathrException("NO FID - PERMISSION DENIED");
}else {
result = null;
new innerQueryDB().execute(query);
}
}
public String getResults() throws GathrException{
global.checkInternet();
while(result == null){
//We must wait till we actually have stuff
}
if(result.contains("ERROR")){
throw new GathrException(result.split(":")[1].trim());
}
return result;
}
public String escapeString(String escapeThis){
escapeThis = escapeThis.replace("\\","\\\\");
escapeThis = escapeThis.replace("'","\\'");
escapeThis = escapeThis.replace("\"","\\\"");
return escapeThis;
}
}