Skip to content

Commit b7e805d

Browse files
committed
2 parents ad43d5d + 16305d4 commit b7e805d

6 files changed

Lines changed: 169 additions & 72 deletions

File tree

app/src/main/java/com/cmput301f17t11/cupofjava/Controllers/EventFilteringHelper.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.cmput301f17t11.cupofjava.Controllers;
22

3+
import com.cmput301f17t11.cupofjava.Models.Habit;
34
import com.cmput301f17t11.cupofjava.Models.HabitEvent;
45

56
import java.util.ArrayList;
@@ -30,4 +31,26 @@ else if (o1.getHabitEventDate().getTime() == o2.getHabitEventDate().getTime()){
3031
});
3132
return events;
3233
}
34+
35+
public static ArrayList<HabitEvent> filterByComment(ArrayList<HabitEvent> events, String str){
36+
ArrayList<HabitEvent> filteredEvents = new ArrayList<>();
37+
for(int i = 0; i < events.size(); i++){
38+
if (events.get(i).getComment().contains(str)){
39+
filteredEvents.add(events.get(i));
40+
}
41+
}
42+
return filteredEvents;
43+
}
44+
45+
public static ArrayList<HabitEvent> filterByType(ArrayList<HabitEvent> events, String habitTitle){
46+
ArrayList<HabitEvent> filteredEvents = new ArrayList<>();
47+
48+
for (int i = 0; i < events.size(); i++){
49+
if (events.get(i).getHabitTitle().equals(habitTitle)){
50+
filteredEvents.add(events.get(i));
51+
}
52+
}
53+
54+
return filteredEvents;
55+
}
3356
}

