package filters; import java.util.ArrayList; import java.util.List; import papers.Paper; public class TitleNameFilter extends PaperStringFilter { private ArrayList<String> titleStrings = null; public TitleNameFilter(List<Paper> paperList) { super(paperList); initStrings(); } @Override public List<Paper> filterList(String keyword) { String query = keyword.toLowerCase(); ArrayList<Paper> subList = new ArrayList<Paper>(); for(int i = 0; i < this.paperList.size(); i++){ if(titleStrings.get(i).contains(query)){ subList.add(paperList.get(i)); } } return subList; } @Override public void papersAdded() { int newestPaper = titleStrings.size(); for(int i = newestPaper; i < paperList.size(); i++){ String title = paperList.get(i).getField("title"); if(title == null){ titleStrings.add(""); }else{ titleStrings.add(title.toLowerCase()); } } } @Override public void papersRemoved() { initStrings(); } private void initStrings(){ titleStrings = new ArrayList<String>(); for(int i = 0; i < paperList.size(); i++){ Paper paper = paperList.get(i); String title = paper.getField("title"); if(title == null){ titleStrings.add(""); }else{ titleStrings.add(title.toLowerCase()); } } } }