package iWish_Activity; import iWish_Activities.Activities; import iWish_Control.ControlFriends; import iWish_Control.ControlUser; import iWish_Friends.Friends; import iWish_Utente.UserIstance; import iWish_database.FriendsDao; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; //import sottostante utile per effettuare comparazione e ordinamenti // import java.util.Comparator; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.ArrayAdapter; import android.widget.Toast; import android.app.ListActivity; import com.progect.iwish.R; /**Antonio*/ public class Friends2Activity extends Activity { private TextView FriendsList; private TextView DeleteFriends; private FriendsDao datasource; private List<Friends> values = null; private Friends mFriends; private ListView mListView; private EditText emailFriends; private String jsonResult; private String url = "http://www.iwishapp.eu/iwishapp/addfriend.php"; private String url2 = "http://www.iwishapp.eu/iwishapp/deletefriends.php"; private ProgressBar waitfriends; private String eMailFriends; private String deleteEmailFriends; private String eMailUser; private String name; private String surname; private Button search; private ImageButton botcerca; private List<Map> data; private SimpleAdapter adapter; private ImageButton bottomino; private String challengeProfile; private Intent intent; private Activities mActivities; private Button delete; private EditText deleteemailfriends; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.friends2); // quando arriva un intent e voglio prendere qualcosa// intent = getIntent(); challengeProfile =(String)intent.getSerializableExtra("Activity"); delete = (Button)findViewById(R.id.deletemail); delete.setVisibility(View.INVISIBLE); deleteemailfriends = (EditText)findViewById(R.id.deleteemailfriends); deleteemailfriends.setVisibility(View.INVISIBLE); eMailUser = UserIstance.getIstanceUserIstance().getEmailUser(); name = UserIstance.getIstanceUserIstance().getName(); surname = UserIstance.getIstanceUserIstance().getSurname(); emailFriends=(EditText)findViewById(R.id.emailfriends); emailFriends.setVisibility(View.INVISIBLE); search=(Button)findViewById(R.id.search); search.setVisibility(View.INVISIBLE); waitfriends=(ProgressBar)findViewById(R.id.waitfriends); waitfriends.setVisibility(View.INVISIBLE); datasource = new FriendsDao(this); datasource.open(); values = datasource.getAllFriends(); mListView = (ListView)findViewById(R.id.listfriends2); data = getFriendsData(values); adapter = new SimpleAdapter(this, (List<? extends Map<String, ?>>) data, R.xml.friends2item, new String[] { "nome", "cognome", "email" }, new int[] { R.id.nome, R.id.cognome, R.id.email }); mListView.setAdapter(adapter); //datasource = new FriendsDao(this); //datasource.open(); //mFriends = new Friends(); //mFriends.setName("antonio"); //mFriends.setSurname("torcasio"); //mFriends.setPoint(0); //mFriends.setEmailFriends("antonio@libero.it"); //mFriends.setEmailUser("amico@libero.it"); //metodo per mandare dati al db// //try{ //ControlFriends.getIstanceControlFriends().saveOnDbFriends(mFriends,getApplicationContext()); //}catch (Exception e) { // Log.i("Friends2Activity", "errore query"); //} //uso il simplecursoradapter per mostrare gli elementi della listview //ArrayAdapter<Friends> adapter= new ArrayAdapter<Friends>(this,android.R.layout.simple_list_item_1,values); FriendsList = (TextView)findViewById(R.id.friendslist); DeleteFriends = (TextView)findViewById(R.id.deletefriends); botcerca = (ImageButton)findViewById(R.id.bot_cerca); bottomino =(ImageButton)findViewById(R.id.bott_omino); if(challengeProfile!=null){ bottomino.setVisibility(View.INVISIBLE); botcerca.setVisibility(View.INVISIBLE); FriendsList.setVisibility(View.INVISIBLE); DeleteFriends.setVisibility(View.INVISIBLE); //per ritornare attività di challenger// mActivities = (Activities)intent.getSerializableExtra("a"); } FriendsList.setOnClickListener(myListener); DeleteFriends.setOnClickListener(myListener); search.setOnClickListener(myListener); botcerca.setOnClickListener(myListener); bottomino.setOnClickListener(myListener); delete.setOnClickListener(myListener); } OnClickListener myListener=new View.OnClickListener(){ public void onClick(View v) { @SuppressWarnings("unchecked") // ArrayAdapter<Friends> adapter = (ArrayAdapter<Friends>)getListAdapter(); Friends friends = null; if(v==bottomino){ Intent intent3 = new Intent(Friends2Activity.this, ProfileActivity.class ); startActivity(intent3); } if (v==FriendsList) { delete.setVisibility(View.INVISIBLE); deleteemailfriends.setVisibility(View.INVISIBLE); values = datasource.getAllFriends(); data = getFriendsData(values); adapter=setAdapter(); mListView.setAdapter(adapter); emailFriends.setVisibility(View.INVISIBLE); search.setVisibility(View.INVISIBLE); mListView.setVisibility(View.VISIBLE); } if (v==DeleteFriends) { mListView.setVisibility(View.INVISIBLE); emailFriends.setVisibility(View.INVISIBLE); search.setVisibility(View.INVISIBLE); delete.setVisibility(View.VISIBLE); deleteemailfriends.setVisibility(View.VISIBLE); } if (v==botcerca) { delete.setVisibility(View.INVISIBLE); deleteemailfriends.setVisibility(View.INVISIBLE); mListView.setVisibility(View.INVISIBLE); emailFriends.setVisibility(View.VISIBLE); search.setVisibility(View.VISIBLE); } if(v==search){ if(emailFriends.getText().toString().equals("")){ CharSequence eMail= "eMail or answer missing!!!"; Toast.makeText(getApplicationContext(), eMail, Toast.LENGTH_LONG).show(); } else{ eMailFriends = emailFriends.getText().toString(); accessWebService(); //inserire amico// } } if(v==delete){ if(deleteemailfriends.getText().toString().equals("")){ CharSequence eMailMissing= "eMail or answer missing!!!"; Toast.makeText(getApplicationContext(), eMailMissing, Toast.LENGTH_LONG).show(); } else{ deleteEmailFriends = deleteemailfriends.getText().toString(); accessWebServiceDelete(); } } // adapter.notifyDataSetChanged(); } }; protected SimpleAdapter setAdapter(){ adapter = new SimpleAdapter(this, (List<? extends Map<String, ?>>) data, R.xml.friends2item, new String[] { "nome", "cognome", "email" }, new int[] { R.id.nome, R.id.cognome, R.id.email }); return adapter; } @Override protected void onResume() { datasource.open(); super.onResume(); } @Override protected void onPause() { datasource.close(); super.onPause(); } private List<Map> getFriendsData(List<Friends> mFriends ) { List<Map>list = new ArrayList<Map>(); Map map = new HashMap(); Iterator<Friends> it= mFriends.iterator(); while(it.hasNext()){ Friends amico = it.next(); map.put("nome", amico.getName()); map.put("cognome", amico.getSurname()); map.put("email", amico.getEmailFriends()); list.add(map); map=new HashMap(); } return list; } // Async Task to access the web private class JsonReadTask extends AsyncTask<String, Void, String> { @Override protected void onPreExecute(){ waitfriends.setVisibility(View.VISIBLE); } @Override protected String doInBackground(String... params) { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(params[0]); try { JSONObject json = new JSONObject();; json.put("eMailFriends", params[1]); json.put("eMailUser", params[2]); json.put("name", params[3]); json.put("surname", params[4]); List<NameValuePair> nameValuePairs; Map<String, String> user = new HashMap<String, String>(); user.put("User", json.toString()); nameValuePairs= new ArrayList<NameValuePair>(user.size()); String k,v; Iterator<String> itKeys= user.keySet().iterator(); while (itKeys.hasNext()){ k=itKeys.next(); v=user.get(k); nameValuePairs.add(new BasicNameValuePair(k,v)); } httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); System.out.println(nameValuePairs); HttpResponse response = httpclient.execute(httppost); jsonResult = inputStreamToString( response.getEntity().getContent()).toString(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); cancel(true); return null; } catch (JSONException e) { e.printStackTrace(); return null; } return null; } private StringBuilder inputStreamToString(InputStream is) { System.out.println(is); String rLine = ""; StringBuilder answer = new StringBuilder(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); try { while ((rLine = rd.readLine()) != null) { answer.append(rLine); } } catch (IOException e) { // e.printStackTrace(); Toast.makeText(getApplicationContext(), "Error..." + e.toString(), Toast.LENGTH_LONG).show(); } return answer; } protected void onCancelled(){ super.onCancelled(); waitfriends.setVisibility(View.INVISIBLE); CharSequence pass= "Not connected to the internet or server error"; Toast.makeText(getApplicationContext(), pass, Toast.LENGTH_LONG).show(); } @Override protected void onPostExecute(String result) { System.out.println(jsonResult); waitfriends.setVisibility(View.INVISIBLE); if(jsonResult.equals("[]")){ CharSequence pass= "eMail friends no found"; Toast.makeText(getApplicationContext(), pass, Toast.LENGTH_LONG).show(); } else{ try { JSONObject jsonResponse = new JSONObject(jsonResult); JSONArray jsonMainNode = jsonResponse.optJSONArray("User"); System.out.println(jsonResponse); System.out.println(jsonMainNode); JSONObject jsonChildNode = jsonMainNode.getJSONObject(0); //quello che ricevo dal db online// String name = jsonChildNode.optString("name"); String surname = jsonChildNode.optString("surname"); String point = jsonChildNode.optString("point"); //una volta ricevuti gli amici creo un oggetto friends e lo passo al db locale// Friends amico = new Friends(); amico.setName(name); amico.setSurname(surname); //faccio il cast di punti a int // int punti = 0 ; try { punti = Integer.parseInt(point); } catch (Exception e){ e.printStackTrace(); } amico.setPoint(punti); amico.setEmailFriends(eMailFriends); amico.setEmailUser(eMailUser); //metodo per mandare dati al db locale// try{ ControlFriends.getIstanceControlFriends().saveOnDbFriends(amico,getApplicationContext()); }catch (Exception e) { Log.i("Friends2Activity", "errore query"); } CharSequence amico2= "Friend added" ; Toast.makeText(getApplicationContext(), amico2, Toast.LENGTH_LONG).show(); } catch (JSONException e) { Toast.makeText(getApplicationContext(), "Error" + e.toString(),Toast.LENGTH_SHORT).show(); } } } }// end async task public void accessWebService(){ JsonReadTask task = new JsonReadTask(); // passes values for the urls string array task.execute(new String[] { url, eMailFriends,eMailUser, name, surname}); } // Async Task to delete from the web private class JsonDeleteTask extends AsyncTask<String, Void, String> { @Override protected void onPreExecute(){ waitfriends.setVisibility(View.VISIBLE); } @Override protected String doInBackground(String... params) { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(params[0]); try { JSONObject json = new JSONObject();; json.put("eMailFriends", params[1]); json.put("eMailUser", params[2]); List<NameValuePair> nameValuePairs; Map<String, String> user = new HashMap<String, String>(); //"Friends2" lo ritrovo nel php online// user.put("Friends", json.toString()); nameValuePairs= new ArrayList<NameValuePair>(user.size()); String k,v; Iterator<String> itKeys= user.keySet().iterator(); while (itKeys.hasNext()){ k=itKeys.next(); v=user.get(k); nameValuePairs.add(new BasicNameValuePair(k,v)); } httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); System.out.println(nameValuePairs); HttpResponse response = httpclient.execute(httppost); jsonResult = inputStreamToString( response.getEntity().getContent()).toString(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); cancel(true); return null; } catch (JSONException e) { e.printStackTrace(); return null; } return null; } private StringBuilder inputStreamToString(InputStream is) { System.out.println(is); String rLine = ""; StringBuilder answer = new StringBuilder(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); try { while ((rLine = rd.readLine()) != null) { answer.append(rLine); } } catch (IOException e) { // e.printStackTrace(); Toast.makeText(getApplicationContext(), "Error..." + e.toString(), Toast.LENGTH_LONG).show(); } return answer; } protected void onCancelled(){ super.onCancelled(); waitfriends.setVisibility(View.INVISIBLE); CharSequence pass= "Not connected to the internet or server error"; Toast.makeText(getApplicationContext(), pass, Toast.LENGTH_LONG).show(); } @Override protected void onPostExecute(String result) { System.out.println(jsonResult); waitfriends.setVisibility(View.INVISIBLE); if(jsonResult.equals("[]")){ CharSequence pass= "eMail friends no found"; Toast.makeText(getApplicationContext(), pass, Toast.LENGTH_LONG).show(); } else{ try { JSONObject jsonResponse = new JSONObject(jsonResult); JSONArray jsonMainNode = jsonResponse.optJSONArray("Friends1"); System.out.println(jsonResponse); System.out.println(jsonMainNode); //JSONObject jsonChildNode = jsonMainNode.getJSONObject(0); //quello che ricevo dal db online// //String name = jsonChildNode.optString("name"); //String surname = jsonChildNode.optString("surname"); //String point = jsonChildNode.optString("point"); //una volta ricevuti gli amici creo un oggetto friends e lo passo al db locale// //Friends amico = new Friends(); //amico.setName(name); //amico.setSurname(surname); //faccio il cast di punti a int // //int punti = 0 ; //try { // punti = Integer.parseInt(point); //} //catch (Exception e){ // e.printStackTrace(); //} //amico.setPoint(punti); //amico.setEmailFriends(eMailFriends); //amico.setEmailUser(eMailUser); //metodo per mandare dati al db locale// try{ ControlFriends.getIstanceControlFriends().deleteOnDBOneFriends(deleteEmailFriends, getApplicationContext()); }catch (Exception e) { Log.i("Friends2Activity", "errore query"); } CharSequence amico2= "Friend deleted" ; Toast.makeText(getApplicationContext(), amico2, Toast.LENGTH_LONG).show(); } catch (JSONException e) { Toast.makeText(getApplicationContext(), "Error" + e.toString(),Toast.LENGTH_SHORT).show(); } } } }// end async task public void accessWebServiceDelete(){ JsonDeleteTask task = new JsonDeleteTask(); // passes values for the urls string array task.execute(new String[] { url2, deleteEmailFriends,eMailUser}); } //@Override //public void onBackPressed() { //Intent intent3 = new Intent(Friends2Activity.this, ProfileActivity.class ); //startActivity(intent3); //} }