app/src/main/java/com/cmput301f17t11/cupofjava/Models/Habit.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,16 @@ public Habit(String title, String reason, Calendar date, ArrayList<Integer> days
9090
*/
9191
public Habit(){}
9292

93+
/**
94+
* for creating dummy habit for spinner
95+
* @param title
96+
* @param reason
97+
*/
98+
public Habit(String title, String reason){
99+
this.habitTitle = title;
100+
this.habitReason = reason;
101+
}
102+
93103
/**
94104
* Gets the habit title.
95105
*
@@ -249,7 +259,7 @@ public int getHabitStatus(){
249259

250260
@Override
251261
public String toString(){ //this gets called by array adapter
252-
return ("What: " + this.habitTitle + "\n"
253-
+ "Why: " + this.habitReason);
262+
return (this.habitTitle + "\n"
263+
+ this.habitReason);
254264
}
255265
}

app/src/main/java/com/cmput301f17t11/cupofjava/Views/HabitEventTimeLineActivity.java

Lines changed: 111 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
package com.cmput301f17t11.cupofjava.Views;
1212

13+
import android.content.Context;
1314
import android.content.DialogInterface;
1415
import android.content.Intent;
1516
import android.location.Location;
@@ -28,16 +29,20 @@
2829
import android.widget.EditText;
2930
import android.widget.LinearLayout;
3031
import android.widget.ListView;
32+
import android.widget.Spinner;
3133
import android.widget.TextView;
3234
import android.widget.Toast;
3335

3436
import com.cmput301f17t11.cupofjava.Controllers.ElasticsearchController;
3537
import com.cmput301f17t11.cupofjava.Controllers.EventFilteringHelper;
3638

39+
import com.cmput301f17t11.cupofjava.Models.Habit;
40+
import com.cmput301f17t11.cupofjava.Models.HabitAdapter;
3741
import com.cmput301f17t11.cupofjava.Models.HabitEvent;
3842
import com.cmput301f17t11.cupofjava.R;
3943

4044
import java.util.ArrayList;
45+
import java.util.Calendar;
4146
import java.util.Collections;
4247
import java.util.Comparator;
4348

@@ -51,15 +56,12 @@ public class HabitEventTimeLineActivity extends Fragment {
5156
private ListView listView;
5257
private TextView textView;
5358
private Button viewMap;
54-
private double currentLat; //latitude of current loc
55-
private double currentLon; //Longitude of current loc
59+
//private double currentLat; //latitude of current loc
60+
//private double currentLon; //Longitude of current loc
5661

5762

5863
ArrayList<HabitEvent> events = new ArrayList<>();
5964

60-
ArrayList<HabitEvent> filteredEvents = new ArrayList<>();
61-
// TODO: Rename parameter arguments, choose names that match
62-
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
6365

6466
private HabitEventTimeLineActivity.OnFragmentInteractionListener mListener;
6567

@@ -89,30 +91,54 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
8991
Bundle bundle = getArguments();
9092
if (bundle != null) {
9193
this.userName = bundle.getString("userName");
92-
this.currentLat = bundle.getDouble("currentLat");
93-
this.currentLon = bundle.getDouble("currentLon");
94+
//this.currentLat = bundle.getDouble("currentLat");
95+
//this.currentLon = bundle.getDouble("currentLon");
9496

9597
Log.i("HabitEventTimelineFragment: Username received: ", userName);
96-
Log.i("HabitEventTimelineFragment: Latitude received: ", ""+currentLat+"");
97-
Log.i("HabitEventTimelineFragment: Latitude received: ", ""+currentLon+"");
98+
//Log.i("HabitEventTimelineFragment: Latitude received: ", ""+currentLat+"");
99+
//Log.i("HabitEventTimelineFragment: Latitude received: ", ""+currentLon+"");
98100

99101
}
100102

101-
102-
103103
//set up the TextView and ListView
104104
this.textView = (TextView) view.findViewById(R.id.timelineHeadingTextView);
105105
this.listView = (ListView) view.findViewById(R.id.timeLineListView);
106106
this.viewMap = (Button) view.findViewById(R.id.viewMapButton);
107107

108-
Button commentButton = (Button) view.findViewById(R.id.filter_by_comment);
108+
Button reverseChronoButton = (Button) view.findViewById(R.id.reverse_chronological_button);
109+
reverseChronoButton.setOnClickListener(new View.OnClickListener() {
110+
@Override
111+
public void onClick(View v) {
112+
events = new ArrayList<>();
113+
ElasticsearchController.GetEventsTask getEventsTask = new ElasticsearchController.GetEventsTask();
114+
getEventsTask.execute(userName);
115+
try {
116+
ArrayList<HabitEvent> foundHabitEvents = getEventsTask.get();
117+
if (!foundHabitEvents.isEmpty()) {
118+
119+
events.addAll(foundHabitEvents);
120+
Log.i("HabitEventTimeline: found events :", events.toString());
121+
} else {
122+
Log.i("HabitEventTimeline", "Did Not find habit events" + events.toString());
123+
124+
}
125+
} catch (Exception e) {
126+
Log.i("HabitEventTimeline", "Failed to get the Habit Events from the async object");
127+
128+
}
129+
updateTextView(events.size());
130+
updateListView(events);
131+
}
132+
});
133+
134+
Button commentButton = (Button) view.findViewById(R.id.filter_by_comment);
109135

110136

111137
commentButton.setOnClickListener(new View.OnClickListener() {
112138
@Override
113139
public void onClick(final View v) {
114140
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
115-
builder.setTitle("Filter Events by Comment").setMessage("Enter Comment to search");
141+
builder.setTitle("Search events by comment").setMessage("Enter comment:");
116142

117143
final EditText input = new EditText(getContext());
118144
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
@@ -126,6 +152,20 @@ public void onClick(final View v) {
126152
public void onClick(DialogInterface dialog, int which) {
127153

128154
String comment = input.getText().toString();
155+
if (comment.length() == 0){
156+
String text = "Error: Cannot search for empty string!";
157+
int length = Toast.LENGTH_SHORT;
158+
Context context = getContext();
159+
Toast toast = Toast.makeText(context,text, length);
160+
toast.show();
161+
dialog.dismiss();
162+
}
163+
164+
events = EventFilteringHelper.filterByComment(events, comment);
165+
events = EventFilteringHelper.reverseChronological(events);
166+
updateTextView(events.size());
167+
updateListView(events);
168+
129169
}
130170
})
131171
.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
@@ -140,6 +180,62 @@ public void onClick(DialogInterface dialog, int which) {
140180
dialog.show();
141181
}
142182
});
183+
ArrayList<Habit> habits;
184+
ElasticsearchController.GetHabitsTask getHabitsTask = new ElasticsearchController.GetHabitsTask();
185+
getHabitsTask.execute(userName);
186+
try {
187+
habits = getHabitsTask.get();
188+
} catch (Exception e) {
189+
Log.i("Error Getting Habits ", e.toString());
190+
habits = new ArrayList<>();
191+
}
192+
final Spinner spinner = (Spinner) view.findViewById(R.id.filter_by_habit);
193+
ArrayAdapter<Habit> arrayAdapter = new ArrayAdapter<Habit>(getActivity(),
194+
R.layout.string_only_list_item);
195+
196+
final Habit emptyHabit = new Habit("Select", "to filter by habit");
197+
arrayAdapter.add(emptyHabit);
198+
arrayAdapter.addAll(habits);
199+
spinner.setAdapter(arrayAdapter);
200+
201+
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
202+
@Override
203+
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
204+
Habit selectedHabit = (Habit) spinner.getSelectedItem();
205+
if (selectedHabit.getHabitTitle().equals(emptyHabit.getHabitTitle())){
206+
return;
207+
}
208+
String habitTitle = selectedHabit.getHabitTitle();
209+
events = new ArrayList<>();
210+
ElasticsearchController.GetEventsTask getEventsTask = new ElasticsearchController.GetEventsTask();
211+
getEventsTask.execute(userName);
212+
try {
213+
ArrayList<HabitEvent> foundHabitEvents = getEventsTask.get();
214+
if (!foundHabitEvents.isEmpty()) {
215+
216+
events.addAll(foundHabitEvents);
217+
Log.i("HabitEventTimeline: found events :", events.toString());
218+
} else {
219+
Log.i("HabitEventTimeline", "Did Not find habit events" + events.toString());
220+
221+
}
222+
} catch (Exception e) {
223+
Log.i("HabitEventTimeline", "Failed to get the Habit Events from the async object");
224+
225+
}
226+
227+
events = EventFilteringHelper.filterByType(events, habitTitle);
228+
events = EventFilteringHelper.reverseChronological(events);
229+
updateTextView(events.size());
230+
updateListView(events);
231+
232+
}
233+
234+
@Override
235+
public void onNothingSelected(AdapterView<?> parent) {
236+
237+
}
238+
});
143239

144240

145241
return view;
@@ -243,8 +339,6 @@ public void onItemClick(AdapterView<?> parent, View view, int position, long id)
243339
}
244340
bundle.putBoolean("hasImage", myEvent.hasImage());
245341
bundle.putString("eventId", myEvent.getId());
246-
//bundle.putSerializable("eventClicked", events); //sending habitEventlist
247-
//bundle.putInt("eventIndex", position);
248342

249343
intent5.putExtras(bundle);
250344
startActivity(intent5);
@@ -290,7 +384,6 @@ public void onDetach() {
290384

291385

292386
public void mapsAll(int type ){
293-
// Log.i("List of event Loc", events.get(0).getLocation().toString());
294387
Intent intent = new Intent(getActivity(), MapsActivity.class);
295388
Bundle bundle = new Bundle();
296389

@@ -316,8 +409,8 @@ public void mapsAll(int type ){
316409
bundle.putDoubleArray("lat", latititudes);
317410
bundle.putDoubleArray("lon", longitudes);
318411
bundle.putInt("type", type );
319-
bundle.putDouble("currentLat", currentLat);
320-
bundle.putDouble("currentLon", currentLon);
412+
//bundle.putDouble("currentLat", currentLat);
413+
//bundle.putDouble("currentLon", currentLon);
321414

322415
intent.putExtras(bundle);
323416
startActivity(intent);
@@ -337,29 +430,4 @@ public interface OnFragmentInteractionListener {
337430
// TODO: Update argument type and name
338431
void onFragmentInteraction(Uri uri);
339432
}
340-
341-
public ArrayList<HabitEvent> filterByTime(ArrayList<HabitEvent> events) {
342-
Collections.sort(events, new Comparator<HabitEvent>() {
343-
public int compare(HabitEvent o1, HabitEvent o2) {
344-
return o1.getHabitEventTime().compareTo(o2.getHabitEventTime());
345-
}
346-
});
347-
return events;
348-
}
349-
350-
351-
/* Not Working
352-
public ArrayList<HabitEvent> filterByComment(ArrayList<HabitEvent> events, String comment) {
353-
ArrayList<HabitEvent> finalEvents = new ArrayList<>();
354-
355-
for (int i=0; i < events.size(); i++) {
356-
HabitEvent event = events.get(i);
357-
String checkComment = event.getComment();
358-
if (checkComment.contains(comment)) {
359-
finalEvents.add(event);
360-
}
361-
}
362-
return finalEvents;
363-
}
364-
*/
365433
}

