package com.vt.vthacks; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URI; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpHost; 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 android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.text.Editable; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class AddGroupFragment extends Fragment { private EditText membersEditText; private EditText ideasEditText; private EditText emailEditText; private EditText twitterEditText; private EditText phoneEditText; private EditText passwordEditText; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.add_group, container, false); membersEditText = (EditText) view.findViewById(R.id.membersEditText); ideasEditText = (EditText) view.findViewById(R.id.ideasEditText); emailEditText = (EditText) view.findViewById(R.id.emailEditText); twitterEditText = (EditText) view.findViewById(R.id.twitterEditText); phoneEditText = (EditText) view.findViewById(R.id.phoneEditText); passwordEditText = (EditText) view.findViewById(R.id.passwordEditText); Button addGroupButton = (Button) view.findViewById(R.id.addGroupButton); addGroupButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String members = getText(membersEditText); String ideas = getText(ideasEditText); String email = getText(emailEditText); String twitter = getText(twitterEditText); String phone = getText(phoneEditText); String password = getText(passwordEditText); if (members == null) { Toast.makeText(getActivity(), R.string.members_empty, Toast.LENGTH_SHORT).show(); return; } if (ideas == null) { Toast.makeText(getActivity(), R.string.ideas_empty, Toast.LENGTH_SHORT).show(); return; } if (password == null) { Toast.makeText(getActivity(), R.string.password_empty, Toast.LENGTH_SHORT).show(); return; } if (email == null && twitter == null && phone == null) { Toast.makeText(getActivity(), R.string.all_contact_info_empty, Toast.LENGTH_SHORT).show(); return; } AddGroupTaskArgs args = new AddGroupTaskArgs(members, ideas, email, twitter, phone, password); new AddGroupTask().execute(args); } }); return view; } private String getText(EditText editText) { Editable editable = editText.getText(); if (editable == null) { return null; } String str = editable.toString(); if (str == null || str.length() <= 0) { return null; } return str; } private class AddGroupTask extends AsyncTask<AddGroupTaskArgs, Void, HttpResponse> { private static final String TAG = "AddGroupTask"; private static final String HOST_NAME = "vthacks-env-pmkrjpmqpu.elasticbeanstalk.com"; private static final int PORT = 80; private static final String SCHEME = "http"; @Override protected HttpResponse doInBackground(AddGroupTaskArgs... args) { if (args == null || args.length != 1) { return null; } AddGroupTaskArgs addGroupTaskArgs = args[0]; HttpClient httpClient = new DefaultHttpClient(); HttpHost httpHost = new HttpHost(HOST_NAME, PORT, SCHEME); HttpPost post = new HttpPost(); post.setURI(URI.create("/groups")); List<NameValuePair> formParameters = new ArrayList<NameValuePair>(); formParameters.add(new BasicNameValuePair("password", addGroupTaskArgs.getPassword())); formParameters.add(new BasicNameValuePair("members", addGroupTaskArgs.getMembers())); formParameters.add(new BasicNameValuePair("ideas", addGroupTaskArgs.getIdeas())); if (addGroupTaskArgs.getEmail() != null) { formParameters.add(new BasicNameValuePair("email", addGroupTaskArgs.getEmail())); } if (addGroupTaskArgs.getTwitter() != null) { formParameters.add(new BasicNameValuePair("twitter", addGroupTaskArgs.getTwitter())); } if (addGroupTaskArgs.getPhone() != null) { formParameters.add(new BasicNameValuePair("phone", addGroupTaskArgs.getPhone())); } try { post.setEntity(new UrlEncodedFormEntity(formParameters)); } catch (UnsupportedEncodingException e) { Log.d(TAG, "UnsupportedEncodingException: " + e.getMessage()); return null; } try { return httpClient.execute(httpHost, post); } catch (ClientProtocolException e) { Log.d(TAG, "ClientProtocolException: " + e.getMessage()); return null; } catch (IOException e) { Log.d(TAG, "IOException: " + e.getMessage()); return null; } } @Override protected void onPostExecute(HttpResponse result) { super.onPostExecute(result); if (result == null) { Toast.makeText(getActivity(), R.string.http_problem_with_response, Toast.LENGTH_SHORT).show(); return; } int responseCode = result.getStatusLine().getStatusCode(); if (responseCode != 200) { if (responseCode == 400) { Toast.makeText(getActivity(), R.string.http_malformed_request, Toast.LENGTH_SHORT).show(); } } else { Toast.makeText(getActivity(), R.string.add_group_success, Toast.LENGTH_SHORT).show(); getActivity().onBackPressed(); } } } private class AddGroupTaskArgs { private String members; private String ideas; private String email; private String twitter; private String phone; private String password; public AddGroupTaskArgs(String members, String ideas, String email, String twitter, String phone, String password) { this.members = members; this.ideas = ideas; this.email = email; this.twitter = twitter; this.phone = phone; this.password = password; } public String getMembers() { return members; } public String getIdeas() { return ideas; } public String getEmail() { return email; } public String getTwitter() { return twitter; } public String getPhone() { return phone; } public String getPassword() { return password; } } }