package com.basket.activities; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.Toast; import com.basket.containers.BasketSession; import com.basket.general.CarJsonSpringAndroidSpiceService; import com.basket.general.Category; import com.basket.restrequest.AdminCreateCatReq; import com.basket.restrequest.GetCatParent; import com.example.basket.R; import com.octo.android.robospice.SpiceManager; import com.octo.android.robospice.exception.RequestCancelledException; import com.octo.android.robospice.persistence.exception.SpiceException; import com.octo.android.robospice.request.listener.RequestListener; import com.octo.android.robospice.request.listener.RequestProgress; import com.octo.android.robospice.request.listener.RequestProgressListener; public class AdminCreateCategory extends Activity { private Spinner mSpinner; private SpiceManager spiceManager= new SpiceManager(CarJsonSpringAndroidSpiceService.class); private EditText catNameET,subCatName; private Button catBut, subCatBut; private Category c; ArrayList<String> catName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_create_category); catBut = (Button) findViewById(R.id.catCreate); subCatBut = (Button) findViewById(R.id.subCatCreate); catNameET = (EditText) findViewById(R.id.catName); subCatName = (EditText) findViewById(R.id.subCatName); catBut.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!spiceManager.isStarted()) { spiceManager.start(AdminCreateCategory.this); c = new Category(); c.setName(catNameET.getText().toString()); spiceManager.execute(new AdminCreateCatReq(c), new AdminCreateCategoryListner()); } } }); subCatBut.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!spiceManager.isStarted()) { spiceManager.start(AdminCreateCategory.this); c = new Category(); c.setName(subCatName.getText().toString()); Category temp = new Category(); temp.setName((String)mSpinner.getSelectedItem()); c.setParent(temp); spiceManager.execute(new GetCatParent(temp), new GetCatParentListner1P()); } } }); mSpinner = (Spinner) findViewById(R.id.maincatspin); catName = new ArrayList<String>(); for(Category c:BasketSession.getCategory()){ catName.add(c.getName()); } ArrayAdapter<String> catNameAdapter = new ArrayAdapter<String>(this, R.layout.simple_spinner_item,catName); catNameAdapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item); mSpinner.setAdapter(catNameAdapter); } private class AdminCreateCategoryListner implements RequestListener<Boolean>, RequestProgressListener { @Override public void onRequestFailure(SpiceException arg0) { Log.d("error",arg0.getMessage()); if (!(arg0 instanceof RequestCancelledException)) { Toast.makeText(AdminCreateCategory.this, "Could not create category", Toast.LENGTH_SHORT).show(); } spiceManager.shouldStop(); } @Override public void onRequestSuccess(Boolean newCat) { spiceManager.shouldStop(); if(newCat){ Toast.makeText(AdminCreateCategory.this, "Success", Toast.LENGTH_SHORT).show(); BasketSession.getCategory().add(c); catName.add(c.getName()); } } @Override public void onRequestProgressUpdate(RequestProgress arg0) { } } private class GetCatParentListner1P implements RequestListener<String>, RequestProgressListener { @Override public void onRequestFailure(SpiceException arg0) { Log.d("error",arg0.getMessage()); if (!(arg0 instanceof RequestCancelledException)) { Toast.makeText(AdminCreateCategory.this, "Could not create sub category", Toast.LENGTH_SHORT).show(); } if(spiceManager.isStarted()) spiceManager.shouldStop(); } @Override public void onRequestSuccess(String catParent) { //Gets parent's parent if(catParent==null||catParent.equals("")) { spiceManager.execute(new AdminCreateCatReq(c), new AdminCreateCategoryListner()); } else{ Category parent1 = new Category(); parent1.setName(catParent); spiceManager.execute(new GetCatParent(parent1), new GetCatParentListner2P()); } } @Override public void onRequestProgressUpdate(RequestProgress arg0) { } } private class GetCatParentListner2P implements RequestListener<String>, RequestProgressListener { @Override public void onRequestFailure(SpiceException arg0) { Log.d("error",arg0.getMessage()); if (!(arg0 instanceof RequestCancelledException)) { Toast.makeText(AdminCreateCategory.this, "Could not create sub category", Toast.LENGTH_SHORT).show(); } if(spiceManager.isStarted()) spiceManager.shouldStop(); } @Override public void onRequestSuccess(String catParent) { if(catParent==null||catParent.equals("")||catParent.equals("null")) { spiceManager.execute(new AdminCreateCatReq(c), new AdminCreateCategoryListner()); } else{ spiceManager.shouldStop(); Toast.makeText(AdminCreateCategory.this, "Could not create sub category", Toast.LENGTH_LONG).show(); } } @Override public void onRequestProgressUpdate(RequestProgress arg0) { } } }