package filters;
import java.util.ArrayList;
import java.util.List;
import papers.Paper;
public class AuthorNameFilter extends PaperStringFilter {
private ArrayList<String> authorStrings = null;
public AuthorNameFilter(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(authorStrings.get(i).contains(query)){
subList.add(paperList.get(i));
}
}
return subList;
}
@Override
public void papersAdded() {
int newestPaper = authorStrings.size();
for(int i = newestPaper; i < paperList.size(); i++){
String author = paperList.get(i).getField("author");
if(author == null){
authorStrings.add("");
}else{
authorStrings.add(author.toLowerCase());
}
}
}
@Override
public void papersRemoved() {
initStrings();
}
private void initStrings(){
authorStrings = new ArrayList<String>();
for(int i = 0; i < paperList.size(); i++){
Paper paper = paperList.get(i);
String author = paper.getField("author");
if(author == null){
authorStrings.add("");
}else{
authorStrings.add(author.toLowerCase());
}
}
}
}