Handling errors DO NOT MERGE
This commit is contained in:
parent
f223b58e21
commit
414cb10630
6 changed files with 60 additions and 33 deletions
app/src/main
java/info/nerull7/mysqlbrowser
res
|
@ -71,6 +71,11 @@ public class DatabaseFragment extends Fragment implements AdapterView.OnItemClic
|
||||||
listAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, databases);
|
listAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, databases);
|
||||||
databasesListView.setAdapter(listAdapter);
|
databasesListView.setAdapter(listAdapter);
|
||||||
databasesListView.setOnItemClickListener(this);
|
databasesListView.setOnItemClickListener(this);
|
||||||
|
} else if(Static.asyncDatabaseConnector.hadError) {
|
||||||
|
if(Static.asyncDatabaseConnector.errorMsg!=null)
|
||||||
|
Static.showErrorAlert(Static.asyncDatabaseConnector.errorMsg, getActivity());
|
||||||
|
else
|
||||||
|
Static.showErrorAlert(getResources().getString(Static.asyncDatabaseConnector.errorMsgResource), getActivity());
|
||||||
} else {
|
} else {
|
||||||
TextView errorMessage = new TextView(getActivity());
|
TextView errorMessage = new TextView(getActivity());
|
||||||
errorMessage.setText(R.string.error_no_databases);
|
errorMessage.setText(R.string.error_no_databases);
|
||||||
|
|
|
@ -112,7 +112,12 @@ public class LoginFragment extends Fragment implements View.OnClickListener, Asy
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Static.showErrorAlert(AsyncDatabaseConnector.errorMsg, getActivity());
|
if(AsyncDatabaseConnector.errorMsg!=null)
|
||||||
|
Static.showErrorAlert(AsyncDatabaseConnector.errorMsg, getActivity());
|
||||||
|
else {
|
||||||
|
String errorMsg = getResources().getString(AsyncDatabaseConnector.errorMsgResource);
|
||||||
|
Static.showErrorAlert(errorMsg, getActivity());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
loginButton.setEnabled(true); // Now we can click button again
|
loginButton.setEnabled(true); // Now we can click button again
|
||||||
|
|
|
@ -70,6 +70,11 @@ public class TableFragment extends Fragment implements AdapterView.OnItemClickLi
|
||||||
listAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, tables);
|
listAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, tables);
|
||||||
tablesList.setAdapter(listAdapter);
|
tablesList.setAdapter(listAdapter);
|
||||||
tablesList.setOnItemClickListener(this);
|
tablesList.setOnItemClickListener(this);
|
||||||
|
} else if(Static.asyncDatabaseConnector.hadError) {
|
||||||
|
if (Static.asyncDatabaseConnector.errorMsg != null)
|
||||||
|
Static.showErrorAlert(Static.asyncDatabaseConnector.errorMsg, getActivity());
|
||||||
|
else
|
||||||
|
Static.showErrorAlert(getResources().getString(Static.asyncDatabaseConnector.errorMsgResource), getActivity());
|
||||||
} else {
|
} else {
|
||||||
TextView errorMessage = new TextView(getActivity());
|
TextView errorMessage = new TextView(getActivity());
|
||||||
errorMessage.setText(R.string.error_no_tables);
|
errorMessage.setText(R.string.error_no_tables);
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
package info.nerull7.mysqlbrowser.db;
|
package info.nerull7.mysqlbrowser.db;
|
||||||
|
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.util.Log;
|
|
||||||
import android.widget.ArrayAdapter;
|
|
||||||
|
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
|
@ -12,8 +10,9 @@ 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.io.UnsupportedEncodingException;
|
||||||
import java.net.ConnectException;
|
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.SocketException;
|
||||||
|
import java.net.SocketTimeoutException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -49,6 +48,8 @@ public class AsyncDatabaseConnector {
|
||||||
private MatrixReturnListener matrixReturnListener;
|
private MatrixReturnListener matrixReturnListener;
|
||||||
|
|
||||||
public static String errorMsg;
|
public static String errorMsg;
|
||||||
|
public static int errorMsgResource;
|
||||||
|
public static boolean hadError;
|
||||||
private OnPostExecuteListener onPostExecuteListener;
|
private OnPostExecuteListener onPostExecuteListener;
|
||||||
|
|
||||||
public AsyncDatabaseConnector(String login, String password, String url){
|
public AsyncDatabaseConnector(String login, String password, String url){
|
||||||
|
@ -56,6 +57,8 @@ public class AsyncDatabaseConnector {
|
||||||
this.password = password;
|
this.password = password;
|
||||||
this.url = url;
|
this.url = url;
|
||||||
|
|
||||||
|
hadError = false;
|
||||||
|
|
||||||
booleanReturnListener=null;
|
booleanReturnListener=null;
|
||||||
stringReturnListener=null;
|
stringReturnListener=null;
|
||||||
listReturnListener=null;
|
listReturnListener=null;
|
||||||
|
@ -101,6 +104,8 @@ public class AsyncDatabaseConnector {
|
||||||
@Override
|
@Override
|
||||||
public void onFinished(String data, String error) {
|
public void onFinished(String data, String error) {
|
||||||
List<String>list = null;
|
List<String>list = null;
|
||||||
|
if(data==null)
|
||||||
|
return;
|
||||||
try {
|
try {
|
||||||
list = parseListFromJSON(data);
|
list = parseListFromJSON(data);
|
||||||
} catch (JSONException e) { e.printStackTrace(); }
|
} catch (JSONException e) { e.printStackTrace(); }
|
||||||
|
@ -393,38 +398,42 @@ public class AsyncDatabaseConnector {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String httpRequest(String urlRequest) throws IOException {
|
private String httpRequest(String urlRequest) throws IOException {
|
||||||
URL url = new URL(urlRequest);
|
|
||||||
InputStream inputStream = null;
|
|
||||||
String response;
|
|
||||||
|
|
||||||
// Log.d("URL REQUEST", urlRequest);
|
|
||||||
|
|
||||||
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); // TODO Handling no connection
|
|
||||||
urlConnection.setReadTimeout(READ_TIMEOUT);
|
|
||||||
urlConnection.setConnectTimeout(CONNECTION_TIMEOUT);
|
|
||||||
urlConnection.setRequestMethod(CONNECTION_REQUEST_METHOD);
|
|
||||||
try {
|
try {
|
||||||
urlConnection.connect();
|
URL url = new URL(urlRequest);
|
||||||
} catch (ConnectException e) {
|
InputStream inputStream = null;
|
||||||
// errorMsg = e.getMessage();
|
String response;
|
||||||
if (e.getCause().equals(CONNECTION_REQUEST_METHOD)) {
|
|
||||||
errorMsg == R.string.error_connection_timeout; // FIXME
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
|
// Log.d("URL REQUEST", urlRequest);
|
||||||
try {
|
|
||||||
inputStream = urlConnection.getInputStream();
|
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
|
||||||
response = readStream(inputStream);
|
urlConnection.setReadTimeout(READ_TIMEOUT);
|
||||||
} finally {
|
urlConnection.setConnectTimeout(CONNECTION_TIMEOUT);
|
||||||
if(inputStream!=null)
|
urlConnection.setRequestMethod(CONNECTION_REQUEST_METHOD);
|
||||||
inputStream.close();
|
|
||||||
urlConnection.disconnect();
|
urlConnection.connect();
|
||||||
|
if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
|
||||||
|
try {
|
||||||
|
inputStream = urlConnection.getInputStream();
|
||||||
|
response = readStream(inputStream);
|
||||||
|
} finally {
|
||||||
|
if (inputStream != null)
|
||||||
|
inputStream.close();
|
||||||
|
urlConnection.disconnect();
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
} else {
|
||||||
|
errorString = "ERROR " + urlConnection.getResponseCode() + ": " + urlConnection.getResponseMessage();
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
return response;
|
} catch (SocketException exception){
|
||||||
}
|
hadError = true;
|
||||||
else {
|
errorMsgResource = R.string.error_connection_reset;
|
||||||
errorString = "ERROR "+urlConnection.getResponseCode()+": "+urlConnection.getResponseMessage();
|
errorMsg = null;
|
||||||
|
return null;
|
||||||
|
} catch (SocketTimeoutException exception){
|
||||||
|
hadError = true;
|
||||||
|
errorMsgResource = R.string.error_connection_timeout;
|
||||||
|
errorMsg = null;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -448,6 +457,7 @@ public class AsyncDatabaseConnector {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String doInBackground(String... strings) {
|
protected String doInBackground(String... strings) {
|
||||||
|
hadError = false;
|
||||||
try {
|
try {
|
||||||
String data = httpRequest(strings[0]);
|
String data = httpRequest(strings[0]);
|
||||||
onFinishedListener.onFinished(data, errorMsg); // Can't be null cos we demand listener in constructor
|
onFinishedListener.onFinished(data, errorMsg); // Can't be null cos we demand listener in constructor
|
||||||
|
|
|
@ -43,5 +43,6 @@
|
||||||
<string name="save_credentials">Zapamiętaj poświadczenia</string>
|
<string name="save_credentials">Zapamiętaj poświadczenia</string>
|
||||||
<string name="connector_url">URL Wtyczki php</string>
|
<string name="connector_url">URL Wtyczki php</string>
|
||||||
<string name="no_connection">Brak połączenia internetowego</string>
|
<string name="no_connection">Brak połączenia internetowego</string>
|
||||||
|
<string name="error_connection_timeout">Przekroczono czas połączenia</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -50,5 +50,6 @@
|
||||||
<string name="connector_url">Connector URL</string>
|
<string name="connector_url">Connector URL</string>
|
||||||
<string name="no_connection">No Internet Connection</string>
|
<string name="no_connection">No Internet Connection</string>
|
||||||
<string name="error_connection_timeout">Connection timeout</string>
|
<string name="error_connection_timeout">Connection timeout</string>
|
||||||
|
<string name="error_connection_reset">Connection reset by server</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue