BugFixes for the native SQL lists. The filters were not progagated to next/previous pages when using the links in the paginator.

git-svn-id: https://svn.libreccm.org/ccm/trunk@5111 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2017-11-10 17:40:55 +00:00
parent 581be75360
commit f7fa20556e
3 changed files with 147 additions and 19 deletions

View File

@ -93,11 +93,13 @@ public class SciMemberList extends AbstractComponent {
final StringBuffer whereBuffer = new StringBuffer(); final StringBuffer whereBuffer = new StringBuffer();
final int page; final int page;
final int offset; final int offset;
final String surnameFilter;
try { try {
// final String surnameFilter = request.getParameter("surname"); // final String surnameFilter = request.getParameter("surname");
final String surnameFilter = Globalization.decodeParameter(request, // final String
"surname"); surnameFilter = Globalization.decodeParameter(request,
"surname");
if (surnameFilter != null && !surnameFilter.trim().isEmpty()) { if (surnameFilter != null && !surnameFilter.trim().isEmpty()) {
whereBuffer whereBuffer
@ -161,6 +163,30 @@ public class SciMemberList extends AbstractComponent {
paginatorElem.addAttribute("offset", Integer.toString(offset)); paginatorElem.addAttribute("offset", Integer.toString(offset));
paginatorElem.addAttribute("limit", Integer.toString(limit)); paginatorElem.addAttribute("limit", Integer.toString(limit));
if (page < maxPages) {
final StringBuffer linkBuffer = new StringBuffer("?page=");
linkBuffer.append(page + 1);
if (surnameFilter != null) {
linkBuffer.append("&surnameFilter=");
linkBuffer.append(surnameFilter);
}
paginatorElem.addAttribute("nextPageLink",
linkBuffer.toString());
}
if (page > 1) {
final StringBuffer linkBuffer = new StringBuffer("?page=");
linkBuffer.append(page - 1);
if (surnameFilter != null) {
linkBuffer.append("&surnameFilter=");
linkBuffer.append(surnameFilter);
}
paginatorElem.addAttribute("prevPageLink",
linkBuffer.toString());
}
while (mainQueryResult.next()) { while (mainQueryResult.next()) {
generateResultEntry(mainQueryResult, listElem); generateResultEntry(mainQueryResult, listElem);

View File

@ -99,22 +99,24 @@ public class SciProjectList extends AbstractComponent {
final StringBuffer whereBuffer = new StringBuffer(); final StringBuffer whereBuffer = new StringBuffer();
final int page; final int page;
final int offset; final int offset;
final String titleFilter;
final BigDecimal researchFieldFilter;
try { try {
// final String titleFilter = request.getParameter("title"); // final String titleFilter = request.getParameter("title");
final String titleFilter = Globalization.decodeParameter(request, titleFilter = Globalization.decodeParameter(request,
"title"); "title");
final BigDecimal categoryFilter; // final BigDecimal categoryFilter;
if (request.getParameter("category") == null) { if (request.getParameter("researchfield") == null) {
categoryFilter = null; researchFieldFilter = null;
} else if (request.getParameter("category").matches("\\d*")) { } else if (request.getParameter("researchfield").matches("\\d*")) {
categoryFilter researchFieldFilter
= new BigDecimal(request.getParameter("category")); = new BigDecimal(request.getParameter("researchfield"));
} else { } else {
categoryFilter = null; researchFieldFilter = null;
} }
if (titleFilter != null && !titleFilter.trim().isEmpty() if (titleFilter != null && !titleFilter.trim().isEmpty()
|| categoryFilter != null) { || researchFieldFilter != null) {
whereBuffer.append(" AND "); whereBuffer.append(" AND ");
} }
@ -127,7 +129,7 @@ public class SciProjectList extends AbstractComponent {
.newChildElement("title"); .newChildElement("title");
titleFilterElem.setText(titleFilter); titleFilterElem.setText(titleFilter);
} }
if (categoryFilter != null) { if (researchFieldFilter != null) {
if (titleFilter != null && !titleFilter.trim().isEmpty()) { if (titleFilter != null && !titleFilter.trim().isEmpty()) {
whereBuffer.append(" AND "); whereBuffer.append(" AND ");
} }
@ -135,8 +137,12 @@ public class SciProjectList extends AbstractComponent {
whereBuffer.append("parent_id IN (SELECT object_id " whereBuffer.append("parent_id IN (SELECT object_id "
+ "FROM cat_object_category_map " + "FROM cat_object_category_map "
+ "WHERE category_id = ") + "WHERE category_id = ")
.append(categoryFilter.toString()) .append(researchFieldFilter.toString())
.append(") "); .append(") ");
final Element researchFieldFilterElem = filtersElem
.newChildElement("researchfield");
researchFieldFilterElem.setText(researchFieldFilter.toString());
} }
final String orderBy final String orderBy
@ -197,6 +203,40 @@ public class SciProjectList extends AbstractComponent {
paginatorElem.addAttribute("offset", Integer.toString(offset)); paginatorElem.addAttribute("offset", Integer.toString(offset));
paginatorElem.addAttribute("limit", Integer.toString(limit)); paginatorElem.addAttribute("limit", Integer.toString(limit));
if (page < maxPages) {
final StringBuffer linkBuffer = new StringBuffer("?page=");
linkBuffer.append(page + 1);
if (titleFilter != null) {
linkBuffer
.append("&title=")
.append(titleFilter);
}
if (researchFieldFilter != null) {
linkBuffer
.append("researchfield=")
.append(researchFieldFilter.toString());
}
paginatorElem
.addAttribute("nextPageLink", linkBuffer.toString());
}
if (page > 1) {
final StringBuffer linkBuffer = new StringBuffer("?page=");
linkBuffer.append(page - 1);
if (titleFilter != null) {
linkBuffer
.append("&title=")
.append(titleFilter);
}
if (researchFieldFilter != null) {
linkBuffer
.append("researchfield=")
.append(researchFieldFilter.toString());
}
paginatorElem
.addAttribute("prevPageLink", linkBuffer.toString());
}
while (mainQueryResult.next()) { while (mainQueryResult.next()) {
generateResultEntry(mainQueryResult, listElem); generateResultEntry(mainQueryResult, listElem);

View File

@ -299,11 +299,16 @@ public class PublicationList extends AbstractComponent {
final StringBuffer whereBuffer = new StringBuffer(); final StringBuffer whereBuffer = new StringBuffer();
final int page; final int page;
final int offset; final int offset;
final String titleFilter;
final Integer yearFilter;
final String authorsFilter;
final String orderByParam;
try { try {
final String titleFilter = Globalization.decodeParameter(request, // final String
"title"); titleFilter = Globalization.decodeParameter(request,
"title");
// final String titleFilter = request.getParameter("title"); // final String titleFilter = request.getParameter("title");
final Integer yearFilter; // final Integer yearFilter;
if (request.getParameter("yearOfPublication") == null) { if (request.getParameter("yearOfPublication") == null) {
yearFilter = null; yearFilter = null;
} else if (request.getParameter("yearOfPublication").matches("\\d*")) { } else if (request.getParameter("yearOfPublication").matches("\\d*")) {
@ -312,7 +317,8 @@ public class PublicationList extends AbstractComponent {
} else { } else {
yearFilter = null; yearFilter = null;
} }
final String authorsFilter = request.getParameter("authorsStr"); // final String
authorsFilter = request.getParameter("authorsStr");
if ((titleFilter != null && !titleFilter.trim().isEmpty()) if ((titleFilter != null && !titleFilter.trim().isEmpty())
|| yearFilter != null || yearFilter != null
|| (authorsFilter != null && !authorsFilter.trim().isEmpty())) { || (authorsFilter != null && !authorsFilter.trim().isEmpty())) {
@ -351,7 +357,7 @@ public class PublicationList extends AbstractComponent {
authorsFilterElem.setText(authorsFilter); authorsFilterElem.setText(authorsFilter);
} }
final String orderByParam; // final String orderByParam
if (request.getParameter("sort") == null) { if (request.getParameter("sort") == null) {
orderByParam = "yearDesc"; orderByParam = "yearDesc";
} else { } else {
@ -457,6 +463,62 @@ public class PublicationList extends AbstractComponent {
paginatorElem.addAttribute("offset", Integer.toString(offset)); paginatorElem.addAttribute("offset", Integer.toString(offset));
paginatorElem.addAttribute("limit", Integer.toString(limit)); paginatorElem.addAttribute("limit", Integer.toString(limit));
if (page < maxPages) {
final StringBuffer nextPageLinkBuffer = new StringBuffer(
"?page=");
nextPageLinkBuffer.append(page + 1);
if (authorsFilter != null) {
nextPageLinkBuffer
.append("&authorsStr=")
.append(authorsFilter);
}
if (yearFilter != null) {
nextPageLinkBuffer
.append("&yearOfPublication=")
.append(yearFilter);
}
if (titleFilter != null) {
nextPageLinkBuffer
.append("&title=")
.append(titleFilter);
}
if (orderByParam != null) {
nextPageLinkBuffer
.append("&sort=")
.append(orderByParam);
}
paginatorElem.addAttribute("nextPageLink",
nextPageLinkBuffer.toString());
}
if (page > 1) {
final StringBuffer prevPageLinkBuffer = new StringBuffer(
"?page=");
prevPageLinkBuffer.append(page - 1);
if (authorsFilter != null) {
prevPageLinkBuffer
.append("&authorsStr=")
.append(authorsFilter);
}
if (yearFilter != null) {
prevPageLinkBuffer
.append("&yearOfPublication=")
.append(yearFilter);
}
if (titleFilter != null) {
prevPageLinkBuffer
.append("&title=")
.append(titleFilter);
}
if (orderByParam != null) {
prevPageLinkBuffer
.append("&sort=")
.append(orderByParam);
}
paginatorElem.addAttribute("prevPageLink",
prevPageLinkBuffer.toString());
}
while (mainQueryResult.next()) { while (mainQueryResult.next()) {
generateResultEntry(mainQueryResult, listElem); generateResultEntry(mainQueryResult, listElem);