diff --git a/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/EditPolicyActivity.java b/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/EditPolicyActivity.java index 11b9930..42c2f37 100644 --- a/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/EditPolicyActivity.java +++ b/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/EditPolicyActivity.java @@ -1,5 +1,6 @@ package pt.ulisboa.tecnico.ist.cmu.locmess; +import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; @@ -11,6 +12,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import pt.ulisboa.tecnico.ist.cmu.locmess.adapters.TopicsListAdapter; @@ -21,6 +23,7 @@ public class EditPolicyActivity extends AppCompatActivity { private static final String[] mockTopics = {"os=linux", "university=ist", "club=none"}; private ArrayList topics = new ArrayList(Arrays.asList(mockTopics)); private TopicsListAdapter topicsAdapter; + private String policyChoice=""; @Override protected void onCreate(Bundle savedInstanceState) { @@ -28,7 +31,7 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_edit_policy); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setDisplayHomeAsUpEnabled(false); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.abAddTopic); fab.setOnClickListener(new View.OnClickListener() { @@ -52,10 +55,26 @@ public void onRadioButtonClicked(View view) { switch(view.getId()) { case R.id.rbBlackList: Log.v(TAG, "Black " + checked); // FIXME remove this + policyChoice="Black"; break; case R.id.rbWhiteList: Log.v(TAG, "White " + checked); // FIXME remove this + policyChoice="White"; break; } } + + @Override + public void onBackPressed(){ + Intent returnIntent = new Intent(); + returnIntent.putExtra("policyType",policyChoice); + returnIntent.putExtra("topics",topics); + setResult(RESULT_OK,returnIntent); + finish(); + } + + @Override + protected void onDestroy(){ + super.onDestroy(); + } } diff --git a/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/LocMessManager.java b/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/LocMessManager.java index a319e46..2cc6a8e 100644 --- a/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/LocMessManager.java +++ b/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/LocMessManager.java @@ -25,6 +25,7 @@ public interface CompleteCallback{ void OnComplete(boolean result, String message); } public static final int PICK_LOCATION_REQUEST=1; + public static final int PICK_POLICY_REQUEST=2; private static LocMessManager _manager=null; private String _currentToken = "undefined"; private String _username = "undefined"; diff --git a/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/NewMessageActivity.java b/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/NewMessageActivity.java index 193a6ff..46eb716 100644 --- a/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/NewMessageActivity.java +++ b/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/NewMessageActivity.java @@ -17,22 +17,24 @@ import android.widget.Toast; import java.util.ArrayList; +import java.util.List; import pt.ulisboa.tecnico.ist.cmu.locmess.commands.AbstractCommand; import pt.ulisboa.tecnico.ist.cmu.locmess.commands.PostMessageCommand; +import pt.ulisboa.tecnico.ist.cmu.locmess.dto.PolicyDto; +import pt.ulisboa.tecnico.ist.cmu.locmess.dto.TopicDto; public class NewMessageActivity extends AppCompatActivity { private AbstractCommand command; private String TAG="NewMesageActivity"; - + private PolicyDto _policy=null; private String modes[] = new String[]{ "Centralized", "Decentralized", "Mode" }; - @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -97,8 +99,8 @@ public boolean onOptionsItemSelected(MenuItem menuItem) { } public void selectPolicy(View v){ - Intent i = new Intent(this, SelectPolicyActivity.class); - startActivity(i); + Intent i = new Intent(this, EditPolicyActivity.class); + startActivityForResult(i, LocMessManager.PICK_POLICY_REQUEST); } public void selectLocation(View v){ @@ -108,6 +110,7 @@ public void selectLocation(View v){ //startActivity(i); } + public void postMesage(View v){ TextView location = (TextView)findViewById(R.id.location_name); /* if(location.getText().toString().equals(getResources().getString(R.string.select_location))){ @@ -124,12 +127,16 @@ public void postMesage(View v){ Toast.makeText(this,"Please select policy.",Toast.LENGTH_SHORT).show(); return; } TODO: check if works*/ + if(_policy==null){ + Toast.makeText(this,"Please select policy.",Toast.LENGTH_SHORT).show(); + return; + } EditText content = (EditText) findViewById(R.id.message_content); EditText title = (EditText) findViewById(R.id.message_title_et); EditText lifespan = (EditText) findViewById(R.id.message_lifespan); - command = new PostMessageCommand(LocMessManager.getInstance().getToken(),"RNL"/*location.getText().toString().trim()*/, + command = new PostMessageCommand(LocMessManager.getInstance().getToken(),location.getText().toString().trim(), content.getText().toString().trim(),title.getText().toString(), - mode.getSelectedItem().toString(),new ArrayList(), + mode.getSelectedItem().toString(),_policy, lifespan.getText().toString().trim());//Mock stuff //Run in Manager and catch errors @@ -150,11 +157,26 @@ public void OnComplete(boolean result, String message) { protected void onActivityResult(int requestCode, int resultCode, Intent data){ Log.d(TAG,"Activity Result inc! The code is "+requestCode); if(requestCode == LocMessManager.PICK_LOCATION_REQUEST){ - Log.d(TAG,"okokok"); if( resultCode == RESULT_OK){ Log.d(TAG,"AND IT WAS SUCESSFUL!!!"); ((TextView) findViewById(R.id.location_name)).setText(data.getStringExtra("locationChoice")); } } + if(requestCode == LocMessManager.PICK_POLICY_REQUEST){ + if(resultCode == RESULT_OK){ + Log.d(TAG,"AND IT WAS SUCESSFUL!!!"); + ((TextView) findViewById(R.id.select_policy)).setText(data.getStringExtra("policyType")); + Log.d(TAG,data.getSerializableExtra("topics").toString()); + List topics= new ArrayList<>(); + for( String s : (ArrayList) data.getSerializableExtra("topics")){ //TODO: CHANGE THIS WHEN CHANGED TO TOPICDTO + topics.add(new TopicDto(s)); + } + _policy=new PolicyDto(data.getStringExtra("policyType"),topics); + //_policy=new PolicyDto() + + //data.getParcelableArrayExtra() + //_policy=new PolicyDto(data.getStringExtra("policyType"),) + } + } } } diff --git a/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/adapters/LocationsListAdapter.java b/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/adapters/LocationsListAdapter.java index 03c26e2..358404c 100644 --- a/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/adapters/LocationsListAdapter.java +++ b/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/adapters/LocationsListAdapter.java @@ -2,12 +2,14 @@ import android.app.Activity; import android.app.AlertDialog; +import android.content.Intent; import android.location.Location; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; +import android.widget.Toast; import java.util.ArrayList; import java.util.List; @@ -67,13 +69,30 @@ public View getView(final int index, View reusableView, ViewGroup viewGroup) { holder.index = index; holder.text.setText(_locations.get(index).getName()); - reusableView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - final ViewHolder holder = (ViewHolder) view.getTag(); - showEditTopicDialog(holder.index, getItem(holder.index).getName()); - } - }); + if(_activity.getIntent().getStringExtra("chooseLocation")!=null){ + Toast.makeText(_activity,"This is to choose",Toast.LENGTH_SHORT).show(); + + reusableView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent returnItent = new Intent(); + returnItent.putExtra("locationChoice",getItem(index).getName()); + _activity.setResult(_activity.RESULT_OK,returnItent); + _activity.finish(); + } + }); + } + else { + Toast.makeText(_activity,"This is not to choose",Toast.LENGTH_SHORT).show(); + + reusableView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + final ViewHolder holder = (ViewHolder) view.getTag(); + showLocation(holder.index, getItem(holder.index).getName()); + } + }); + } return reusableView; } @@ -82,7 +101,7 @@ private class ViewHolder { int index; } - public void showEditTopicDialog(final int index, final String title) { + public void showLocation(final int index, final String title) { final AlertDialog.Builder builder = new AlertDialog.Builder(_activity); builder.setTitle(title); diff --git a/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/commands/ListMessagesCommand.java b/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/commands/ListMessagesCommand.java index ce145b5..0430bad 100644 --- a/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/commands/ListMessagesCommand.java +++ b/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/commands/ListMessagesCommand.java @@ -1,14 +1,20 @@ package pt.ulisboa.tecnico.ist.cmu.locmess.commands; +import android.util.Log; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import pt.ulisboa.tecnico.ist.cmu.locmess.dto.MessageDto; +import pt.ulisboa.tecnico.ist.cmu.locmess.dto.PolicyDto; +import pt.ulisboa.tecnico.ist.cmu.locmess.dto.TopicDto; import pt.ulisboa.tecnico.ist.cmu.locmess.exception.DuplicateExecutionException; import pt.ulisboa.tecnico.ist.cmu.locmess.exception.CommandNotExecutedException; import pt.ulisboa.tecnico.ist.cmu.locmess.exception.LocMessHttpException; @@ -45,12 +51,18 @@ public Map getResults() throws IOException, LocMessHttpExcept JSONArray arr=obj.getJSONArray("messages"); _results=new HashMap(); for(int i=0; i topics = new ArrayList<>(); + for(String s : arr.getJSONObject(i).getString("topics").split(",")){ + topics.add(new TopicDto(s)); + } _results.put(arr.getJSONObject(i).getString("Id"), new MessageDto(arr.getJSONObject(i).getString("Author"), arr.getJSONObject(i).getString("Content"), arr.getJSONObject(i).getString("Title"), - arr.getJSONObject(i).getString("Location") + arr.getJSONObject(i).getString("Location"), + new PolicyDto(arr.getJSONObject(i).getString("policyType"),topics) )); + Log.d("ListMessagesCommand",arr.getJSONObject(i).getString("Content")); } } return _results; diff --git a/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/commands/PostMessageCommand.java b/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/commands/PostMessageCommand.java index f7470b5..4ed8e00 100644 --- a/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/commands/PostMessageCommand.java +++ b/android-project/app/src/main/java/pt/ulisboa/tecnico/ist/cmu/locmess/commands/PostMessageCommand.java @@ -3,9 +3,12 @@ import org.json.JSONException; import java.io.IOException; +import java.net.URLEncoder; import java.util.List; import pt.ulisboa.tecnico.ist.cmu.locmess.JsonParser; +import pt.ulisboa.tecnico.ist.cmu.locmess.dto.PolicyDto; +import pt.ulisboa.tecnico.ist.cmu.locmess.dto.TopicDto; import pt.ulisboa.tecnico.ist.cmu.locmess.exception.DuplicateExecutionException; import pt.ulisboa.tecnico.ist.cmu.locmess.exception.CommandNotExecutedException; @@ -18,8 +21,10 @@ public class PostMessageCommand extends AbstractCommand { private static final String _endpoint="postMessage"; - public PostMessageCommand(String token, String locationName,String content,String title, String deliveryMode,List topics, String duration) { - super(_endpoint,"token="+token+"&location="+locationName+"&message="+content+"&title="+title+"&deliveryMode="+deliveryMode+"&topics="+getTopics(topics) + public PostMessageCommand(String token, String locationName, String content, String title, String deliveryMode, PolicyDto policy, String duration) { + super(_endpoint,"token="+token+"&location="+locationName+"&message="+ + URLEncoder.encode(content)+"&title="+URLEncoder.encode(title)+"&deliveryMode="+deliveryMode+"&topics="+ + getTopics(policy.getTopics())+"&policyType="+policy.getType() +"&endTime="+duration); } @@ -32,13 +37,13 @@ public boolean successfulRequest() throws IOException, DuplicateExecutionExcepti return JsonParser.getValue(super.getResponse(),"response").equals("success"); } - private static String getTopics(List topics){ + private static String getTopics(List topics){ String topicStr=""; if(topics.size()==0){ return topicStr; } for(int i=0;i + \ No newline at end of file