package design.model.course_search; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import design.persistence.MasterDatabase; /* * Represents the state of our current search. */ public class CurrentSearchQuery { public static final CurrentSearchQuery INSTANCE = new CurrentSearchQuery(); private CourseList query; MasterDatabase db = MasterDatabase.INSTANCE; private final List filters = new ArrayList(); // initialize the query to the master DB public void initialize() { query = db.getCourseList(); } // add a new filter public void addFilter(CourseSorter filter) { filters.add(filter); } // clear the filters public void clearFilters() { filters.clear(); } // print out the filters ( this is for the model checking used filters ) public String printFilters() { String filterResult = ""; if(filters.size() == 0) { return "nothing"; } for( CourseSorter f : filters) { filterResult += f.toString() + " --> "; } filterResult = filterResult.substring(0, filterResult.length() - 5); filterResult += "\n"; return filterResult; } // get all the filters public List getFilters() { return filters; } // get our current query. public CourseList getQueryResult() { return query; } public CourseList search(String[] searchQuery) { List courses = query.getCourses(); courses = courses.stream() .filter(s -> s.toString().toLowerCase().contains(searchQuery[0].toLowerCase())) .collect(Collectors.toList()); query.setCourses(courses); return query; } }