# HG changeset patch # User Zoe Hong # Date 1433239005 -7200 # Node ID 372dab740f15478e766e4632b24ead4cda603e86 # Parent a7e9c1f8edb4b6c1116ab2181cab4af22ab7800a new: filters in books page diff -r a7e9c1f8edb4 -r 372dab740f15 src/main/java/de/mpiwg/web/jsp/BooksPage.java --- 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 completeBookList; + private List filteredBookList; + private List displayBookList; private Map 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(); + 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(); + }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 getDisplayBookList() { + return displayBookList; + } + + + + public void setDisplayBookList(List 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; + } + + + + } diff -r a7e9c1f8edb4 -r 372dab740f15 src/main/java/de/mpiwg/web/jsp/JSPProxy.java --- a/src/main/java/de/mpiwg/web/jsp/JSPProxy.java Mon Jun 01 14:40:48 2015 +0200 +++ b/src/main/java/de/mpiwg/web/jsp/JSPProxy.java Tue Jun 02 11:56:45 2015 +0200 @@ -158,6 +158,8 @@ } else if (StringUtils.equals(action, "forceReloadBooks")) { getSessionBean().getBooksPage().forceLoadBooks(); + } else if(StringUtils.equals(action, "filter")){ + getSessionBean().getBooksPage().filter(); // Sorting } else if(StringUtils.equals(action, "sortByBookIdUp")){ diff -r a7e9c1f8edb4 -r 372dab740f15 src/main/java/de/mpiwg/web/jsp/SearchPage.java --- a/src/main/java/de/mpiwg/web/jsp/SearchPage.java Mon Jun 01 14:40:48 2015 +0200 +++ b/src/main/java/de/mpiwg/web/jsp/SearchPage.java Tue Jun 02 11:56:45 2015 +0200 @@ -71,6 +71,7 @@ this.adminTypeFilter = getParameter("adminTypeFilter"); this.level1Filter = getParameter("level1Filter"); this.searchIn = getIntParameter("searchIn"); + } public void search(){ diff -r a7e9c1f8edb4 -r 372dab740f15 src/main/webapp/pages/books.jsp --- a/src/main/webapp/pages/books.jsp Mon Jun 01 14:40:48 2015 +0200 +++ b/src/main/webapp/pages/books.jsp Tue Jun 02 11:56:45 2015 +0200 @@ -12,148 +12,7 @@ - - + @@ -168,12 +27,14 @@ <% if(sessionBean.getUser() == null) { %> - <% } else { - sessionBean.getBooksPage().loadParameters(request, response); - sessionBean.getBooksPage().loadBooks(); - // TODO: add a "update" to forceLoadBooks() + <% } else { + if (sessionBean.getBooksPage().getCompleteBookList() == null){ + sessionBean.getBooksPage().loadParameters(request, response); + sessionBean.getBooksPage().loadBooks(); + } + %> - +
List of Books

Total <%= sessionBean.getBooksPage().getBookNumber() %> books

@@ -226,6 +87,16 @@ + + + + + + + + @@ -247,6 +118,16 @@ + + + + + + + + @@ -268,6 +149,16 @@ + + + + + + + + @@ -289,6 +180,16 @@ + + + + + + + + @@ -310,6 +211,16 @@ + + + + + + + + @@ -331,6 +242,16 @@ + + + + + + + + @@ -352,6 +273,16 @@ + + + + + + + + @@ -422,6 +353,7 @@ + @@ -448,7 +380,8 @@ - <% for(DBBook book : sessionBean.getBooksPage().getCompleteBookList() ) { %> + <% //for(DBBook book : sessionBean.getBooksPage().getCompleteBookList() ) { + for (DBBook book : sessionBean.getBooksPage().getDisplayBookList() ) {%>