Add and update entries!

This commit is contained in:
Przemek Grondek 2014-08-16 18:37:55 +02:00
parent da9a01ce24
commit 43f1acb736
3 changed files with 87 additions and 2 deletions

View file

@ -8,6 +8,7 @@ import android.widget.ArrayAdapter;
import android.widget.EditText; import android.widget.EditText;
import android.widget.TextView; import android.widget.TextView;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -46,4 +47,12 @@ public class ElementArrayAdapter extends ArrayAdapter<String> {
return rowView; return rowView;
} }
public List<String> getFieldArray(){
return fields;
}
public List<String> getValueArray(){
return values;
}
} }

View file

@ -7,14 +7,17 @@ import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListAdapter; import android.widget.ListAdapter;
import android.widget.ListView; import android.widget.ListView;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import info.nerull7.mysqlbrowser.db.AsyncDatabaseConnector; import info.nerull7.mysqlbrowser.db.AsyncDatabaseConnector;
@ -22,13 +25,13 @@ import info.nerull7.mysqlbrowser.db.AsyncDatabaseConnector;
/** /**
* Created by nerull7 on 2014-08-06. * Created by nerull7 on 2014-08-06.
*/ */
public class ElementFragment extends Fragment implements AsyncDatabaseConnector.ListReturnListener { public class ElementFragment extends Fragment implements AsyncDatabaseConnector.ListReturnListener, AsyncDatabaseConnector.StringReturnListener {
public static final String EDIT_ELEMENT = "edit_element"; public static final String EDIT_ELEMENT = "edit_element";
public static final String EDIT_LIST = "edit_element_list"; public static final String EDIT_LIST = "edit_element_list";
private String databaseName; private String databaseName;
private String tableName; private String tableName;
private ListAdapter listAdapter; private ElementArrayAdapter listAdapter;
private ProgressBar progressBar; private ProgressBar progressBar;
private ListView listView; private ListView listView;
@ -50,6 +53,22 @@ public class ElementFragment extends Fragment implements AsyncDatabaseConnector.
return rootView; return rootView;
} }
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == R.id.action_save ){
List<String> fields = listAdapter.getFieldArray();
Static.asyncDatabaseConnector.setStringReturnListener(this);
if(getArguments().getBoolean(EDIT_ELEMENT))
Static.asyncDatabaseConnector.updateElement(tableName, fields, values, getNewValues());
else
Static.asyncDatabaseConnector.addNewElement(tableName, fields, getNewValues());
return true;
} else {
return super.onOptionsItemSelected(item);
}
}
private void initArguments() { private void initArguments() {
databaseName = getArguments().getString(Static.DATABASE_NAME_ARG); databaseName = getArguments().getString(Static.DATABASE_NAME_ARG);
tableName = getArguments().getString(Static.TABLE_NAME_ARG); tableName = getArguments().getString(Static.TABLE_NAME_ARG);
@ -76,4 +95,19 @@ public class ElementFragment extends Fragment implements AsyncDatabaseConnector.
setHasOptionsMenu(true); setHasOptionsMenu(true);
} }
private List<String> getNewValues(){
List<String> newValues = new ArrayList<String>();
for(int i=0; i<listView.getChildCount();i++){
EditText editText = (EditText) listView.getChildAt(i).findViewById(R.id.editFieldValue);
newValues.add(String.valueOf(editText.getText()));
}
return newValues;
}
@Override
public void onStringReturn(String data) { //TODO Better UI handling
Static.showErrorAlert(data,getActivity());
getActivity().finish();
}
} }

View file

@ -5,6 +5,7 @@ import android.util.Log;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
@ -25,6 +26,8 @@ public class AsyncDatabaseConnector {
public static final String ACTION_FIELD_LIST = "fieldlist"; public static final String ACTION_FIELD_LIST = "fieldlist";
public static final String ACTION_ENTRIES_COUNT = "numrows"; public static final String ACTION_ENTRIES_COUNT = "numrows";
public static final String ACTION_DATA_MATRIX = "getrows"; public static final String ACTION_DATA_MATRIX = "getrows";
public static final String ACTION_ADD_ELEMENT = "addelement";
public static final String ACTION_UPDATE_ELEMENT = "updateelement";
private String login; private String login;
private String password; private String password;
@ -169,6 +172,43 @@ public class AsyncDatabaseConnector {
downloader.execute(urlQuery); downloader.execute(urlQuery);
} }
public void addNewElement(String table, List<String> header, List<String> values) {
this.updateElement(table, header, null, values);
}
public void updateElement(String table, List<String> header, List<String> oldValues, List<String> newValues){
JSONArray headerJSON = new JSONArray();
JSONArray newValuesJSON = new JSONArray();
String request;
for(int i=0;i<header.size();i++){
headerJSON.put(header.get(i));
}
for(int i=0;i<newValues.size();i++){
newValuesJSON.put(newValues.get(i));
}
if(oldValues!=null){
JSONArray oldValuesJSON = new JSONArray();
for(int i=0;i<newValues.size();i++){
oldValuesJSON.put(oldValues.get(i));
}
request = actionUrlBuilder(ACTION_UPDATE_ELEMENT)+"&d="+database+"&t="+table+"&h="+headerJSON+"&v="+newValuesJSON+"&o="+oldValuesJSON;
} else
request = actionUrlBuilder(ACTION_ADD_ELEMENT)+"&d="+database+"&t="+table+"&h="+headerJSON+"&v="+newValuesJSON;
Downloader downloader = new Downloader(new Downloader.OnFinishedListener() {
@Override
public void onFinished(String data, String error) {
if(stringReturnListener!=null){
stringReturnListener.onStringReturn(data);
}
}
});
downloader.execute(request);
}
public void setBooleanReturnListener(BooleanReturnListener booleanReturnListener){ public void setBooleanReturnListener(BooleanReturnListener booleanReturnListener){
this.booleanReturnListener = booleanReturnListener; this.booleanReturnListener = booleanReturnListener;
} }
@ -227,6 +267,8 @@ public class AsyncDatabaseConnector {
InputStream inputStream = null; InputStream inputStream = null;
String response; String response;
Log.d("URL REQUEST", urlRequest);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); // TODO Handling no connection HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); // TODO Handling no connection
urlConnection.setReadTimeout(READ_TIMEOUT); urlConnection.setReadTimeout(READ_TIMEOUT);
urlConnection.setConnectTimeout(CONNECTION_TIMEOUT); urlConnection.setConnectTimeout(CONNECTION_TIMEOUT);