diff src/main/java/de/mpiwg/web/jsp/BooksPage.java @ 17:372dab740f15

new: filters in books page
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Tue, 02 Jun 2015 11:56:45 +0200
parents d81a5401b9af
children 881e7591f3e4
line wrap: on
line diff
--- a/src/main/java/de/mpiwg/web/jsp/BooksPage.java	Mon Jun 01 14:40:48 2015 +0200
+++ b/src/main/java/de/mpiwg/web/jsp/BooksPage.java	Tue Jun 02 11:56:45 2015 +0200
@@ -10,6 +10,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 
 import de.mpiwg.gazetteer.db.DBBook;
@@ -36,21 +37,143 @@
 	public static String page = "pages/books.jsp";
 	private List<DBBook> completeBookList;
 	
+	private List<DBBook> filteredBookList;
+	private List<DBBook> displayBookList;
 
 	private Map<String, DBSectionVersion> sectionVersionMap = null;
 	private int bookNumber;
 
 	private String tocBookId = new String();
-
+	
+	private String bookNameFilter = new String();
+	private String dynastyFilter = new String();
+	private String adminTypeFilter = new String();
+	private String level1Filter = new String();
+	private String level2Filter = new String();
+	private String periodFilter = new String();
+	private String editionFilter = new String();
+	
 
 	public void loadParameters(HttpServletRequest request, HttpServletResponse response){
 		this.request = request;
 		this.response = response;
 		
 		this.tocBookId = getParameter("tocBookId");
+
+		this.bookNameFilter = getParameter("bookNameFilter");
+		this.dynastyFilter = getParameter("dynastyFilter");
+		this.adminTypeFilter = getParameter("adminTypeFilter");
+		this.level1Filter = getParameter("level1Filter");
+		this.level2Filter = getParameter("level2Filter");
+		this.periodFilter = getParameter("periodFilter");
+		this.editionFilter = getParameter("editionFilter");
+		
+	}
+	
+	
+
+	public void filter(){
+		
+		this.filteredBookList = new ArrayList<DBBook>();
+		for(DBBook book : this.completeBookList){
+			if(!this.filteredBookList.contains(book)){
+				
+				if( (StringUtils.isEmpty(dynastyFilter) || StringUtils.startsWith(book.getDynasty(), dynastyFilter)) &&
+						(StringUtils.isEmpty(level1Filter) || StringUtils.startsWith(book.getLevel1(), level1Filter)) &&
+						(StringUtils.isEmpty(level2Filter) || StringUtils.startsWith(book.getLevel2(), level2Filter)) &&
+						(StringUtils.isEmpty(periodFilter) || StringUtils.startsWith(book.getPeriod(), periodFilter)) &&
+						(StringUtils.isEmpty(editionFilter) || StringUtils.startsWith(book.getEdition(), editionFilter)) &&
+						(StringUtils.isEmpty(bookNameFilter) || StringUtils.startsWith(book.getName(), bookNameFilter)) &&
+						(StringUtils.isEmpty(adminTypeFilter) || StringUtils.startsWith(book.getAdmin_type(), adminTypeFilter))
+								){
+					this.filteredBookList.add(book);
+					
+				}	
+			}
+		}
+		
+		if(completeBookList.size() > 0){
+			//this.searchMessage = completeSectionList.size() + " section(s) found for the term(s): " + this.searchTerm;
+			//this.filteringMessage = this.filteredSectionList.size() + " section(s) listed after the filtering";
+			//this.paginator.setCurrentPage(0);
+			//this.paginator.resetNumberOfPages(filteredSectionList.size());
+			this.updateCurrentBooks();
+		}else{
+			//this.searchMessage = "No sections found for the term(s): " + this.searchTerm;
+			this.filteredBookList = null;
+		}
+		
 	}
 	
 	
+	private void updateCurrentBooks() {
+		this.displayBookList = this.filteredBookList;
+		/*this.paginator.initCount();
+		int startRecord = this.paginator.getCurrentPage()
+				* this.paginator.getItemsPerPage();
+		
+		if(this.paginator.getNumberOfPages() == 0){
+			this.displaySectionList = new ArrayList<DBSection>();
+		}else if((this.paginator.getCurrentPage() + 1) == this.paginator.getNumberOfPages()){
+			int mod = this.filteredSectionList.size() % paginator.getItemsPerPage();
+			if(mod == 0){
+				this.displaySectionList = filteredSectionList.subList(startRecord, startRecord + this.paginator.getItemsPerPage());
+			}else{
+				this.displaySectionList = filteredSectionList.subList(startRecord, startRecord + mod);	
+			}
+			
+		}else{
+			this.displaySectionList = filteredSectionList.subList(startRecord, startRecord + this.paginator.getItemsPerPage());	
+		}
+		
+		for(DBSection section : this.displaySectionList){
+			section.setBranches(this.branchesMap.get(section.getId()));
+		}
+		*/
+	}
+	
+
+	public List<DBBook> getDisplayBookList() {
+		return displayBookList;
+	}
+
+
+
+	public void setDisplayBookList(List<DBBook> displayBookList) {
+		this.displayBookList = displayBookList;
+	}
+
+	
+	public String getDynastyFilter() {
+		return dynastyFilter;
+	}
+
+
+	public void setDynastyFilter(String dynastyFilter) {
+		this.dynastyFilter = dynastyFilter;
+	}
+
+
+	public String getAdminTypeFilter() {
+		return adminTypeFilter;
+	}
+
+
+	public void setAdminTypeFilter(String adminTypeFilter) {
+		this.adminTypeFilter = adminTypeFilter;
+	}
+
+
+	public String getLevel1Filter() {
+		return level1Filter;
+	}
+
+
+	public void setLevel1Filter(String level1Filter) {
+		this.level1Filter = level1Filter;
+	}
+
+	
 	public String getTocBookId() {
 		return tocBookId;
 	}
