Skip to content

Commit

Permalink
Adds support for policy choice
Browse files Browse the repository at this point in the history
Closes #34 Closes 35
  • Loading branch information
Gisson committed May 6, 2017
1 parent 6de12af commit 569b37e
Show file tree
Hide file tree
Showing 7 changed files with 103 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;

Expand All @@ -21,14 +23,15 @@ public class EditPolicyActivity extends AppCompatActivity {
private static final String[] mockTopics = {"os=linux", "university=ist", "club=none"};
private ArrayList<String> topics = new ArrayList<String>(Arrays.asList(mockTopics));
private TopicsListAdapter topicsAdapter;
private String policyChoice="";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(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() {
Expand All @@ -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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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){
Expand All @@ -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))){
Expand All @@ -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<String>(),
mode.getSelectedItem().toString(),_policy,
lifespan.getText().toString().trim());//Mock stuff

//Run in Manager and catch errors
Expand All @@ -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<TopicDto> topics= new ArrayList<>();
for( String s : (ArrayList<String>) 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"),)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}

Expand All @@ -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);

Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -45,12 +51,18 @@ public Map<String,MessageDto> getResults() throws IOException, LocMessHttpExcept
JSONArray arr=obj.getJSONArray("messages");
_results=new HashMap<String,MessageDto>();
for(int i=0; i<arr.length(); i++){
List<TopicDto> 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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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<String> 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);
}

Expand All @@ -32,13 +37,13 @@ public boolean successfulRequest() throws IOException, DuplicateExecutionExcepti
return JsonParser.getValue(super.getResponse(),"response").equals("success");
}

private static String getTopics(List<String> topics){
private static String getTopics(List<TopicDto> topics){
String topicStr="";
if(topics.size()==0){
return topicStr;
}
for(int i=0;i<topics.size()-1;i++){
topicStr+=topics.get(i)+",";
topicStr+=topics.get(i).toString()+",";
}
topicStr+=topics.get(topics.size()-1);
return topicStr;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,8 @@
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/locations_list" />
</LinearLayout>

0 comments on commit 569b37e

Please sign in to comment.