1010
1111package com .cmput301f17t11 .cupofjava .Views ;
1212
13+ import android .content .Context ;
1314import android .content .DialogInterface ;
1415import android .content .Intent ;
1516import android .location .Location ;
2829import android .widget .EditText ;
2930import android .widget .LinearLayout ;
3031import android .widget .ListView ;
32+ import android .widget .Spinner ;
3133import android .widget .TextView ;
3234import android .widget .Toast ;
3335
3436import com .cmput301f17t11 .cupofjava .Controllers .ElasticsearchController ;
3537import com .cmput301f17t11 .cupofjava .Controllers .EventFilteringHelper ;
3638
39+ import com .cmput301f17t11 .cupofjava .Models .Habit ;
40+ import com .cmput301f17t11 .cupofjava .Models .HabitAdapter ;
3741import com .cmput301f17t11 .cupofjava .Models .HabitEvent ;
3842import com .cmput301f17t11 .cupofjava .R ;
3943
4044import java .util .ArrayList ;
45+ import java .util .Calendar ;
4146import java .util .Collections ;
4247import 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}
0 commit comments