@@ -75,7 +198,9 @@
 	public void loadBooks(){
 		if(this.completeBookList == null){
 			this.forceLoadBooks();
-		}
+			filter();
+		} 
+		
 	}
 	
 	public void forceLoadBooks(){
@@ -146,137 +271,184 @@
 
 	public void sortByBookIdUp() {
 		Collections.sort(this.completeBookList, new SortBooksByBookId());
-		//filter();
+		filter();
 	}
 
 	public void sortByBookIdDown() {
 		Collections.sort(this.completeBookList, new SortBooksByBookId());
 		Collections.reverse(completeBookList);
-		//filter();
+		filter();
 	}
 
 	public void sortByBookNameUp(){
 		Collections.sort(this.completeBookList, new SortBooksByName());
-		//filter();
+		filter();
 	}
 	
 	public void sortByBookNameDown(){
 		Collections.sort(this.completeBookList, new SortBooksByName());
 		Collections.reverse(completeBookList);
-		//filter();
+		filter();
 	}
 	
 	public void sortByLevel1Up(){
 		Collections.sort(this.completeBookList, new SortBooksByLevel1());
-		//filter();
+		filter();
 	}
 	
 	public void sortByLevel1Down(){
 		Collections.sort(this.completeBookList, new SortBooksByLevel1());
 		Collections.reverse(completeBookList);
-		//filter();
+		filter();
 	}
 	public void sortByLevel2Up(){
 		Collections.sort(this.completeBookList, new SortBooksByLevel2());
-		//filter();
+		filter();
 	}
 	
 	public void sortByLevel2Down(){
 		Collections.sort(this.completeBookList, new SortBooksByLevel2());
 		Collections.reverse(completeBookList);
-		//filter();
+		filter();
 	}
 	
 	public void sortByPeriodUp(){
 		Collections.sort(this.completeBookList, new SortBooksByPeriod());
-		//filter();
+		filter();
 	}
 	
 	public void sortByPeriodDown(){
 		Collections.sort(this.completeBookList, new SortBooksByPeriod());
 		Collections.reverse(completeBookList);
-		//filter();
+		filter();
 	}
 	
 	public void sortByAdminTypeUp(){
 		Collections.sort(this.completeBookList, new SortBooksByAdminType());
-		//filter();
+		filter();
 	}
 	
 	public void sortByAdminTypeDown(){
 		Collections.sort(this.completeBookList, new SortBooksByAdminType());
 		Collections.reverse(completeBookList);
-		//filter();
+		filter();
 	}
 	
 	public void sortByStartYearUp(){
 		Collections.sort(this.completeBookList, new SortBooksByStartYear());
-		//filter();
+		filter();
 	}
 	
 	public void sortByStartYearDown(){
 		Collections.sort(this.completeBookList, new SortBooksByStartYear());
 		Collections.reverse(completeBookList);
-		//filter();
+		filter();
 	}
 	
 	public void sortByDynastyUp(){
 		Collections.sort(this.completeBookList, new SortBooksByDynasty());
-		//filter();
+		filter();
 	}
 	
 	public void sortByDynastyDown(){
 		Collections.sort(this.completeBookList, new SortBooksByDynasty());
 		Collections.reverse(completeBookList);
-		//filter();
+		filter();
 	}
 	public void sortByEditionUp(){
 		Collections.sort(this.completeBookList, new SortBooksByEdition());
-		//filter();
+		filter();
 	}
 	
 	public void sortByEditionDown(){
 		Collections.sort(this.completeBookList, new SortBooksByEdition());
 		Collections.reverse(completeBookList);
-		//filter();
+		filter();
 	}
 
 	
 	
 	public void sortByEditorUp(){
 		Collections.sort(this.completeBookList, new SortBooksByEditor());
-		//filter();
+		filter();
 	}
 	
 	public void sortByEditorDown(){
 		Collections.sort(this.completeBookList, new SortBooksByEditor());
 		Collections.reverse(completeBookList);
-		//filter();
+		filter();
 	}
 	
 	public void sortByDateUp(){
 		Collections.sort(this.completeBookList, new SortBooksByDate());
-		//filter();
+		filter();
 	}
 	
 	public void sortByDateDown(){
 		Collections.sort(this.completeBookList, new SortBooksByDate());
 		Collections.reverse(completeBookList);
-		//filter();
+		filter();
 	}
 
 	public void sortByTocCorrectionUp(){
 		Collections.sort(this.completeBookList, new SortBooksByTocCorrection());
-		//filter();
+		filter();
 	}
 	
 	public void sortByTocCorrectionDown(){
 		Collections.sort(this.completeBookList, new SortBooksByTocCorrection());
 		Collections.reverse(completeBookList);
-		//filter();
+		filter();
 	}
 	
-	
-	
+	public String getBookNameFilter() {
+		return bookNameFilter;
+	}
+
+
+
+	public void setBookNameFilter(String bookNameFilter) {
+		this.bookNameFilter = bookNameFilter;
+	}
+
+
+
+	public String getLevel2Filter() {
+		return level2Filter;
+	}
+
+
+
+	public void setLevel2Filter(String level2Filter) {
+		this.level2Filter = level2Filter;
+	}
+
+
+
+	public String getPeriodFilter() {
+		return periodFilter;
+	}
+
+
+
+	public void setPeriodFilter(String periodFilter) {
+		this.periodFilter = periodFilter;
+	}
+
+
+
+	public String getEditionFilter() {
+		return editionFilter;
+	}
+
+
+
+	public void setEditionFilter(String editionFilter) {
+		this.editionFilter = editionFilter;
+	}
+
+
+
+
 	
 }