package
suhan.gorya.makersofandroid;
import
java.util.ArrayList;
import
java.util.List;
import
org.apache.http.NameValuePair;
import
org.apache.http.message.BasicNameValuePair;
import
org.json.JSONArray;
import
org.json.JSONException;
import
org.json.JSONObject;
import
android.app.Activity;
import
android.app.ProgressDialog;
import
android.content.Intent;
import
android.os.AsyncTask;
import
android.os.Bundle;
import
android.util.Log;
import
android.view.View;
import
android.widget.Button;
import
android.widget.EditText;
public
class
EditProductActivity
extends
Activity {
EditText txtName;
EditText txtPrice;
EditText txtDesc;
EditText txtCreatedAt;
Button btnSave;
Button btnDelete;
String pid;
private
ProgressDialog pDialog;
JSONParser jsonParser =
new
JSONParser();
private
static
final
String TAG_SUCCESS =
"success"
;
private
static
final
String TAG_PRODUCT =
"product"
;
private
static
final
String TAG_PID =
"pid"
;
private
static
final
String TAG_NAME =
"name"
;
private
static
final
String TAG_PRICE =
"price"
;
private
static
final
String TAG_DESCRIPTION =
"description"
;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.edit_product);
btnSave = (Button) findViewById(R.id.btnSave);
btnDelete = (Button) findViewById(R.id.btnDelete);
Intent i = getIntent();
pid = i.getStringExtra(TAG_PID);
new
GetProductDetails().execute();
btnSave.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View arg0) {
new
SaveProductDetails().execute();
}
});
btnDelete.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View arg0) {
new
DeleteProduct().execute();
}
});
}
/**
* Background Async Task to Get complete product details
* */
class
GetProductDetails
extends
AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected
void
onPreExecute() {
super
.onPreExecute();
pDialog =
new
ProgressDialog(EditProductActivity.
this
);
pDialog.setMessage(
"Loading product details. Please wait..."
);
pDialog.setIndeterminate(
false
);
pDialog.setCancelable(
true
);
pDialog.show();
}
/**
* Getting product details in background thread
* */
protected
String doInBackground(String... params) {
runOnUiThread(
new
Runnable() {
public
void
run() {
int
success;
try
{
List<NameValuePair> params =
new
ArrayList<NameValuePair>();
params.add(
new
BasicNameValuePair(
"pid"
, pid));
JSONObject json = jsonParser.makeHttpRequest(
url_product_detials,
"GET"
, params);
Log.d(
"Single Product Details"
, json.toString());
success = json.getInt(TAG_SUCCESS);
if
(success ==
1
) {
JSONArray productObj = json
.getJSONArray(TAG_PRODUCT);
JSONObject product = productObj.getJSONObject(
0
);
txtName = (EditText) findViewById(R.id.inputName);
txtPrice = (EditText) findViewById(R.id.inputPrice);
txtDesc = (EditText) findViewById(R.id.inputDesc);
txtName.setText(product.getString(TAG_NAME));
txtPrice.setText(product.getString(TAG_PRICE));
txtDesc.setText(product.getString(TAG_DESCRIPTION));
}
else
{
}
}
catch
(JSONException e) {
e.printStackTrace();
}
}
});
return
null
;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected
void
onPostExecute(String file_url) {
pDialog.dismiss();
}
}
/**
* Background Async Task to Save product Details
* */
class
SaveProductDetails
extends
AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected
void
onPreExecute() {
super
.onPreExecute();
pDialog =
new
ProgressDialog(EditProductActivity.
this
);
pDialog.setMessage(
"Saving product ..."
);
pDialog.setIndeterminate(
false
);
pDialog.setCancelable(
true
);
pDialog.show();
}
/**
* Saving product
* */
protected
String doInBackground(String... args) {
String name = txtName.getText().toString();
String price = txtPrice.getText().toString();
String description = txtDesc.getText().toString();
List<NameValuePair> params =
new
ArrayList<NameValuePair>();
params.add(
new
BasicNameValuePair(TAG_PID, pid));
params.add(
new
BasicNameValuePair(TAG_NAME, name));
params.add(
new
BasicNameValuePair(TAG_PRICE, price));
params.add(
new
BasicNameValuePair(TAG_DESCRIPTION, description));
JSONObject json = jsonParser.makeHttpRequest(url_update_product,
"POST"
, params);
try
{
int
success = json.getInt(TAG_SUCCESS);
if
(success ==
1
) {
Intent i = getIntent();
setResult(
100
, i);
finish();
}
else
{
}
}
catch
(JSONException e) {
e.printStackTrace();
}
return
null
;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected
void
onPostExecute(String file_url) {
pDialog.dismiss();
}
}
/*****************************************************************
* Background Async Task to Delete Product
* */
class
DeleteProduct
extends
AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected
void
onPreExecute() {
super
.onPreExecute();
pDialog =
new
ProgressDialog(EditProductActivity.
this
);
pDialog.setMessage(
"Deleting Product..."
);
pDialog.setIndeterminate(
false
);
pDialog.setCancelable(
true
);
pDialog.show();
}
/**
* Deleting product
* */
protected
String doInBackground(String... args) {
int
success;
try
{
List<NameValuePair> params =
new
ArrayList<NameValuePair>();
params.add(
new
BasicNameValuePair(
"pid"
, pid));
JSONObject json = jsonParser.makeHttpRequest(
url_delete_product,
"POST"
, params);
Log.d(
"Delete Product"
, json.toString());
success = json.getInt(TAG_SUCCESS);
if
(success ==
1
) {
Intent i = getIntent();
setResult(
100
, i);
finish();
}
}
catch
(JSONException e) {
e.printStackTrace();
}
return
null
;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected
void
onPostExecute(String file_url) {
pDialog.dismiss();
}
}
}