view src/main/java/de/mpiwg/web/jsp/BooksPage.java @ 15:d81a5401b9af

new: sorting in books page
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Mon, 01 Jun 2015 14:35:35 +0200
parents 3387d855a194
children 372dab740f15
line wrap: on
line source

package de.mpiwg.web.jsp;


import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

import de.mpiwg.gazetteer.db.DBBook;
import de.mpiwg.gazetteer.db.DBSectionVersion;
import de.mpiwg.gazetteer.utils.DBService;
import de.mpiwg.web.books.SortBooksByAdminType;
import de.mpiwg.web.books.SortBooksByBookId;
import de.mpiwg.web.books.SortBooksByDate;
import de.mpiwg.web.books.SortBooksByDynasty;
import de.mpiwg.web.books.SortBooksByEdition;
import de.mpiwg.web.books.SortBooksByEditor;
import de.mpiwg.web.books.SortBooksByLevel1;
import de.mpiwg.web.books.SortBooksByLevel2;
import de.mpiwg.web.books.SortBooksByName;
import de.mpiwg.web.books.SortBooksByPeriod;
import de.mpiwg.web.books.SortBooksByStartYear;
import de.mpiwg.web.books.SortBooksByTocCorrection;

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 Map<String, DBSectionVersion> sectionVersionMap = null;
	private int bookNumber;

	private String tocBookId = new String();


	public void loadParameters(HttpServletRequest request, HttpServletResponse response){
		this.request = request;
		this.response = response;
		
		this.tocBookId = getParameter("tocBookId");
	}
	
	
	public String getTocBookId() {
		return tocBookId;
	}

	public void setTocBookId(String tocBookId) {
		this.tocBookId = tocBookId;
	}

	public int getBookNumber() {
		return bookNumber;
	}

	public void setBookNumber(int bookNumber) {
		this.bookNumber = bookNumber;
	}

	
	public List<DBBook> getCompleteBookList() {
		return completeBookList;
	}

	public void loadBooks(){
		if(this.completeBookList == null){
			this.forceLoadBooks();
		}
	}
	
	public void forceLoadBooks(){
		logger.debug("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()){		
				// set editor and date (current version)
				book.setCurrentSectionVersion(sectionVersionMap.get(book.getId()));
				
				this.completeBookList.add(book);
			}	
			
			this.setBookNumber(this.completeBookList.size());
			
		}
		
	}
	
	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();		
		logger.debug("tocFinishedBookId=" + tocBookId);
		try {
			DBService.getInstance().updateTocCorrection(tocBookId, 1);
		}catch (Exception e) {
			addMsg("There is an internal error: " + e.getLocalizedMessage());
			e.printStackTrace();
		} 
	
		//logger.debug("toc_correction:"+DBService.getInstance().getBook(tocBookId).getToc_correction());
		
	}


	public void unSetTocCorrection() {
		String tocBookId = this.getTocBookId();
		logger.debug("tocFinishedBookId=" + tocBookId);
		try {
			DBService.getInstance().updateTocCorrection(tocBookId, 0);
		}catch (Exception e) {
			addMsg("There is an internal error: " + e.getLocalizedMessage());
			e.printStackTrace();
		}
		
		
	}

	public void sortByBookIdUp() {
		Collections.sort(this.completeBookList, new SortBooksByBookId());
		//filter();
	}

	public void sortByBookIdDown() {
		Collections.sort(this.completeBookList, new SortBooksByBookId());
		Collections.reverse(completeBookList);
		//filter();
	}

	public void sortByBookNameUp(){
		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);
		//filter();
	}
	public void sortByLevel2Up(){
		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);
		//filter();
	}
	public void sortByEditionUp(){
		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);
		//filter();
	}

	public void sortByTocCorrectionUp(){
		Collections.sort(this.completeBookList, new SortBooksByTocCorrection());
		//filter();
	}
	
	public void sortByTocCorrectionDown(){
		Collections.sort(this.completeBookList, new SortBooksByTocCorrection());
		Collections.reverse(completeBookList);
		//filter();
	}
	
	
	
	
}