Mercurial > hg > LGServices
diff src/main/java/de/mpiwg/web/jsp/BooksPage.java @ 75:e5697f7775b2
Display columns named "source" and "year" and implement filter & sorting on them. Hide the column "Start Year"
author | Calvin Yeh <cyeh@mpiwg-berlin.mpg.de> |
---|---|
date | Mon, 27 Mar 2017 17:50:58 +0200 |
parents | b8ad346e39a0 |
children | 141fa833d126 |
line wrap: on
line diff
--- a/src/main/java/de/mpiwg/web/jsp/BooksPage.java Mon Mar 27 17:11:45 2017 +0200 +++ b/src/main/java/de/mpiwg/web/jsp/BooksPage.java Mon Mar 27 17:50:58 2017 +0200 @@ -32,11 +32,11 @@ public class BooksPage extends AbstractJSPPage{ private static Logger logger = Logger.getLogger(BooksPage.class); - + public static String bean = "booksBean"; public static String page = "pages/books.jsp"; private List<DBBook> completeBookList; - + private List<DBBook> filteredBookList; private List<DBBook> displayBookList; @@ -47,7 +47,7 @@ private String tocBookId = new String(); - + private String bookNameFilter = new String(); private String dynastyFilter = new String(); private String adminTypeFilter = new String(); @@ -57,17 +57,19 @@ private String editionFilter = new String(); private String lastEditorFilter = new String(); private String editTimeFilter = new String(); + private String yearFilter = new String(); + private String sourceFilter = new String(); - + private String filteringMessage; - + 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"); @@ -78,17 +80,19 @@ this.editionFilter = getParameter("editionFilter"); this.lastEditorFilter = getParameter("lastEditorFilter"); this.editTimeFilter = getParameter("editTimeFilter"); - + this.yearFilter = getParameter("yearFilter"); + this.sourceFilter = getParameter("sourceFilter"); + } - - + + 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.contains(book.getLevel1(), level1Filter)) && (StringUtils.isEmpty(level2Filter) || StringUtils.contains(book.getLevel2(), level2Filter)) && @@ -96,7 +100,9 @@ (StringUtils.isEmpty(editionFilter) || StringUtils.contains(book.getEdition(), editionFilter)) && (StringUtils.isEmpty(bookNameFilter) || StringUtils.contains(book.getName(), bookNameFilter)) && (StringUtils.isEmpty(dynastyFilter) || StringUtils.contains(book.getDynasty(), dynastyFilter)) && - (StringUtils.isEmpty(adminTypeFilter) || StringUtils.contains(book.getAdmin_type(), adminTypeFilter)) + (StringUtils.isEmpty(adminTypeFilter) || StringUtils.contains(book.getAdmin_type(), adminTypeFilter)) && + (StringUtils.isEmpty(yearFilter) || StringUtils.contains(book.getYear(), yearFilter)) && + (StringUtils.isEmpty(sourceFilter) || StringUtils.contains(book.getSource(), sourceFilter)) ){ String lastEditor = new String(); String editTime = new String(); @@ -104,21 +110,21 @@ lastEditor = book.getCurrentSectionVersion().getEditor(); editTime = book.getCurrentSectionVersion().getDate(); } - + if( (StringUtils.isEmpty(lastEditorFilter) || StringUtils.contains(lastEditor, lastEditorFilter)) && (StringUtils.isEmpty(editTimeFilter) || StringUtils.contains(editTime, editTimeFilter)) - + ){ this.filteredBookList.add(book); - + } - + //this.filteredBookList.add(book); - - } + + } } } - + if(completeBookList.size() > 0){ this.filteringMessage = this.filteredBookList.size() + " book(s) listed after filtering"; this.paginator.setCurrentPage(0); @@ -127,17 +133,17 @@ }else{ this.filteredBookList = null; } - + } - - + + private void updateCurrentBooks() { // update displayBookList using paginator - + this.paginator.initCount(); int startRecord = this.paginator.getCurrentPage() * this.paginator.getItemsPerPage(); - + if(this.paginator.getNumberOfPages() == 0){ this.displayBookList = new ArrayList<DBBook>(); }else if((this.paginator.getCurrentPage() + 1) == this.paginator.getNumberOfPages()){ @@ -145,15 +151,15 @@ if(mod == 0){ this.displayBookList = filteredBookList.subList(startRecord, startRecord + this.paginator.getItemsPerPage()); }else{ - this.displayBookList = filteredBookList.subList(startRecord, startRecord + mod); + this.displayBookList = filteredBookList.subList(startRecord, startRecord + mod); } - + }else{ - this.displayBookList = filteredBookList.subList(startRecord, startRecord + this.paginator.getItemsPerPage()); + this.displayBookList = filteredBookList.subList(startRecord, startRecord + this.paginator.getItemsPerPage()); } - + } - + public List<DBBook> getDisplayBookList() { return displayBookList; @@ -165,7 +171,7 @@ this.displayBookList = displayBookList; } - + public String getDynastyFilter() { return dynastyFilter; } @@ -195,7 +201,25 @@ this.level1Filter = level1Filter; } - + public String getYearFilter() { + return yearFilter; + } + + + public void setYearFilter(String yearFilter) { + this.yearFilter = yearFilter; + } + + public String getSourceFilter() { + return yearFilter; + } + + + public void setSourceFilter(String sourceFilter) { + this.sourceFilter = sourceFilter; + } + + public String getTocBookId() { return tocBookId; } @@ -212,7 +236,7 @@ this.bookNumber = bookNumber; } - + public List<DBBook> getCompleteBookList() { return completeBookList; } @@ -221,70 +245,70 @@ if(this.completeBookList == null){ this.forceLoadBooks(); this.filteringMessage = null; - } + } } - + public void forceLoadBooks(){ logger.debug("force loadBooks"); this.loadSectionsVersion(); - + this.completeBookList = new ArrayList<DBBook>(); if(getSessionBean().getUser() != null){ logger.debug("loading book list"); // === load book table from db == - - for(DBBook book : DBService.getInstance().getBooks()){ + + for(DBBook book : DBService.getInstance().getBooks()){ // set editor and date (current version) book.setCurrentSectionVersion(sectionVersionMap.get(book.getId())); - + this.completeBookList.add(book); - } - + } + this.setBookNumber(this.completeBookList.size()); - + } - + sortByBookIdUp(); //bookId ascend as default sorting // Note that every sortXYZ() function has filter() in it, so it will also force reload filteredList and displayList - - - - + + + + } - + private void loadSectionsVersion(){ this.sectionVersionMap = new HashMap<String, DBSectionVersion>(); - + try { for(DBSectionVersion sv : DBService.getInstance().getSectionVersionList()){ this.sectionVersionMap.put(sv.getBooks_id(), sv); - } + } } catch (Exception e) { addMsg("There is an internal error: " + e.getLocalizedMessage()); e.printStackTrace(); } - - + + } public void setTocCorrection() { - String tocBookId = this.getTocBookId(); + String tocBookId = this.getTocBookId(); logger.debug("tocFinishedBookId=" + tocBookId); try { // update toc correction status to DB DBService.getInstance().updateTocCorrection(tocBookId, "1"); - + // update toc correction status DBService.getInstance().getBook(tocBookId).setTocCorrection("1"); - + }catch (Exception e) { addMsg("There is an internal error: " + e.getLocalizedMessage()); e.printStackTrace(); - } - + } + //logger.debug("toc_correction:"+DBService.getInstance().getBook(tocBookId).getTocCorrection()); - + } @@ -294,34 +318,34 @@ try { DBService.getInstance().updateTocCorrection(tocBookId, "0"); DBService.getInstance().getBook(tocBookId).setTocCorrection("0"); - + }catch (Exception e) { addMsg("There is an internal error: " + e.getLocalizedMessage()); e.printStackTrace(); - } - - } + } + + } public void saveComment() { - + String bookComment = getParameter("bookComment"); String currentBookId = getParameter("currentBookId"); - + logger.debug("saveComment. currentBookId=" + currentBookId + ", bookComment: "+ bookComment); - + try { DBService.getInstance().updateComment(currentBookId, bookComment); //DBService.getInstance().getBook(currentBookId).setComments(bookComment); - + } catch (Exception e) { addMsg("There is an internal error: " + e.getLocalizedMessage()); e.printStackTrace(); } - + } - - + + public void sortByBookIdUp() { Collections.sort(this.completeBookList, new SortBooksByBookId()); filter(); @@ -337,18 +361,18 @@ Collections.sort(this.completeBookList, new SortBooksByName()); filter(); } - + public void sortByBookNameDown(){ Collections.sort(this.completeBookList, new SortBooksByName()); Collections.reverse(completeBookList); filter(); } - + public void sortByLevel1Up(){ Collections.sort(this.completeBookList, new SortBooksByLevel1()); filter(); } - + public void sortByLevel1Down(){ Collections.sort(this.completeBookList, new SortBooksByLevel1()); Collections.reverse(completeBookList); @@ -358,51 +382,51 @@ Collections.sort(this.completeBookList, new SortBooksByLevel2()); filter(); } - + public void sortByLevel2Down(){ Collections.sort(this.completeBookList, new SortBooksByLevel2()); Collections.reverse(completeBookList); filter(); } - + public void sortByPeriodUp(){ Collections.sort(this.completeBookList, new SortBooksByPeriod()); filter(); } - + public void sortByPeriodDown(){ Collections.sort(this.completeBookList, new SortBooksByPeriod()); Collections.reverse(completeBookList); filter(); } - + public void sortByAdminTypeUp(){ Collections.sort(this.completeBookList, new SortBooksByAdminType()); filter(); } - + public void sortByAdminTypeDown(){ Collections.sort(this.completeBookList, new SortBooksByAdminType()); Collections.reverse(completeBookList); filter(); } - + public void sortByStartYearUp(){ Collections.sort(this.completeBookList, new SortBooksByStartYear()); filter(); } - + public void sortByStartYearDown(){ Collections.sort(this.completeBookList, new SortBooksByStartYear()); Collections.reverse(completeBookList); filter(); } - + public void sortByDynastyUp(){ Collections.sort(this.completeBookList, new SortBooksByDynasty()); filter(); } - + public void sortByDynastyDown(){ Collections.sort(this.completeBookList, new SortBooksByDynasty()); Collections.reverse(completeBookList); @@ -412,31 +436,31 @@ Collections.sort(this.completeBookList, new SortBooksByEdition()); filter(); } - + public void sortByEditionDown(){ Collections.sort(this.completeBookList, new SortBooksByEdition()); Collections.reverse(completeBookList); filter(); } - - + + public void sortByEditorUp(){ Collections.sort(this.completeBookList, new SortBooksByEditor()); filter(); } - + public void sortByEditorDown(){ Collections.sort(this.completeBookList, new SortBooksByEditor()); Collections.reverse(completeBookList); filter(); } - + public void sortByDateUp(){ Collections.sort(this.completeBookList, new SortBooksByDate()); filter(); } - + public void sortByDateDown(){ Collections.sort(this.completeBookList, new SortBooksByDate()); Collections.reverse(completeBookList); @@ -447,13 +471,35 @@ Collections.sort(this.completeBookList, new SortBooksByTocCorrection()); filter(); } - + public void sortByTocCorrectionDown(){ Collections.sort(this.completeBookList, new SortBooksByTocCorrection()); Collections.reverse(completeBookList); filter(); } - + + public void sortByYearUp(){ + Collections.sort(this.completeBookList, new SortBooksByYear()); + filter(); + } + + public void sortByYearDown(){ + Collections.sort(this.completeBookList, new SortBooksByYear()); + Collections.reverse(completeBookList); + filter(); + } + + public void sortBySourceUp(){ + Collections.sort(this.completeBookList, new SortBooksBySource()); + filter(); + } + + public void sortBySourceDown(){ + Collections.sort(this.completeBookList, new SortBooksBySource()); + Collections.reverse(completeBookList); + filter(); + } + public String getBookNameFilter() { return bookNameFilter; } @@ -539,7 +585,7 @@ public void setPaginator(DataPaginator paginator) { this.paginator = paginator; } - + public String getFilteringMessage() {