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,10 +93,12 @@ public class SciMemberList extends AbstractComponent {
final StringBuffer whereBuffer = new StringBuffer();
final int page;
final int offset;
final String surnameFilter;
try {
// final String surnameFilter = request.getParameter("surname");
final String surnameFilter = Globalization.decodeParameter(request,
// final String
surnameFilter = Globalization.decodeParameter(request,
"surname");
if (surnameFilter != null && !surnameFilter.trim().isEmpty()) {
@ -161,6 +163,30 @@ public class SciMemberList extends AbstractComponent {
paginatorElem.addAttribute("offset", Integer.toString(offset));
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()) {
generateResultEntry(mainQueryResult, listElem);

View File

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

View File

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