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() %>&amp;count=100&amp;sessionId=<%= session.getId()%>" target="blank">
-											<%=section.getBook().getId()%>
+										<a href="<%=sessionBean.getApplicationBean().getTocInterfaceUrl()%>/check_sections_details.php?book_id=<%=section.getBookId() %>&amp;count=100&amp;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>