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() {