app/src/main/java/com/cmput301f17t11/cupofjava/Views/MainActivity.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
public class MainActivity extends AppCompatActivity{
1818

1919
private String userName;
20-
private double currentLat;
21-
private double currentLon;
20+
//private double currentLat;
21+
//private double currentLon;
2222

2323
private BottomNavigationView.OnNavigationItemSelectedListener onNavigationItemSelectedListener
2424
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@@ -28,8 +28,8 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
2828
case R.id.navigation_timeline:
2929
Bundle bundle1 = new Bundle();
3030
bundle1.putString("userName", userName);
31-
bundle1.putDouble("currentLat", currentLat);
32-
bundle1.putDouble("currentLon", currentLon);
31+
//bundle1.putDouble("currentLat", currentLat);
32+
//bundle1.putDouble("currentLon", currentLon);
3333
TimeLineFragment timeLineFragment = new TimeLineFragment();
3434
timeLineFragment.setArguments(bundle1);
3535
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
@@ -100,8 +100,8 @@ protected void onCreate(Bundle savedInstanceState) {
100100
setContentView(R.layout.activity_main);
101101

102102
this.userName = getIntent().getStringExtra("userName");
103-
this.currentLat = getIntent().getDoubleExtra("currentLat",0.0);
104-
this.currentLon = getIntent().getDoubleExtra("currentLon", 0.0);
103+
//this.currentLat = getIntent().getDoubleExtra("currentLat",0.0);
104+
//this.currentLon = getIntent().getDoubleExtra("currentLon", 0.0);
105105
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.menu);
106106
navigation.setSelectedItemId(R.id.navigation_social);
107107
navigation.setOnNavigationItemSelectedListener(onNavigationItemSelectedListener);

app/src/main/java/com/cmput301f17t11/cupofjava/Views/UserLoginActivity.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ public class UserLoginActivity extends Activity {
3535
private User newUser;
3636
private User user;
3737

38-
double currentLat;
39-
double currentLong;
38+
//double currentLat;
39+
//double currentLong;
4040
Geolocation location;
4141

4242
/**
@@ -60,11 +60,11 @@ protected void onCreate(Bundle savedInstanceState) {
6060
@Override
6161
public void onClick(View v) {
6262

63-
Log.i("Location is ", location.getLocation().toString());
64-
currentLat = location.getLocation().getLatitude();
65-
currentLong = location.getLocation().getLongitude();
66-
Log.i("Latitude ", "" + currentLat + "");
67-
Log.i("Latitude ", "" + currentLong + "");
63+
//Log.i("Location is ", location.getLocation().toString());
64+
//currentLat = location.getLocation().getLatitude();
65+
//currentLong = location.getLocation().getLongitude();
66+
//Log.i("Latitude ", "" + currentLat + "");
67+
//Log.i("Latitude ", "" + currentLong + "");
6868

6969

7070
String input = username_editText.getText().toString();
@@ -88,8 +88,8 @@ public void onClick(View v) {
8888
//sending the user info to main activity
8989
Intent intent = new Intent(UserLoginActivity.this, MainActivity.class);
9090
intent.putExtra("userName", newUser.getUsername());
91-
intent.putExtra("currentLat", currentLat);
92-
intent.putExtra("currentLon", currentLong);
91+
//intent.putExtra("currentLat", currentLat);
92+
//intent.putExtra("currentLon", currentLong);
9393

9494
startActivity(intent);
9595

0 commit comments

Comments
 (0)