Mercurial > hg > LGServices
changeset 94:d0dcbe8254f5
New Feature: Add book year and edition year in section searching page, also prevent from book not existing exception
author | Calvin Yeh <cyeh@mpipw-berlin.mpg.com> |
---|---|
date | Mon, 03 Jul 2017 23:43:44 +0200 |
parents | 88a485937f9a |
children | b27a99201cbe |
files | src/main/java/de/mpiwg/web/jsp/JSPProxy.java src/main/java/de/mpiwg/web/jsp/SearchPage.java src/main/java/de/mpiwg/web/search/SortSectionByBookYear.java src/main/java/de/mpiwg/web/search/SortSectionByEditionYear.java src/main/webapp/pages/search.jsp |
diffstat | 5 files changed, 194 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/de/mpiwg/web/jsp/JSPProxy.java Wed Jun 21 06:25:34 2017 +0200 +++ b/src/main/java/de/mpiwg/web/jsp/JSPProxy.java Mon Jul 03 23:43:44 2017 +0200 @@ -243,7 +243,15 @@ getSessionBean().getSearchPage().sortByStartPageUp(); } else if(StringUtils.equals(action, "sortByStartPageDown")){ getSessionBean().getSearchPage().sortByStartPageDown(); - } else if(StringUtils.equals(action, "sortBySourceUp")){ + } else if(StringUtils.equals(action, "sortByBookYearUp")){ + getSessionBean().getSearchPage().sortByBookYearUp(); + } else if(StringUtils.equals(action, "sortByBookYearDown")){ + getSessionBean().getSearchPage().sortByBookYearDown(); + } else if(StringUtils.equals(action, "sortByEditionYearUp")){ + getSessionBean().getSearchPage().sortByEditionYearUp(); + } else if(StringUtils.equals(action, "sortByEditionYearDown")){ + getSessionBean().getSearchPage().sortByEditionYearDown(); + } else if(StringUtils.equals(action, "sortBySourceUp")){ getSessionBean().getSearchPage().sortBySourceUp(); } else if(StringUtils.equals(action, "sortBySourceDown")){ getSessionBean().getSearchPage().sortBySourceDown();
--- a/src/main/java/de/mpiwg/web/jsp/SearchPage.java Wed Jun 21 06:25:34 2017 +0200 +++ b/src/main/java/de/mpiwg/web/jsp/SearchPage.java Mon Jul 03 23:43:44 2017 +0200 @@ -9,6 +9,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import de.mpiwg.web.search.*; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -17,19 +18,6 @@ import de.mpiwg.gazetteer.db.DBSection; import de.mpiwg.gazetteer.utils.DBService; import de.mpiwg.gazetteer.utils.DataProvider; -import de.mpiwg.web.search.SortSectionByAdminType; -import de.mpiwg.web.search.SortSectionByAuthor; -import de.mpiwg.web.search.SortSectionByBookId; -import de.mpiwg.web.search.SortSectionByBookName; -import de.mpiwg.web.search.SortSectionByDynasty; -import de.mpiwg.web.search.SortSectionByEdition; -import de.mpiwg.web.search.SortSectionById; -import de.mpiwg.web.search.SortSectionByLevel1; -import de.mpiwg.web.search.SortSectionByLevel2; -import de.mpiwg.web.search.SortSectionByPeriod; -import de.mpiwg.web.search.SortSectionByStartPage; -import de.mpiwg.web.search.SortSectionByVolume; -import de.mpiwg.web.search.SortSectionBySource; public class SearchPage extends AbstractJSPPage{ @@ -60,6 +48,8 @@ private String bookNameFilter = new String(); private String periodFilter = new String(); private String sectionNameFilter = new String(); + private String bookYearFilter = new String(); + private String editionYearFilter = new String(); private String sourceFilter = new String(); private DataPaginator paginator = new DataPaginator(); @@ -88,6 +78,8 @@ this.bookNameFilter = getParameter("bookNameFilter"); this.periodFilter = getParameter("periodFilter"); this.sectionNameFilter = getParameter("sectionNameFilter"); + this.bookYearFilter = getParameter("bookYearFilter"); + this.editionYearFilter = getParameter("editionYearFilter"); this.sourceFilter = getParameter("sourceFilter"); this.searchIn = getIntParameter("searchIn"); @@ -155,7 +147,9 @@ (StringUtils.isEmpty(bookNameFilter) || StringUtils.startsWith(section.getBook().getName(), bookNameFilter)) && (StringUtils.isEmpty(periodFilter) || StringUtils.startsWith(section.getBook().getPeriod(), periodFilter)) && (StringUtils.isEmpty(sectionNameFilter) || StringUtils.startsWith(section.getName(), sectionNameFilter)) && - (StringUtils.isEmpty(sourceFilter) || StringUtils.contains(section.getBook().getSource(), sourceFilter)) && + (StringUtils.isEmpty(bookYearFilter) || section.getBook().getBookYear() == Integer.parseInt(bookYearFilter)) && + (StringUtils.isEmpty(editionYearFilter) || section.getBook().getEditionYear() == Integer.parseInt(editionYearFilter)) && + (StringUtils.isEmpty(sourceFilter) || StringUtils.contains(section.getBook().getSource(), sourceFilter)) && (StringUtils.isEmpty(adminTypeFilter) || StringUtils.startsWith(section.getBook().getAdmin_type(), adminTypeFilter)) ){ this.filteredSectionList.add(section); @@ -533,6 +527,24 @@ this.periodFilter = periodFilter; } + public String getBookYearFilter() { + return bookYearFilter; + } + + + public void setBookYearFilter(String bookYearFilter) { + this.bookYearFilter = bookYearFilter; + } + + public String getEditionYearFilter() { + return editionYearFilter; + } + + + public void setEditionYearFilter(String editionYearFilter) { + this.editionYearFilter = editionYearFilter; + } + public String getSourceFilter() { return sourceFilter; } @@ -689,6 +701,28 @@ filter(); } + public void sortByBookYearUp(){ + Collections.sort(this.completeSectionList, new SortSectionByBookYear()); + filter(); + } + + public void sortByBookYearDown(){ + Collections.sort(this.completeSectionList, new SortSectionByBookYear()); + Collections.reverse(completeSectionList); + filter(); + } + + public void sortByEditionYearUp(){ + Collections.sort(this.completeSectionList, new SortSectionByEditionYear()); + filter(); + } + + public void sortByEditionYearDown(){ + Collections.sort(this.completeSectionList, new SortSectionByEditionYear()); + Collections.reverse(completeSectionList); + filter(); + } + public void sortBySourceUp(){ Collections.sort(this.completeSectionList, new SortSectionBySource()); filter(); @@ -701,4 +735,6 @@ } + + }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/mpiwg/web/search/SortSectionByBookYear.java Mon Jul 03 23:43:44 2017 +0200 @@ -0,0 +1,18 @@ +package de.mpiwg.web.search; + +import de.mpiwg.gazetteer.db.DBSection; + +import java.util.Comparator; + + +public class SortSectionByBookYear implements Comparator<DBSection>{ + + public int compare(DBSection o1, DBSection o2) { + + if(o1.getBook() == null || o2.getBook() == null){ + return o1.getName().compareTo(o2.getName()); + } + return o1.getBook().getBookYear().compareTo(o2.getBook().getBookYear()); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/mpiwg/web/search/SortSectionByEditionYear.java Mon Jul 03 23:43:44 2017 +0200 @@ -0,0 +1,18 @@ +package de.mpiwg.web.search; + +import de.mpiwg.gazetteer.db.DBSection; + +import java.util.Comparator; + + +public class SortSectionByEditionYear implements Comparator<DBSection>{ + + public int compare(DBSection o1, DBSection o2) { + + if(o1.getBook() == null || o2.getBook() == null){ + return o1.getName().compareTo(o2.getName()); + } + return o1.getBook().getEditionYear().compareTo(o2.getBook().getEditionYear()); + } + +}
--- a/src/main/webapp/pages/search.jsp Wed Jun 21 06:25:34 2017 +0200 +++ b/src/main/webapp/pages/search.jsp Mon Jul 03 23:43:44 2017 +0200 @@ -1,6 +1,7 @@ <%@page import="de.mpiwg.gazetteer.bo.LGBranch"%> <%@page import="de.mpiwg.gazetteer.bo.LGTopicSectionRelation"%> <%@page import="org.apache.commons.lang.StringUtils"%> +<%@page import="de.mpiwg.gazetteer.db.DBBook"%> <%@page import="de.mpiwg.gazetteer.db.DBSection"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> @@ -610,6 +611,70 @@ </tr> </table> </th> + + <th> + <table class="sortTable"> + <tr> + <td><label class="tableTitle">Book Year</label></td> + <td> + <table> + <tr><td> + <input type="image" + onclick="setAction('sortByBookYearUp', 'searchForm');" + src="<%=sessionBean.getApplicationBean().getUpImage()%>"/> + </td></tr> + <tr><td> + <input type="image" + onclick="setAction('sortByBookYearDown', 'searchForm');" + src="<%=sessionBean.getApplicationBean().getDownImage()%>"/> + </td></tr> + </table> + </td> + </tr> + <tr> + <td> + <input type="text" class="filterInput" name="bookYearFilter" id="bookYearFilter" value="<%= sessionBean.getSearchPage().getBookYearFilter()%>"/> + </td> + <td> + <input type="image" + onclick="setAction('filter', 'searchForm');" + src="<%=sessionBean.getApplicationBean().getFilterImage()%>"/> + </td> + </tr> + </table> + </th> + <th> + <table class="sortTable"> + <tr> + <td><label class="tableTitle">Edition Year</label></td> + <td> + <table> + <tr><td> + <input type="image" + onclick="setAction('sortByEditionYearUp', 'searchForm');" + src="<%=sessionBean.getApplicationBean().getUpImage()%>"/> + </td></tr> + <tr><td> + <input type="image" + onclick="setAction('sortByEditionYearDown', 'searchForm');" + src="<%=sessionBean.getApplicationBean().getDownImage()%>"/> + </td></tr> + </table> + </td> + </tr> + <tr> + <td> + <input type="text" class="filterInput" name="editionYearFilter" id="editionYearFilter" value="<%= sessionBean.getSearchPage().getEditionYearFilter()%>"/> + </td> + <td> + <input type="image" + onclick="setAction('filter', 'searchForm');" + src="<%=sessionBean.getApplicationBean().getFilterImage()%>"/> + </td> + </tr> + </table> + </th> + <th> <table class="sortTable"> <tr> @@ -708,25 +773,47 @@ <% long userId = sessionBean.getUser().getId(); - long userDefaultTopicId = sessionBean.getTopicListPage().getDefaultTopicId(userId); - String extractionInterfaceUrl = sessionBean.getApplicationBean().getExtractionInterfaceUrl(); + long userDefaultTopicId = sessionBean.getTopicListPage().getDefaultTopicId(userId); + String extractionInterfaceUrl = sessionBean.getApplicationBean().getExtractionInterfaceUrl(); + DBBook aBook; + String BookName; for (DBSection section : sessionBean.getSearchPage().getDisplaySectionList()) { + aBook = section.getBook(); %> <tr> <td> - <a href="<%=sessionBean.getApplicationBean().getTocInterfaceUrl()%>/check_sections_details.php?book_id=<%=section.getBook().getId() %>&count=100&sessionId=<%= session.getId()%>" target="blank"> - <%=section.getBook().getId()%> + <a href="<%=sessionBean.getApplicationBean().getTocInterfaceUrl()%>/check_sections_details.php?book_id=<%=section.getBookId() %>&count=100&sessionId=<%= session.getId()%>" target="blank"> + <%=section.getBookId()%> </a> <img title="More Information" src="<%=sessionBean.getApplicationBean().getMoreInfoImage()%>" data-section-id="<%=section.getId()%>" class="moreInfo"/> </td> - <td><%=section.getBook().getName()%></td> - <td><%=section.getBook().getLevel1()%></td> - <td><%=section.getBook().getLevel2()%></td> - <td><%=section.getBook().getDynasty()%></td> - <td><%=section.getBook().getPeriod()%></td> - <td><%=section.getBook().getAdmin_type() %></td> - <td><%=section.getBook().getSource() %></td> + <%if(aBook == null){ + BookName = ""; + %> + + <td></td> + <td></td> + <td></td> + <td></td> + <td></td> + <td></td> + <td></td> + <td></td> + <td></td> + <%} else { + BookName = aBook.getName();%> + <td><%=BookName%></td> + <td><%=aBook.getLevel1()%></td> + <td><%=aBook.getLevel2()%></td> + <td><%=aBook.getDynasty()%></td> + <td><%=aBook.getPeriod()%></td> + <td><%=aBook.getAdmin_type() %></td> + <td><%=aBook.getBookYear() %></td> + <td><%=aBook.getEditionYear() %></td> + <td><%=aBook.getSource() %></td> + <%}%> + <td><%=section.getName()%></td> <td><%=section.getPages()%></td> @@ -735,7 +822,7 @@ <td> <a href="#" title="Show Section in Extraction Interface" - onclick="sectionInExtractionInterface('<%=section.getId() %>', '<%=section.getName() %>', '<%=section.getBook().getId() %>', '<%=section.getBook().getName() %>', '<%=userDefaultTopicId %>', '<%=userId %>','<%=extractionInterfaceUrl%>');"> + onclick="sectionInExtractionInterface('<%=section.getId() %>', '<%=section.getName() %>', '<%=section.getBookId() %>', '<%=BookName %>', '<%=userDefaultTopicId %>', '<%=userId %>','<%=extractionInterfaceUrl%>');"> <img title="Show Section in Extraction Interface" src="<%=sessionBean.getApplicationBean().getShowImage()%>"> </a>